STC89C52 串口通信 C语言实现 - 代码解析和示例
#include <reg52.h>
#define FOSC 11059200L //系统频率 #define BAUD 9600 //串口波特率 #define DIV 256 //定时器1分频系数
void UART_Init() { TMOD |= 0x20; //设定定时器1工作在方式2 TL1 = TH1 = -(FOSC / (DIV * 12 * BAUD)); //设定定时初值 TR1 = 1; //启动定时器1 SM0 = 0; //设置串口工作在模式1 SM1 = 1; REN = 1; //允许串口接收 EA = 1; //开总中断 ES = 1; //开串口中断 }
void UART_SendByte(unsigned char dat) { SBUF = dat; //将要发送的数据放入发送缓冲区 while (!TI); //等待发送完成 TI = 0; //清除发送完成标志位 }
void main() { UART_Init(); //初始化串口
while (1)
{
UART_SendByte('A'); //发送字母A
Delay(1000); //延时1秒
}
}
//串口中断服务函数 void UART_Interrupt() interrupt 4 { unsigned char dat;
if (RI) //接收中断
{
RI = 0; //清除接收中断标志位
dat = SBUF; //读取接收到的数据
//处理接收到的数据
}
if (TI) //发送中断
{
TI = 0; //清除发送中断标志位
//处理发送完成事件
}
}
原文地址: https://www.cveoy.top/t/topic/pf0V 著作权归作者所有。请勿转载和采集!