51 波特率9600副程式
2024/09/06 23:44
瀏覽30
迴響0
推薦0
引用0
// 初始化 UART,设置波特率为 9600
void uart_init(void) {
TMOD = 0x20; // 设置定时器 1 为模式 2(8 位自动重装)
TH1 = 0xFD; // 9600 波特率 (当晶振频率为 11.0592 MHz 时)
TR1 = 1; // 启动定时器 1
SCON = 0x50; // 8 位数据,1 个停止位,REN 使能接收
TI = 1; // 初始化发送标志位
}
// 串行发送字符
void uart_transmit(char data) {
SBUF = data; // 把数据加载到串行缓冲区
while (TI == 0); // 等待发送完成
TI = 0; // 清除发送中断标志
}
// 串行接收字符
char uart_receive(void) {
while (RI == 0); // 等待接收完成
RI = 0; // 清除接收中断标志
return SBUF; // 返回接收到的数据
}
TMOD = 0x20: 设置定时器 1 为模式 2(8 位自动重装)。
TH1 = 0xFD: 设置定时器 1 的重装值,确保波特率为 9600(假设晶振频率为 11.0592 MHz)。
TR1 = 1: 启动定时器 1。
SCON = 0x50: 设置串行模式为模式 1(8 位数据,1 个停止位,允许接收)。
TI = 1: 初始化发送中断标志,表示准备发送数据。
uart_transmit(): 发送数据的副程式,将数据加载到 SBUF 中并等待发送完成。
uart_receive(): 接收数据的副程式,等待直到数据接收到并返回数据。
你可能會有興趣的文章:
限會員,要發表迴響,請先登入



