|
|
- /************************************
- UART串口中斷
- ************************************/
- void UART_Interrupt (void) interrupt 4
- {
- if(RI) //接收字節(jié)
- {
- RI = 0;
- if(datebuf_i<sizeof(DateBuf)) //DateBuf是用來存儲(chǔ)接收到的信息的數(shù)組。長度可隨協(xié)議手動(dòng)更改
- {
- DateBuf[ datebuf_i++ ] =SBUF; //將接收緩沖區(qū)的信息按位寫入到數(shù)組中
- }
-
- DelayXs(2);
- }
- if(TI)
- {
- TI = 0;
- }
- }
復(fù)制代碼 這是中斷接收部分的代碼。已經(jīng)確定和排除的是波特率沒有問題。硬件系統(tǒng)沒有問題。
- unsigned char Date_TF(unsigned char * buf)
- {
- int a;
- u8 a1;
- u8 b;
- u8 i=0 ;
- u8 date_tf;
- if(buf[0] ==0xff)
- {
- if(buf[1] == 0x01)
- {
- if(buf[2] == 0x00)
- {
-
- if(buf[3] == 0x00)
- {
- if(buf[4] == 0x00)
- {
- if(buf[5] == 0x00)
- {
- if(buf[6] == 0x00)
- {
- relay_zheng();
- }
- }
- }
- }
- }
-
- // b = buf[6];
- //
- // for( i=1;i<5;i++ )
- // {
- // a1=buf[i];
- // a +=a1;
- // }
- // if(a == b)
- // {
- // tf = 1;
- // relay_stop();//測(cè)試
- // }
- }
- }
- return date_tf;
- }
復(fù)制代碼 這是發(fā)現(xiàn)問題后一步步檢測(cè)出來的接收到的信息。只有前兩個(gè)是正確的。后面的都是錯(cuò)誤的。
另外,再中斷接收函數(shù)中,必須放延時(shí)函數(shù),要不然就什么都接收不到?
|
|