欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 2051單片機+485通訊+PELCO-D協議 數據傳輸殘缺 [打印本頁]

作者: 飲酒作樂    時間: 2020-5-9 14:34
標題: 2051單片機+485通訊+PELCO-D協議 數據傳輸殘缺
  1. /************************************
  2.                         UART串口中斷
  3. ************************************/
  4. void UART_Interrupt (void) interrupt  4
  5. {
  6.         if(RI)  //接收字節
  7.         {
  8.                 RI = 0;
  9.                 if(datebuf_i<sizeof(DateBuf))  //DateBuf是用來存儲接收到的信息的數組。長度可隨協議手動更改
  10.                 {
  11.                         DateBuf[ datebuf_i++ ] =SBUF; //將接收緩沖區的信息按位寫入到數組中
  12.                 }
  13.                

  14.                 DelayXs(2);
  15.         }
  16.         if(TI)
  17.         {

  18.                 TI = 0;
  19.         }

  20. }
復制代碼
這是中斷接收部分的代碼。已經確定和排除的是波特率沒有問題。硬件系統沒有問題。
  1. unsigned char  Date_TF(unsigned char * buf)
  2. {
  3.         int a;
  4.         u8 a1;
  5.         u8 b;
  6.         u8 i=0 ;
  7.         u8 date_tf;
  8.         if(buf[0] ==0xff)
  9.         {
  10.                 if(buf[1] == 0x01)
  11.                 {
  12.                         if(buf[2] == 0x00)
  13.                         {
  14.                                 
  15.                                 if(buf[3] == 0x00)
  16.                                 {
  17.                                         if(buf[4] == 0x00)
  18.                                         {
  19.                                                 if(buf[5] == 0x00)
  20.                                                 {
  21.                                                         if(buf[6] == 0x00)
  22.                                                         {
  23.                                                                 relay_zheng();
  24.                                                         }                                                        
  25.                                                 }                                       
  26.                                         }
  27.                                 }
  28.                         }
  29.                         
  30. //                        b = buf[6];
  31. //                        
  32. //                        for( i=1;i<5;i++ )
  33. //                        {
  34. //                                a1=buf[i];
  35. //                                a +=a1;
  36. //                        }               
  37. //                        if(a == b)
  38. //                        {        
  39. //                                tf = 1;
  40. //                                relay_stop();//測試
  41. //                        }
  42.                 }
  43.         }
  44.         return date_tf;
  45. }
復制代碼
這是發現問題后一步步檢測出來的接收到的信息。只有前兩個是正確的。后面的都是錯誤的。
另外,再中斷接收函數中,必須放延時函數,要不然就什么都接收不到?






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1