您的位置 首页 IC

51单片机串行通讯奇偶校验的设置办法

通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。有时为了提高准确度,需要增加一个奇校验位或者偶校验位。对于高级

一般,串行通讯的一帧的格局是8-n-1,即8位数据、无校验、1个中止位。

有时为了进步准确度,需求添加一个“奇”校验位或许“偶”校验位。
关于高档言语的做法是很简单的,只要把格局指令“8-n-1”,改为“8-P-1”或“8-O-1”即可。

串行口在带有校验位的通讯方法中,是先发送8位数据,然后再发送校验位。

51单片机也能够依照带有校验位的方法进行串行通讯,这在51单片机中称为9位数据方法。
51单片机中有两个位,别离称为TB8和RB8,它们在“无校验”的时分,并没有用途。
当51单片机用9位数据方法进行串行通讯的时分,TB8和RB8的效果如下:
51单片机在发送的时分,先发送8位数据,然后发送TB8中的内容;
51单片机在接纳的时分,先接纳8位数据,然后接纳校验位,存到RB8中。

编写51单片机程序的时分,应该在发送数据之前,在TB8中,写好待发送的校验位。

8位数据的校验位,能够使用单片机中奇偶标志位P来主动生成,程序如下。

MOV A, #待发数据 ;数据进了A,立刻生成奇偶标志位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P

由于P = 1则阐明A中有奇数个1,所以上述程序是“偶”校验的方法。
假如要求的是“奇”校验,则需求添加一条取反指令,如下:

MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8

接纳方会把收到的8位数送到SBUF,第9位数,送到RB8,然后主动建立RI = 1。
之后,就能够用RB8中的内容,对方才收到的8位数进行正确性查验。

另一个问题:51单片机怎么初始化成8-n-1(8数据位,无奇偶校验位,1中止位)波特率,是用串口的形式几?
原本想用串口的形式1,但是细心一看,形式1是10异步通讯方法,1开始位,8数据位,1中止位?
悬赏分:20 – 处理时刻:2009-12-1 13:26
问题弥补:首要感谢一楼的答复。我还有些疑问,方才用示波器看了下,当发送0xFF时,示波器显现一位低电平,其他为高电平,这点应该是对的,由于开始位是0.但是为什么发送0xAA时,示波器的(开始位+数据位+中止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值如同不对,是相反了,要是调一下刚好对?
;—————————————————————–
最佳答案用串口的形式1,是10位异步通讯方法。
1开始位,8数据位,1中止位,没有奇偶校验位。
这种形式便是:8-n-1(8数据位,无奇偶校验位,1中止位)的形式。
完全符合你的要求。
——————–
带奇偶校验位的,要用方法2或方法3。
把奇偶校验位,放到TB8上,就能够发送了,这便是偶校验。
接纳的奇偶校验位,在RB8中。
——————–
呵呵,你还用上了示波器,奢华!
你调查的很正确。
记住:串行通讯,是“低位在前”。这就对了。
你弥补的发问太多了,都满足再开一、二个问题了,这20分,真值!
;—————————————————————–

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/261701.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部