80C51串行口通过控制寄存器、中断功能和波特率设置实现串行通信控制,此处先介绍前两项内容。
1.串行口控制寄存器SCON
SCON用来控制串行口的工作方式和状态,它可以是位寻址。在复位时所有位被清零,单元地址为98H。
其格式见表6-1。
表6-1 串行口控制寄存器SCON的格式
各位定义如下:
●SM0、SM1:串行口工作方式选择位(见表6-2)。
表6-2 SM0、SM1串行口工作方式选择位
●SM2:多机通信控制位。
因为多机通信是在方式2和方式3下进行的,因此SM2主要用于方式2和方式3。
SM2=1,则只有在接收到的第9位数据(RB8)为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则将接收到的前8位数据丢弃。
SM2=0,则不论第9位数据是0还是1,都将前8位数据装入SBUF中,并产生中断请求。在方式0时,SM2必须为0。
●REN:允许接收控制位。该位由软件置位或复位。
REN=0时,禁止串行口接收。
REN=1时,允许串行口接收。
●TB8:发送数据位。
在方式2或方式3时,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。
可作为奇偶校验位(单机通信)。
可在多机通信中作为发送地址帧或数据帧的标志位。多机通信时,一般约定:发送地址帧时,设置TB8=1;发送数据帧时,设置TB8=0。在方式0和方式1中,该位未用。
●RB8:接收数据位。
在方式2和方式3时,存放接收数据的第9位。(www.xing528.com)
可以是约定的奇偶校验位。
可以是约定的地址/数据标志位,可根据RB8被置位的情况对接收到的数据进行某种判断。在多机通信时,若RB8=1,说明收到的数据为地址帧;RB8=0,说明收到的数据为数据帧。在方式1下,若SM2=0,则RB8用于存放接收到的停止位方式。在方式0下,该位未用。
●TI:发送中断标志位,用于指示一帧数据发送完否。
在方式0下,发送电路发送完第8位数据时,TI由硬件置位。
在其他方式下,TI在发送电路开始发送停止位时置位。这就是说,TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知一帧信息是否已发送完毕。
●RI:接收中断标志位,用于指示一帧信息是否接收完。
在方式1下,RI在接收电路接收到第8位数据时由硬件置位。
在其他方式下,RI是在接收电路接收到停止位的中间位置时置位的,RI也可供CPU查询,以决定CPU是否需要从“SBUF(接收)”中提取接收到的字符或数据。RI也由软件复位。
在进行串行通信时,一帧发送完后,必须用软件来设置SCON的内容。当由指令改变SCON的内容时,改变的内容在下一条指令的第一个周期的S1P1状态期间才锁存到SCON寄存器中,并开始有效。如果此时已开始进行串行发送,那么TB8送出去的仍是原有的值而不是新值。
在进行串行通信时,一帧发送完毕后,发送中断标志置位,向CPU请求中断;当一帧接收完毕时,接收中断标志置位,也向CPU请求中断。若CPU允许中断,则要进入中断服务程序。CPU事先并不能区分是RI请求中断还是TI请求中断,只能在进入中断服务程序后,通过查询来区分,然后进入相应的中断处理。
2.电源控制寄存器PCON
PCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为97H,不能位寻址。PCON的格式见表6-3。
表6-3 电源控制寄存器PCON的格式
各位定义如下:
●SMOD:串行口波特率的倍增位。
在HMOS单片机中,该寄存器中除最高位之外,其他位都是虚设的。在单片机工作在方式1、方式2和方式3时,有:
SMOD=1,串行口波特率提高一倍。
SMOD=0,则波特率不加倍。系统复位时SMOD=0。
●GF1、GF0:通用标志位,由软件置位、复位。
●PD:掉电方式控制位,PD=1则进入掉电方式。
●IDL:待机方式控制位,IDL=1则进入待机方式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。