找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5735|回复: 3
打印 上一主题 下一主题
收起左侧

单片机通信 要带校验位的

[复制链接]
跳转到指定楼层
楼主
ID:69679 发表于 2015-6-11 09:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
30黑币
rs232通信,要有校验位,数据位,命令位,帧头帧尾,给个例程谢谢!
自己以前写过不带校验位的,但有时候通信错误 ,所以要一个带校验位的。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
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;
}



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

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

快速回复 返回顶部 返回列表