資源簡介
需要兩個CC2530模塊,一個是接收紅外波形后解碼發送端,另一個是接收顯示端(串口顯示)。對于NEC紅外協議遙控器解碼。

代碼片段和文件信息
#include?“ioCC2530.h“
#include?
#include?
#define?LED?P2_0
#define?RDATA?P1_3????????//紅外接收口
#define?REMOTE_ID?0?
#define?FLAG???(1<<3)
#define?u32?unsigned?long
#define?u8??unsigned?char
u32?Remote_Odr=0;?? ?//命令暫存處
u8??Remote_Cnt=0;????????//按鍵次數此次按下鍵的次數
u8??Remote_Rdy=0;????????//紅外接收到數據???
u8?res=0;????????????????//中斷變量
u8?OK=0;?
u8?RODATA=0;??
unsigned?int?key[4];
u8?bufer[7];
char?rf_rx_buf[128];
char?serial_rxbuf[128];
char?rfbbf[128];
int??serial_rxpos?=?0;
int??serial_rxlen?=?0;
char?is_serial_receive?=?0;
void?uart0_init();
void?uart0_sendbuf(char?*pbuf??int?len);
void?uart0_flush_rxbuf();
void?timer1_init();
void?timer1_disbale();
void?timer1_enable();
u8?zh(u8?*g??u8??*d);
/*@@@@@@@@@@@??add??@@@@@@@@@@@@@@@@*/
void?InitKey();
void?rf_send(?char?*pbuf??int?len);
void?rf_receive_isr();
void?uart0_init()
{
??CLKCONCMD?&=?~0x40;??????????????????????????//設置系統時鐘源為32MHZ晶振
??while(CLKCONSTA?&?0x40);?????????????????????//等待晶振穩定
??CLKCONCMD?&=?~0x47;?
??PERCFG?=?0x00;
??P0SEL?|=?0x0C;
??U0CSR?|=?0xC0;
??U0GCR?|=?11;
??U0BAUD?=?216;???????????????//?115200
??UTX0IF?=?1;
??
??URX0IE?=?1;
}
void?uart0_flush_rxbuf()
{
??serial_rxpos?=?0;
??serial_rxlen?=?0;
??memset(bufer07);
}
void?timer1_init()
{
??T1CTL?=?0x0C;
??T1CCTL0?=?0x44;
??T1STAT?=?0x00;
??T1IE?=?1;
??T1CC0L?=?250;
??T1CC0H?=?0;?
}
void?timer1_disbale()
{
??T1CTL?&=?~(?1<1);
}
void?timer1_enable()
{
??T1CTL?|=?(?1?<1?);
??T1STAT?=?0x00;
??T1CNTH?=?0;
??T1CNTL?=?0;
}
void?rf_init()
{
??FRMFILT0??=?0x0C;
??TXPOWER???=?0xD5;
??FREQCTRL??=?0x0B;
??
??CCACTRL0??=?0xF8;
??FSCAL1?=????0x00;?????????????????
??TXFILTCFG?=?0x09;
??AGCCTRL1?=??0x15;
??AGCCTRL2?=??0xFE;???????
??TXFILTCFG?=?0x09;?????????????????
??
??RFIRQM0?|=?(1<<6);
??IEN2?|=?(1<<0);
??RFST?=?0xED;
??RFST?=?0xE3;
}
void?rf_send(?char?*pbuf??int?len)
{
??RFST?=?0xE3;???????????????????
??while(?FSMSTAT1?&?((?1<<1?)?|?(?1<<5?)));?
??
??RFIRQM0?&=?~(1<<6);?
??IEN2?&=?~(1<<0);
??RFST?=?0xEE;
??RFIRQF1?=?~(1<<1);
??RFD?=?len?+?2;????????
??for?(int?i?=?0;?i???{
????RFD?=?*pbuf++;
??}
??RFST?=?0xE9;
??while?(!(RFIRQF1?&?(1<<1)));
??RFIRQF1?=?~(1<<1);
??
??RFIRQM0?|=?(1<<6);
??IEN2?|=?(1<<0);?
}
void?rf_receive_isr()
{
??int?rf_rx_len?=?0;
??int?rssi?=?0;
??char?crc_ok?=?0;
??
??rf_rx_len?=?RFD?-?2;
??rf_rx_len?&=?0x7F;
??for?(int?i?=?0;?i???{
????rf_rx_buf[i]?=?RFD;
??}
??rssi?=?RFD?-?73;
??crc_ok?=?RFD;?
??RFST?=?0xED;
??if(?crc_ok?&?0x80?)
??{
????if(rf_rx_buf[0]?==?‘L‘)
????{
??????uart0_sendbuf(?rf_rx_buf??rf_rx_len-1);
??????printf(“[%d]“rssi);
????}
????else
????{
????}
??}
??else
??{
????printf(“\r\nCRC?Error\r\n“);
??}
}
void?main(void)
{
??P2DIR?|=?0x01;??????????????????????????????//?P2.0?
??LED?=?1;
??EA?=?0;
??
??InitKey();
??uart0_init();??????????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????57??2013-07-28?11:09??紅外解碼無線發送\.hg\00changelog.i
?????文件?????????92??2013-08-10?09:03??紅外解碼無線發送\.hg\cache\branchheads
?????文件?????????92??2013-07-31?21:45??紅外解碼無線發送\.hg\cache\branchheads-served
?????文件?????????44??2013-07-31?21:45??紅外解碼無線發送\.hg\cache\tags
?????文件?????????16??2013-08-10?09:06??紅外解碼無線發送\.hg\cur-message.txt
?????文件????????190??2013-07-31?21:45??紅外解碼無線發送\.hg\dirstate
?????文件????????116??2013-07-31?21:45??紅外解碼無線發送\.hg\last-message.txt
?????文件?????????33??2013-07-28?11:09??紅外解碼無線發送\.hg\requires
?????文件???????1023??2013-07-31?21:45??紅外解碼無線發送\.hg\store\00changelog.i
?????文件????????659??2013-07-31?21:45??紅外解碼無線發送\.hg\store\00manifest.i
?????文件???????6171??2013-07-31?21:45??紅外解碼無線發送\.hg\store\data\main.c.i
?????文件???????2097??2013-07-28?11:10??紅外解碼無線發送\.hg\store\data\_t_r_x.ewd.i
?????文件???????3563??2013-07-28?11:11??紅外解碼無線發送\.hg\store\data\_t_r_x.ewp.i
?????文件????????193??2013-07-28?11:11??紅外解碼無線發送\.hg\store\data\_t_r_x.eww.i
?????文件?????????64??2013-07-28?11:10??紅外解碼無線發送\.hg\store\data\~2ehgignore.i
?????文件????????265??2013-07-28?11:11??紅外解碼無線發送\.hg\store\data\~c7~e5~b3~fd~b9~a4~b3~cc.bat.i
?????文件?????????96??2013-07-28?11:11??紅外解碼無線發送\.hg\store\fncache
?????文件?????????43??2013-07-28?11:11??紅外解碼無線發送\.hg\store\phaseroots
?????文件?????????57??2013-07-31?21:45??紅外解碼無線發送\.hg\store\undo
?????文件?????????43??2013-07-31?21:45??紅外解碼無線發送\.hg\store\undo.phaseroots
?????文件??????????2??2013-08-10?17:32??紅外解碼無線發送\.hg\thgstatus
?????文件??????????0??2013-07-31?21:45??紅外解碼無線發送\.hg\undo.bookmarks
?????文件??????????7??2013-07-31?21:45??紅外解碼無線發送\.hg\undo.branch
?????文件??????????9??2013-07-31?21:45??紅外解碼無線發送\.hg\undo.desc
?????文件????????190??2013-07-31?21:45??紅外解碼無線發送\.hg\undo.dirstate
?????文件??????????0??2013-07-28?11:09??紅外解碼無線發送\.hgignore
?????文件?????107497??2014-01-17?15:45??紅外解碼無線發送\Debug\Exe\TRX.d51
?????文件??????51995??2014-01-17?15:45??紅外解碼無線發送\Debug\Obj\main.r51
?????文件????????146??2014-01-17?15:45??紅外解碼無線發送\Debug\Obj\TRX.pbd
?????文件???????6876??2014-01-17?15:45??紅外解碼無線發送\main.c
............此處省略22個文件信息
- 上一篇:基于VHDL的卷積碼編解碼器的設計
- 下一篇:基于神經網絡的印刷體字母數字識別
評論
共有 條評論