51单片机中C语言奇偶校验位如何设置

在写串口通信时,如果要设置奇偶校验,那么该如何设置TB8呢,就知道在汇编中是:movC,PmovTB8,C那么在C中如何设置呢,请高手帮忙... 在写串口通信时,如果要设置奇偶校验,那么该如何设置TB8呢,就知道在汇编中是:mov C,P mov TB8,C
那么在C中如何设置呢,请高手帮忙
展开
 我来答
大别山的蜗牛
高粉答主

2016-01-28 · 一只互联网搬运的蜗牛
大别山的蜗牛
采纳数:6928 获赞数:12024

向TA提问 私信TA
展开全部
MOV A, #待发数据 ;数据进了A,即刻生成校验位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P

上述写法,是偶校验。奇校验,需要增加一条取反指令,如下:

MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8
zhxiufan
2015-08-30 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38383
国家科技进步奖

向TA提问 私信TA
展开全部
51单片机中,只要将一个值传送给累加器,这个数的奇偶校验值就会影响P。一般而言,在串行通讯中为确保传输数的准确,用到校验位的情况比较多。以下是程序代码:

#include<reg51.h>

main()
{
char dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0xd0;
while(1)
{
dat++;
ACC=dat;
TB8=P; //校验位送第九数据位TB8
SBUF=ACC;
while(TI==0);
TI=0;
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

推荐于2017-09-30 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
关键就下面两句:

ACC = ch;
TB8 = P;

写在C程序中即可。

然后即可发送了:

SBUF = ch;

完。
追问
为什么我发送的数据跟接收的数据会不一样呢,比如我发送0x10,接收到的是0xB0呢,为什么不治0x10 呢,请帮忙
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式