串行口主要由发送寄存器、接收寄存器和移位寄存器组成。通常把实现异步通信的串行口称为通用异步接收器/发送器(Universal Asynchronous Receiver/Transmitter,UART),把实现同步通信的串行口称为通用同步接收器/发送器(Universal Synchronous Receive/Transmit-ter,USRT),而把实现同步和异步通信的串行口称为通用同步异步接收/发送器(Universal Synchronous Asynchronous Receiver/Transmitter,USART)。
80C51的串行口,虽然是既能实现同步通信,又能实现异步通信的全双工串行口,但在单片机的串行数据通信中,最常用的是异步方式,因此常把它写为UART。它的寄存器结构如图6-6所示。
图6-6 80C51的串行口寄存器结构
发送寄存器(发送器)SBUF(TX)为8位只写寄存器,地址为99H,写入该寄存器的数据将从TXD引脚发送出去。接收寄存器(接收器)SBUF(RX)用于在接收状态下存放从RXD引脚接收到的数据,只供CPU读取。接收寄存器为8位寄存器,地址也是99H。(www.xing528.com)
鉴于任何时刻CPU只能执行发送或接收指令中的一种,因此这两个寄存器共用一个地址,并且在程序中可以不必区分SBUF(TX)和SBUF(RX),统一使用SBUF表示即可。在通信过程中,一旦SBUF(TX)变空或SBUF(RX)变满,便向CPU发出中断请求。串行口有两个相互独立的数据引脚,即发送引脚TXD和接收引脚RXD,分别供数据发送和接收使用。但这两个引脚都是与I/O口线复用的,TXD与P3.1共用引脚,RXD与P3.0共用引脚。
串行口的主要功能是实现数据的串行化/反串行化,串行化是把并行数据转变为串行数据,而反串行化则是把串行数据转变为并行数据。串行口的数据发送是一个串行化过程,在这一过程中,把写入发送寄存器的并行数据,按帧格式要求插入格式信息(起始位、奇偶位和停止位),构成一个串行位串,经TXD引脚串行送出。
串行口的数据接收是一个反串行化过程。在反串行化过程中,串行数据通过引脚RXD进入,经移位寄存器移位把帧中的格式信息滤除而保留数据位,从而在接收缓冲器中得到并行数据,并送上内部数据总线。在串行接收通路中,移位寄存器和接收缓冲器构成了双缓冲结构,以避免在数据接收过程中出现帧重叠错误。所谓帧重叠错误就是在接收下一帧数据时,前一帧的数据还没有被读走。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。