使用半双工通信
/************************************
使用硬件UART模块和串口中断
************************************/
#include <reg52.h>
typedef unsigned int uint;
void configUART(uint baud);
void main() {
EA = 1;
configUART(9600);
while (1) ;
}
void configUART(uint baud) {
SCON = 0x50; //配置串口为模式1,并使能串行接收
TMOD &= 0x0F; //清零T1的控制位
TMOD |= 0x20; //配置T1为模式2(自动重装模式)
TH1 = 256 - 11059200 / 12 / 16 / 2 / baud;
TL1 = TH1;
ET1 = 0; //!!!禁止T1中断(因为做了波特率发生器)
ES = 1; //使能串口中断
TR1 = 1;
}
//中断类型码为4,中断向量的地址 = 中断类型码 * 8 + 3
void interruptUART() interrupt 4 {
if (RI) { //如果接收到了字节
RI = 0; //手动清零
SBUF++; //可以自己设置接收到后数据的处理方式
}
if (TI) { //如果字节发送完毕
T