比特率2400:
晶振:11.0592
计算公式:
256- (11.0592* 1000*1000)/2400/32/12
在计算机中,串口通信是通过波特率(baudrate)来控制数据传输速度的。而波特率和定时器的预分频和重载值有关。在51单片机中,使用定时器1来控制串口通信波特率。
根据定时器1的工作方式,波特率可以通过以下公式计算得出:
波特率 = 定时器时钟频率 / (12 * 定时器1的重载值)
其中,定时器时钟频率可以通过晶振的频率来计算。在此题中,晶振频率为11.0592MHz。因此,
定时器时钟频率 = 晶振频率 / 12
将波特率代入公式中,可以解出定时器1的重载值。在此题中,波特率为2400。因此,
定时器1的重载值 = 定时器时钟频率 / (12 * 波特率)
代入相应的数值进行计算,可得到定时器1的重载值TH1约等于191。
#include <reg51.h> //头文件
sbit TX = P3^1; // 定义 TX 引脚为 P3.1
void init_uart(); // 初始化函数
void delay(int time); // 延时函数
void main()
{
init_uart(); // 初始化串口
while(1)
{
TX = 0; // 向串口发送一个字符
SBUF = 'A';
delay(10);
}
}
// 初始化函数
void init_uart()
{
TMOD &= 0x0F; // 清空模式位
TMOD |= 0x20; // 设置 T1 模式为 8 位自动重装载定时器
TH1 = 0xFD; // 波特率为 2400
TL1 = 0xFD;
PCON &= 0x7F; // SMOD=0,波特率倍增器关闭
SCON = 0x50; // 串口工作在方式 1,允许接收
TR1 = 1; // 启动定时器 T1
}
// 延时函数
void delay(int time)
{
int i, j;
for(i=0; i<time; i++)
for(j=0; j<100; j++);
}