標題: 單片機串行通信奇校驗驗代碼怎么寫,我的老是出錯 [打印本頁]

作者: YUKIAd0w    時間: 2023-5-10 23:48
標題: 單片機串行通信奇校驗驗代碼怎么寫,我的老是出錯
單片機源程序如下:
  1. #include <reg51.h>

  2. void main()
  3. {
  4.         SCON=0xd0;
  5.         PCON=0x80;
  6.         
  7.         TH1=0xFD;
  8.         TL1=0xFD;
  9.         
  10.         TR1=1;
  11.         ES=1;
  12.         EA=1;
  13.         
  14.         
  15.         TMOD=0x20;
  16.         
  17.         
  18.          
  19.         P2=0xff;
  20.         
  21.         
  22.         
  23.         while(1)
  24.         {
  25.         SBUF=P2;
  26.                 while(!TI);
  27.                 TI=0;
  28.                 while(!RI);
  29.                 RI=0;
  30.                 P0=SBUF;
  31.         }
  32.         

  33. } void server() interrupt 4
  34. {
  35.         
  36.                
  37.         }
復(fù)制代碼



求助大佬,奇校驗代碼怎么寫,我的老是出錯

作者: yzwzfyz    時間: 2023-5-11 15:12
1、將串行數(shù)據(jù)做成9位數(shù)據(jù)傳輸。
2、發(fā)送數(shù)據(jù)時將數(shù)據(jù)中的奇偶性,放入第9位中(TB8),再發(fā)送。
3、接收時,下載數(shù)據(jù)后,將第9位(RB9)與下載的數(shù)據(jù)中的奇偶性做比較,便可識別。
作者: Hephaestus    時間: 2023-5-11 15:38
先隨便定義一個變量 char ch;

這一句SBUF=P2;改成如下:
ch=P2;
TB8=!P;
SBUF=ch;

接收也做類似處理
ch=SBUF;
if(RB8!=P){ /**** odd parity success ****/
}




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