专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

关于串行口控制寄存器SCON

作者:玉另符   来源:本站原创   点击数:  更新时间:2013年12月03日   【字体:

在具体操作串口之前需要对单片机的一些与串口有关的特殊功能寄存器进行初始化设置,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

1.         确定T1的工作方式(编程TMOD寄存器)

2.         计算T1的初值,载入TH1、TL1

3.         启动T1(编程TCON中的TR1位)

4.         确定串行口工作方式(编程SCON寄存器)

5.         串行口工作在中断方式时,要进行中断设置(编程IE,IP)

 


在第4步初始化当中:
REN=-1;
SM0=0;
SM1=1;

这三位都是串行口控制寄存器SCON里的,单片机刚上电时SCON被清零,因为串口方式为0,穿行口为同步移位寄存器的输入/输出方式,当执行完REN = 1这条语句后,它便直接开始从RXD引脚接收数据,并不管它连接的系统有无发送数据这是SM0和SM1还未被操作,可单片机串口寄存器已经收到数据,并且已经产生了串口中断。
当运行完SM0=0;SM1=1这两条指令后,串口方式才被设置为工作方式1,这时才终止串口接收数据。

修改方法:
先设置串口模式,再允许串口接收,这样就可以避开串口方式0接收数据。
SM0=0;
SM1=1;
REN=1;

ES是中断允许位。如果你ES=0的话

TI 和RI为1,都不会去执行串口中断函数。


TI是发送标志位。发送完成,该位置1,他跟ES没关系。

RI是接收标志位,接收完成,该位置1,也跟 ES没直接关系。

一般来说,ES就是当有TI或RI事件发生时,是否跳出当前所在执行的函数到中断函数里去处理。

 

REN:允许接收位。

REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。


EA (IE.7):

EA=0时,所有中断禁止(即不产生中断);EA=1时,各中断的产生由个别的允许位决定


ES (IE.4):

串行口中断充许(ES=1充许,ES=0禁止)

不是执行REN激活的串口中断4,而是ES =1打开的串口中断4

REN是和中断无关的参数,只是控制串口接收的数据进入到BUFFER中,并不产生数据中断

 
最后来看看位于IE寄存器中的ES位,如表12.4所示。

表12.4  中断允许寄存器IE


IE
 D7 D6    D5  D4    D3   D2   D1        D0
EA - ET2 ES ET1     EX1       ET0      EX0
 S是串行口中断允许位,位于地址为0XA8的中断允许寄存器IE中的第4位。
ES位用来控制单片机串行口的使能。当ES = 0时,不允许串口中断,当ES = 1时,则允许串口产生中断。

串口的中断同时还受到单片机的总中断控制位EA的控制。当EA=0时,单片机屏蔽所有的中断请求,只有当EA=1,且ES=1时才允许产生串口中断。

关闭窗口

相关文章