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

51单片机中C语言奇偶校验位如何设置?,第1张

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

#include

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

}

}

#include "stdio.h"

int main(void){ 

char s[100],ns[100] 

int i,j 

printf("Please intput a string...\ns=")

gets(s) 

for(j=i=0ns[j]=s[i]i++)     

if(s[i]<'0' ||s[i]>'9')         

j++ 

puts(ns)

return 0

}

扩展资料:

ascall码第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;

通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;

第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。

参考资料:

百度百科-ascall码

MOV A,#待发数据 数据进了A,即刻生成校验位P

MOV C,P

MOV TB8, C 校验位送到TB8

MOV SBUF, A 发送数据,以及P

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

MOV C,P

CPL C

MOV TB8, C 校验位送到TB8


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11063037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存