作者:平凡单片机
串行接口
- 概述
- 串行接口的一般概念 单片机与外界进行信息交换称之为通讯。
8051 单片机的通讯方式有两种:
并行通讯:数据的各位同时发送或接收。
串行通讯:数据一位一位顺序发送或接收。参看下图:
串行通讯的方式:
- 异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:
在一帧格式中,先是一个起始位 0 ,然后是 8 个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位 1 。用这种格式表示字符,则字符可以一个接一个地传送。
在异步通讯中, CPU 与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种 0 和 1 的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用 ASCII 标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是 120 字符 /s ,而每个字符如上述规定包含 10 数位,则传送波特率为 1200 波特。
- 同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
- 通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。
2 . 8051 单片机的串行接口结构
8051 串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式( UART ),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的 8051 多机系统也可以通过同步方式,使用 TTL 或 CMOS 移位寄存器来扩充 I/O 口。
8051 单片机通过引脚 RXD ( P3. 0 ,串行数据接收端)和引脚 TXD ( P3. 1 ,串行数据发送端)与外界通讯。 SBUF 是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被 CPU 读出数据,一个只能被 CPU 写入数据。
- 串行口的控制与状态寄存器
- 串行口控制寄存器 SCON
它用于定义串行口的工作方式及实施接收和发送控制。字节地址为 98H ,其各位定义如下表:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
SM0 、 SM1 :串行口工作方式选择位,其定义如下:
SM0 、 SM1 |
工作方式 |
功能描述 |
波特率 |
0 0 |
方式 0 |
8 位移位寄存器 |
Fosc/12 |
0 1 |
方式 1 |
10 位 UART |
可变 |
1 0 |
方式 2 |
11 位 UART |
Fosc/64 或 fosc/32 |
1 1 |
方式 3 |
11 位 UART |
可变 |
其中 fosc 为晶振频率