请教串行传送的奇偶校验问题

[复制链接]
2731|3
 楼主| zjgtan 发表于 2009-12-2 10:32 | 显示全部楼层 |阅读模式
MOV A , @R0;取一个数据;

MOV
C,
P;
奇校验

CPL C;


MOV
TB8, C;
装入校验位;

MOV
SBUF, A;
发送;
代码如上,为啥可以进行奇校验啊?
jerkoh 发表于 2009-12-2 11:23 | 显示全部楼层
MOV A , @R0;取一个数据;  前提是SMOD 设置了9位

MOV C,P; 奇校验          偶校验不取反

CPL C;


MOV TB8, C; 装入校验位;  ;TB8 第九位 奇偶位的值

MOV SBUF, A; 发送;         ;此时就是8bit 加1bit 的值 装载好了
代码如上,为啥可以进行奇校验啊?     因为51就是这么规定可以发送奇偶校验的

评分

参与人数 1威望 +1 收起 理由
zjgtan + 1

查看全部评分

 楼主| zjgtan 发表于 2009-12-2 11:58 | 显示全部楼层
高手啊 2# jerkoh
xwj 发表于 2009-12-2 12:39 | 显示全部楼层
因为51的内核每次会自动把放入ACC中的数据计算出偶检验,并把结果放入寄存器P中,
所以先把数据放入ACC中,然后取出P,再去翻,就得到奇检验结果了,再放入TB8中,和ACC一起发送出去,就是8位数据+1位奇检验了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

92

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部