标题: 单片机通信 要带校验位的 [打印本页]

作者: 海哥沧海一笑    时间: 2015-6-11 09:17
标题: 单片机通信 要带校验位的
rs232通信,要有校验位,数据位,命令位,帧头帧尾,给个例程谢谢!
自己以前写过不带校验位的,但有时候通信错误 ,所以要一个带校验位的。

作者: 海哥沧海一笑    时间: 2015-6-11 14:31
大神们 ,给个程序看看呗,我学习一下,
作者: 海哥沧海一笑    时间: 2015-6-11 18:30
在通信中要求单字节偶校验,很少碰到在这里校验的,一般都是帧校验就可以了,但是为了提高精度,就加了偶校验。那么用C语言怎么来处理单片机收发的偶校验问题呢?直接使用项目中的要求:波特率:9600,偶检验,停止位1,数据位 51单片机奇偶校验C51程序  采用偶校验,单片机串口方式3,9位数据,最后一位是奇偶校验位。  偶校验:就是发送的8位数据中1的个数为偶数时,TB8=0;为奇数时,TB8=1; 奇校验:就是发送的8位数据中1的个数为奇数时,TB8=0;为偶数时,TB8=1; 由于PSW(程序状态寄存器)中的P可以表达累加器A中“1”的个数的奇偶性,具体如下: P(PSW.0)奇偶标志位:  P=1,A中“1”的个数为奇数 P=0,A中“1”的个数为偶数  所以要用P和TB8、RB8作为发送与接收的判据,则必须使用偶校验。 C语言程序如下:
发送程序  
Void chek_even(uchar data)
{
  ACC=data;
TB8=P;
SBUF=data;
While(!TI);
TI=0;
}
接收程序
Void chek_even(uchar data)
{
  While(!RI);
RI=0;  
data= SBUF;
ACC=data;
  If(RB8==P)chek_flag=0;
Else chek_flag=1;
}



网上找的, 这两个函数怎么用

作者: coody_sz    时间: 2023-8-22 22:35
强烈建议使用MODBUS协议,世界通用。




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