#include <reg51.h> // 包含51单片机的寄存器定义
// 假设使用串口1,波特率9600,晶振11.0592MHz
#define FOSC 11059200L // 晶振频率
#define BAUD 9600 // 波特率
void UART_Init()
{
TMOD &= 0x0F; // 设置定时器模式
TMOD |= 0x20; // 定时器1,模式2 (8位自动重装)
TH1 = TL1 = 256 - FOSC / 32 / BAUD; // 波特率设置
TR1 = 1; // 启动定时器1
SCON = 0x50; // 串口模式1,可变波特率,使能接收
EA = 1; // 全局中断使能
ES = 1; // 串口中断使能
}
void UART_SendByte(unsigned char dat)
{
SBUF = dat; // 将数据放入发送缓冲区
while(!TI); // 等待发送完成
TI = 0; // 清除发送标志位
}
void SendDataToCMT2300A(unsigned char data, unsigned int len)
{
for(unsigned int i = 0; i < len; i++) {
UART_SendByte(data[i]);
}
}
void UART_ISR() interrupt 4
{
if(RI)
{
RI = 0;
}
} |