51单片机的串行口是一个可编程全双工的通讯接口,具有UART(通用异步收发器)的悉数功用,能一起进行数据的发送和接纳,也能够作为同步移位寄存器运用。
51单片机的串行口主要由两个独立的串行数据缓冲寄存器SBUF(发送缓冲寄存器和接纳缓冲寄存器)和发送操控器、接纳操控器、输入移位寄存器及若干操控门电路组成。
51 单片机能够经过特别功用寄存器SBUF队串行接纳或串行发送寄存器进行拜访,两个寄存器共用一个地址99H,但在物理上是两个独立的寄存器,由指令操作决议拜访哪一个寄存器。履行写指令时拜访串行发送寄存器;履行读指令时,拜访串行接纳寄存器。(接纳器具有双缓冲结构,即在接纳寄存器中读出前一个已接纳到的字节之前,便能接纳第二个字节,假如第二个字节已接纳结束,而第一个字节还没有读出,则将丢掉其间一个字节,编程时应引起留意。关于发送器,由于是由 cpu操控的,所以不需要考虑。
与串行口严密相关的一个特别功用寄存器是串行口操控寄存器SCON,它用来设定串行口的工作方法、接纳/发送操控以及状况标志等。
串行口操控寄存器SCON
串行口操控寄存器SCON在特别功用寄存器中,字节地址为98H,可位寻址,单片机复位时SCON悉数被清零。
位序号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符号 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
T1 |
R1 |
SM0,SM1为工作方法挑选位。串行口有四种工作方法,它们由SM0、SM1设定。其间方法一最为常用。
SM2为多机通讯操控位。
REN为答应串行接纳位。
TB8为方法2、3中方法数据的第九位。
RB8为方法2、2中接纳数据的第九位。
TI为发送中止标志位,在方法0时,当串行发送第8位数据结束时,或在其他方法,串行发送中止位的开端时,由内部硬件使TI置一,向CPU宣布中止恳求。在中止服务程序中,有必要运用软件将其清零,撤销此中止恳求。
RI为接纳中止标志位。在方法0时,当串行接纳第8位数据结束时,或在其他方法,串行接纳中止位的中心时,由内部硬件使RI置一,向CPU宣布中止恳求。在中止服务程序中,有必要运用软件将其清零,撤销此中止恳求。
串口工作方法1简介(0、2、3今后再说),串行口方法传送1帧数据共10位,其间一位开端位(0),八位数据位(最低位在前,高位在后),一位中止位(1)。帧与帧之间能够有闲暇,也能够无闲暇。TXD(P3.1)位数据发送引脚,RXD(P3.0)为数据接纳引脚。其传输波特率是可变的,关于51单片机,波特率由定时器1的溢出率决议。
串行口方法1编程与完成
当数据被写入SBUF寄存器后,单片机主动开端从开端位发送数据,发送到中止位的开端时,由内部硬件使TI置1,向CPU恳求中止,接下来可在中止服务程序中做相应的处理,也可挑选不进入中止。
用软件置REN为1时,接纳器以所挑选波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平产生负跳变时,则阐明开端位有用,将其移入输入移位寄存器,并开端接纳这一帧信息的其他位。接纳过程中,数据从移位寄存器右边移入,开端位移至输入移位寄存器最左面时,操控电路进行最终一次移位。当 RI=0,且SM2=0(或接纳到的中止位为1时),将接纳到的9位数据的前8位数据装入接纳SBUF,第9位(中止位)进入RB8,并置RI=1,向 CPU恳求中止。