单片机串行通信
8051年有一个串行全双工端口,因此可以同时发送和接收。端口接收缓冲,由于这个端口可以开始接收字节之前前一字节已经从注册SBUF读取。会有冲突,如果读取字节之前抵达SBUF前面的字节。
串口接收/发送寄存器都是在SBUF访问。串行端口可以在4模式如下提到的。
SCON(串行控制寄存器),可寻址
串口控制和状态寄存器的特殊功能寄存器SCON。不仅这个寄存器包含了模式选择,而且9数据位传输和接收(TB8和RB8)和串口中断位(TI和RI)。
SM0-SCON。7 -串行端口模式说明符(表1)
SM1-SCON。6 -串行端口模式说明符(表1)
SM2-SCON。5 -使多处理器通信模式的2/3。
REN-SCON。4 -由软件设置/清除启用/禁用接待
TB8-SCON。3 - 9位将在mode2/3传播,由软件设置/清除
RB8-SCON。2 -在mode2/3,收到的第九位。在模式1中,如果SM2 = 0, RB8
是收到的停止位,在模式0,它是不习惯。
TI-SCON。1- Transmit Intterupt flag, set by hardware at the end of 8th bit time in mode 0,
初的停止位在另一个模式,它必须通过软件。
RI-SCON。0- receive Interrupt flag, set by hardware and must be cleared by software.
表1
基于SM0和SM1各种选择波特率如下表所示。
SM0 | SM1 | 模式/描述/波特率 |
---|---|---|
0 | 0 | 0移位寄存器(Fosc. / 12) |
0 | 1 | 1、8位UART变量 |
1 | 0 | 2、9位UART (Fosc. / 64)或(Fosc. / 32) |
1 | 1 | 3、9位UART变量 |
单片机串口初始化C程序
所示的C程序,初始化定时器0延迟和定时器1 9600个基点的波特率。
通过SBUF传播
SBUF = ' S ';而(TI);TI = 0;/ * / *一个字符时间
(我= 0;<马克斯,我+ +)
{
SBUF = transmit_array (+ +);/ *传送字符数组/ *
而(TI);TI = 0;
}
(我= 0;<马克斯,我+ +)
{
SBUF = transmit_array (+ +);/ *传送字符数组/ *
而(TI);TI = 0;
}
相关链接
•单片机教程
•什么是单片机
•8051单片机的体系结构
•单片机硬件接口