单片机的串口通讯装置
我们把不同事物之间的信息交换之为通讯。只要把按下图接好,然后单片机U1执行
MOV P0,#05H;发出指令
而单片机U2执
行MOV P0,#0FFH ;P0口写1,准备读取数据
MOV A,P0 ;读入P0口的数据
这样就完成了数据从单片机U1到U2传输。
这种传输方式一次可以同时传输8位数据,叫并行通讯。它通讯速度快,但传输线多,只适用于近距离传输。
我们还可以把一个字节的数据一位一位按顺序发送或接收,像一路纵队或者糖葫芦串的就叫串行通讯了。这种方式速度虽然慢,但传输线少,适于长距离通讯。
所以单片机规定用“O”表示开始,然后从低位到高位逐位传送8个数据位,接下来是奇偶校验位(有时候可以省略),最后用“1”表示停止,完成一帧信息的传输。这种就叫异步通讯。它还有一个传输速率的问题,也就是每一位数据的传送时间或每秒传送的位数,我们称之为波特率,它是由协商确定的。异步通讯是可以不连续的,还有一种连续传送数据的方式叫同步通讯,比异步通讯快点,它是在数据间隔中插入同步字符来完成。
信息只能单方向传送的称为单工,信息能双向但不能同时传送的称为半双工,能够同时双向传送的称为全双工。51单片机就有一组全双工串行口,双机通讯只需要用一根输出线接引脚RXD(P3.0串行数据接收端)和一根输入线接引脚TXD(P3.1串行数据发送端)就行了。如下图所示。
单片机的两个串行引脚接的是单片机里面的串行口缓冲寄存器SBtjF,它包括发送寄存器和接收寄存器。这两个寄存器的名字和地址空间(99H)相同,但不会冲突,因为接收寄存器只能被读出数据。而发送寄存器只能被写入数据。另外,串行口的工作方式和波特率是由串行口控制寄存器SCON来控制。如表所示。
bit | D7 | D6 | D5 | D4 | D3 | D2 | D1 | DO |
SCON | SM0 | SM1 | SM2 | REN | TB8 | RB8 | Tl | Rl |
其中RI为接收中断标志位。RI置1表示一帧数据接收完毕,同时申请中断。可用软件查询的方法获得数据已接收完毕的信息,或用中断的方式来接收下一个数据,用软件清0。
Tl为发送中断标志。Tl置1既表示一帧信息发送结束,同时申请中断,可用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据,用软件清O。
RB8在方式O中不使用,在方式1中,若SM2位为0,RB8就是接收到的停止位。在方式2或方式3中,RB8是接收到的第9位数据。
T88在方式2或方式3中,是要发送的数据的第9位,根据需要由软件置1或清O。也可以作为奇偶校验位或在多机通讯中作为区别地址帧或数据帧的标志位。
REN由软件置1来允许接收数据,清0来禁止接收数据。
SM2是多机通讯控制位。在方式O时应置为0。在方式1中,当SM2为1则只有接收到有效停止位时,RI才置1。在方式2或方式3当SM2为1且接收到的第九位数据RB8=0时,才让RI置1。
SM0、SMl:串行口工作方式选择位,其定义如下表所示。
SM0、SMl | 工作方式 | 功能描述 | 波特率 |
OO | 方式O | 8位移位寄存器 | fosc/12 |
O1 | 方式1 | 8位异步收发 | 可变 |
1O | 方式2 | 9为异步收发 | fosc/64或fosc/32 |
11 | 方式3 | 9位异步收发 | 可变 |
那么串行口的工作方式有哪些
方式O用来外接移位寄存器,进行串行、并行转换,以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据以fosc门2的固定波特率从RXD输入或输出,低位在前,高位在后,TXD输出同步脉冲。输出时,发送完一帧数据后,发送中断标志Tl置1。输入时,REI'J先置1,Rl清0开始接收。当接收完8位数据时,RI置1。
方式1是波特率可变的10位异步通讯方式。
发送或接收的一帧信息包括1个起始位O、8个数据位和1个停止位1。当指令将数据写入SBLJF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,Tl置1。当REN置1且RXD由1跳变为O时,就开始接收一帧数据。接收完一帧数据后,RI置1。
方式3是波特率可变的11位异步通信方式。
它比方式1增加了一位可以由软件控制的第9位数据,它来自SCON寄存器的TB8位,可以作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。其他和方式1相同。
方式2是固定波特率的11位异步通讯方式。除波特率不变外,其余与方式2相同。
- 上一篇:用C语言控制单片机定时器
- 下一篇:变压器分类及参数