MCS-51单片机的串行口有4种工作方式,由串行口控制寄存器SCON中的SM0和SM1决定。串行通信主要使用方式1、方式2、方式3。方式0主要用于扩展并行输入/输出口。
(1)方式0 这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。
在方式0下,串行口的SBUF作为同步移位寄存器使用,发送SBUF相当于一个并入串出的移位寄存器。接收SBUF相当于一个串入并出的移位寄存器。在这种方式下,数据从RXD端串行输出或输入,不论是发送还是接收数据,同步移位信号都从TXD端输出,波特率固定不变,为振荡频率的1/12。该方式是以8位数据为一帧,没有起始位和停止位,依次由最低位到最高位发送或接收。
发送过程:当把要发送的数据写入串行口发送缓冲器SBUF后,串行口将8位数据从RXD端一位一位地输出,与此同时TXD引脚发出相应的同步脉冲信号。发送完数据后,由硬件将TI置“1”,发送下一个数据之前,必须先用软件(指令)将TI清零。
接收过程:在满足REN=1和RI=0的前提条件下,就会启动一次接收过程。外部的数据一位一位地从RXD引脚输入,与此同时TXD引脚也发出相应的同步脉冲信号。接收完8位数据后,硬件置位RI,接收下一个数据之前,也必须先用软件(指令)将RI清零。
方式0的波特率是固定的,为:fosc/12
(2)方式1 串行口在方式1下工作于异步通信方式,规定发送或接收一帧数据有10位,包括1位起始位,8位数据位和1位停止位。串行口采用该方式时,特别适合于点对点的异步通信。方式1的波特率可以改变。
发送过程:在工作方式l下发送数据时,CPU执行一条写入SBUF的指令就启动发送,数据从TXD引脚输出,发送完一帧数据时,硬件置位中断标志TI。
接收过程:当REN=1时,接收器对RXD引脚进行采样,采样脉冲频率是所选波特率的16倍。当采样到RXD引脚上出现从高电平“1”到低电平“0”的负跳变时,就启动接收器接收数据。如果接收到的不是有效起始位,则重新检测负跳变。接收器按“三中取二”原则(接收的值是3次采样中至少两次相同的值)来确定采样数据的值以保证采样接收准确无误。
方式1只有在满足以下两个条件:①RI=0;②SM2=0或接收到的停止位为1,则接收到的数据才有效。把接收到的有效8位数据送入接收SBUF中,停止位送入RB8中,并置位RI。如果以上两个条件有一个不满足,则接收到的数据将被舍去,接收器重新检测RXD引脚。(www.xing528.com)
方式1的波特率是可变的,为:
即为:定时器1溢出率/16或定时器1溢出率/32
(3)方式2 在方式2下一帧数据由11位组成,包括1位起始位、8位数据位、1位可编程位(第9位数据)、1位停止位。第9位数据TB8,可用作奇偶校验或地址/数据标志位、接收数据时,可编程位送入SCON中的RB8。第9位数据即具有特别的用途,可以通过软件来控制它,再加特殊功能寄存器SCON中的SM2位的配合,可使MCS-51单片机串行口适用于多机通信。方式2的波特率固定,只有两种选择,为振荡频率的1/32或1/64,可由PCON的最高位选择。
方式2和方式3的发送过程:发送数据时,CPU先把第9位数据装入SCON的TB8中,第九位数据可用SETB TB8或CLR TB8位操作指令来完成,再把要发送的数据送入发送SBUF。发送器便立即启动发送数据,发送完一帧数据后,硬件置位TI,发送下一个数据之前,先用软件将TI清零。
方式2和方式3的接收过程:当REN=1时,串行口可以接收数据,接收过程类似于方式1,但必须同时满足两个条件:①RI=0;②SM2=0或接收到的第9位数据位为“1”,这样接收到的数据才有效,接收到的有效8位数据送入接收SBUF,第9位数据装入RB8,硬件置位RI,否则,接收到的数据无效,RI也不置位。
方式2的波特率: 即为:fosc/32或fosc/64
(4)方式3 方式3与方式2完全类似,帧格式与方式2一样,一帧为11位。惟一的区别是方式3的波特率是可变的。所以方式3也适合于多机通信。
方式3的波特率: 与方式1波特率的产生方法相同
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。