串口中断
串口中断的使用
1. 软硬件条件
- 单片机型号:STC89C52RC
- 开发环境:KEIL4
- 烧录软件以串口测试软件:stc-isp
2. 串口
2.1 串口的原理
串口即串行通信接口,大多数时称为COM口。数据在数据链路上只能一位一位发送,需要一对传输线才能实现全双工通信,即在接收的同时可以发送。
2.2 异步串行通信接口(UART)
异步串行是指UART(Universal Asynchronous Receiver/Transmitter)通用异步接收/发送。UART包含TTL电平的 串口和 RS232电平的串口。
2.2.1 RS232电平
逻辑"1"为 -3 ~ -15V的电压,,逻辑"0"为 3 ~ 15V的电压 。
2.2.2 TTL 电平
TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备,内部各部分之间通信的标准技术。TTL电平信号应用广泛,是因为其数据表示采用二进制规定。
+5V等价于逻辑”1”,0V等价于逻辑”0”。
数字电路中,由TTL电子元器件组成电路的电平是个电压范围,规定:
- 输出高电平>=2.4V,输出低电平<=0.4V
- 输入高电平>=2.0V,输入低电平<=0.8V
3. 串口通信
3.1 接线要求
交叉接线,即RxD to TxD,TxD to RxD。其中,RXD:数据输入引脚,数据接受,STC89系列对应P3.0口;TXD:数据发送引脚,数据发送;STC89系列对应P3.1口。
3.2 单片机中串口通信原理
在单片机中集成对应寄存器做为缓冲区SBUF,输入输出数据均会先存放于这里,这里配置两个寄存器,分别控制输入输出,但是他们共用一个地址码H99。
- 接收数据:
char mes = SBUF;
- 发送数据:
SBUF = mes;
其中异步串行接口,采用异步方式以防止两个设备之间速率不匹配的问题,但是需要实现约定波特率,一般单片机波特率为9600。
3.3 串口中断相关寄存器
3.3.1 SCON 串口控制寄存器(可位寻址)
控制串口工作模式,以及控制串口通信的接收和发送中断、波特率倍速等等。
- SM0,SM1寄存器:控制串口工作模式
- REM:接收使能寄存器,为1 允许接受串口数据;为 0 时,不接收串口数据。
- TI:数据传输中断标志位,发送数据时由硬件置1,需要软件置0
- RI:数据接收中断标志位,接收数据时由硬件置1,需要软件置0
- SM0/FE:在PCON.6 也就是SMOD0 = 1时,用于检测帧错误,需要软件置0。
工作方式:方式0、2波特率不能改变;方式1、3波特率可以自己设置。
一般采用定时器1,8位自动重装机制,设置波特率为9600时,TH1= 0xFD。
3.3.2 PCON(不可位寻址)
串口通信中只使用了SMOD、SMOD0。
- SMOD:波特率选择位主要时控制波特率设置是否倍速。
- SMOD0:主要用于帧错误