一般,串行通讯的一帧的格局是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来主动生成,程序如下。
由于P = 1则阐明A中有奇数个1,所以上述程序是“偶”校验的方法。
假如要求的是“奇”校验,则需求添加一条取反指令,如下:
接纳方会把收到的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分,真值!
;—————————————————————–