1.串行中断控制寄存器SCON
在中断系统中我们已经分析了SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式见表2-9。
下面我们对各控制位功能介绍如下:
SM0、SM1:串行口工作方式控制位见表2-10。
表2-9 SCON寄存器结构
表2-10 SM0、SM1位置位作用
表中fosc为晶振频率。
SM2:多机通信控制位。多机通信工作于方式2和方式3,所以SM2位主要用于方式2和方式3。接收状态:当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都把前8位数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
REN:接收允许控制位。REN用于控制数据接收的允许和禁止,REN=1时,允许接收;REN=0时,禁止接收。由软件置位以允许接收,又由软件清零来禁止接收。
TB8:要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清零。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。在方式2和方式3中,TB8是要发送的第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址或是数据,TB8=0时为数据,TB8=1时为地址。
RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若SM2=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其他方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清零。可寻址标志位。
RI:接收中断标志位。在方式0中,当接收完第8位数据后,由硬件置位。在其他方式中,在接收到停止位的中间时刻由硬件置位(例外情况见关于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清零。可寻址标志位。
2.电源控制寄存器PCON
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式见表2-11。
表2-11 电源控制寄存器PCON
在CHMOS型单片机中,除SMOD位外,其他位均为虚设的。SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。
3.中断允许寄存器IE
中断允许寄存器在中断系统中已经阐述,这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,见表2-12。ES=1,允许串行中断,ES=0,禁止串行中断。(www.xing528.com)
表2-12 IE中断允许控制寄存器结构
4.串行通信工作方式
8051单片机的全双工串行口可编程为4种工作方式,现分述如下:
(1)方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据都是从引脚RXD输入或输出,引脚TXD用来输出同步脉冲。
1)数据发送:串行数据从引脚RXD输出,引脚TXD输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fosc/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。使用方式0实现数据的输入输出时,实际上是把串行口变成并行口用。
2)数据接收:当串行口以方式0接收时,先置位允许接收控制位REN。此时,引脚RXD为串行数据输入端,引脚TXD仍为同步脉冲移位输出端。当RI=0和REN=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。
3)波特率:方式0的波特率固定为主振频率的1/12。若fosc=6MHz,则波特率为500bit/s,即2μs移位一次。
(2)方式1为波特率可变的10位异步通信接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
1)数据发送:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下串行数据从引脚TXD输出。发送完一帧数据后引脚TXD一直维持在“1”状态下,并由硬件置位TI通知CPU可以发送下一个字符。
2)数据接收:在REN=1时,串行口采样引脚RXD,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当RI=0且停止位为1或者SM2=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。
3)波特率:方式1的波特率是可变的,由定时/计数器1的计数溢出率来决定,公式为
波特率=2SMOD(定时器1溢出率)/32
4)SMOD:PCON寄存器的最高位值,SMOD=1表示波特率增倍。
(3)方式2为固定波特率的11位UART方式。即1个起始位,9个数据位和1个停止位。在方式2中,字符还是8个数据位,第9个数据位既可以作为奇偶校验位也可作为控制位使用,功能由用户自己定。
1)数据发送:发送的串行数据由引脚TXD输出,一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。准备好第9个数据位之后,当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI,其过程与方式1相同。
2)数据接收:方式2的接收过程也与方式1基本相同,不同之处在于第9个数据位,串行口把收到的8位数据送入SBUF,把收到的第9位数据送入RB8。
3)波特率:方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示
波特率=2SMODfosc/64,也就是当SMOD=1时,波特率为fosc/32,当SMOD=0时,波特率为fosc/64。
(4)方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。