标题: 单片机串口如何接收数据,找的例程看不懂 [打印本页]

作者: PDDDF    时间: 2019-11-19 15:49
标题: 单片机串口如何接收数据,找的例程看不懂
void ReceiveData()
{
  while(RI==0);
  RI=0;
  state=SBUF;
  ACC=state;
  if(RB8==P)     //这句判断看不懂
     data_true=1;
  else
     data_true=0;
}


作者: diego2003    时间: 2019-11-19 18:51
PSW.0(P):奇偶校验位
RB8 为接收到的第9位    这个意思是串口做了奇偶校验
作者: jscsd226    时间: 2019-11-19 19:02
您好,这是单片机串口通信的奇偶校验。
偶校验:就是发送的8个数据位的1的个数为偶数时,TB8=0;为奇数时,TB8=1;
奇校验:与偶校验相反的TB8。 先讲发送字节时的偶校验:
先看下汇编的解决方案是什么: MOV A,@R0 MOV C,P MOV TB8,C MOV SBUF,@R0
再看下C语言的解决方案:
void chk_even(uchar dat)//要发送的数据位dat { ACC=dat; TB8=P; SBUF=dat; while(TI==0); TI=0;

}
这只是发送的一个字节的偶校验 ,接收时的为RB8位,应该能看懂,要是还是感觉吃力的话,就继续查资料。
作者: hange_v    时间: 2019-11-19 19:06
等待接收数据;
作者: hange_v    时间: 2019-11-19 19:07
等待接收数据;
清接收到数据标志;
读取接收的数据;  //这就是前三行的注释




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1