MCS-51单片机串行接口控制有关的特殊功能寄存器有两个,分别是串行接口控制寄存器SCON、电源控制寄存器PCON。
串行接口控制寄存器SCON用于设定串行接口的工作方式、接收/发送控制以及设置状态标志等。SCON的字节地址为98H,可进行位寻址。各位定义见表7-1。
表7-1 串行接口控制寄存器SCON
(1)SM0/SM1:串行接口4种工作方式选择位
当PCON寄存器的SMOD0/PCON.6为0时,SM0与SM1一起用来选择串行接口的工作。当PCON寄存器的SMOD0/PCON.6为1时,该位用于帧错误检测。当检测到一个无效停止位时,通过UART接收器设置该位。FE必须由软件清0。串行接口工作方式见表7-2。
表7-2 串行接口工作方式
(2)SM2:多机通信控制位
多机通信在方式2和方式3下进行。当串行接口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为1时,才使RI置1,产生中断请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为0时,则将接收到的前8位数据丢弃。当SM2=0时,则不论第9位数据是1还是0,都要将前8位数据送入SBUF中,并使RI置1,产生中断请求。RB8不再具有控制RI激活的功能。
(3)REN:允许串行接收位
由软件置1或清0。REN=1时允许串行接口接收数据。REN=0时禁止串行接口接收数据。
(4)TB8:发送的第9位数据(www.xing528.com)
方式2和方式3时,TB8是要发送的第9位数据,其值由软件置1或清0。在双机串行通信时,一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。在方式0和1中,不使用TB8。
(5)RB8:接收的第9位数据
方式2和方式3时,RB8存放接收到的第9位数据。在方式1,若SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。
(6)TI:发送中断标志位
用于指示一帧信息是否发送完毕它的工作过程。在方式0,串行发送的第8位数据结束时TI由硬件置1,在其他方式中,串行接口发送停止位的开始时置TI为1。TI=1,表示一帧数据发送结束。TI的状态可供软件查询,也可申请中断。TI必须由软件清0(如执行CLR TI指令)。
(7)RI:接收中断标志位
用于指示一帧信息是否接收完毕。在方式0,接收完第8位数据时,RI由硬件置1。在其他工作方式中,串行接收到停止位时,该位由内部硬件电路置1。
对TI、RI有以下三点需要特别注意:
1)可通过查询TI、RI判断数据是否发送、接收结束,当然也可以采用中断方式。
2)串行接口是否向CPU提出中断请求取决于TI与RI进行相“或”运算的结果,即当TI=1,或RI=1,或TI、RI同时为1时,串行接口向CPU提出中断申请。因此,当CPU响应串行接口中断请求后,首先需要使用指令判断是RI=1还是TI=1,然后再进入相应的发送或接收处理程序。
3)如果TI、RI同时为1,一般而言,则需优先处理接收子程序。这是因为接收数据时CPU处于被动状态,虽然串口输入有双重输入缓冲,但是,如果处理不及时,仍然会造成数据重叠覆盖而丢失一帧数据,所以应当尽快处理接收的数据。而发送数据时CPU处于主动状态,完全可以稍后处理,不会发生差错。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。