单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:5940|回复:3
打印上一主题下一主题

单片机通信 要带校验位的

[复制链接]
沙发
ID:69679发表于 2015-6-11 14:31|只看该作者
大神们 ,给个程序看看呗,我学习一下,
板凳
ID:69679发表于 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;
}



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

评分

黑币 +35
收起理由
+ 35
回帖助人的奖励!

查看全部评分

地板
ID:1034262发表于 2023-8-22 22:35|只看该作者
强烈建议使用MODBUS协议,世界通用。

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网