已知单片机使用晶振为11.0592MHZ,选择定时器T1的工作方式2作为波特率发生器,串口通信的波特率为9600bps

(循环程序)1.写出T1定时器的初值计算过程
2.写出程序

解答:

1.T1定时器的初值计算:
波特率=((2的SMOD次方)x F)/(32x12x(256-N)
其中:
SMOD是特殊功能寄存器PCON的第7位,取1或0(波特率倍增,或不倍增)。
N是置入定时器TH1的时间常数初值
F是晶振频率
当SMOD取0,波特率=F/(32x12x(256-N)),
N=256-F/(波特率x32x12)=256-1105920/(9600x32x12)=253 即0FDh

2.程序(待续),用MCS-1汇编语言可以吗?追问

可以的

追答

初始化程序:
INIT: MOV TMOD,#20H ;定时器T1工作方式2
MOV TH1,#0FDH ;置入时间常数
MOV TL1,#OFDH
SETB TR1 ;启动T1
MOV PCON,#00H ;SMOD=0,波特率不倍增
MOV SCON, #50H ;串行口工作方式1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-25
void UartInit(void) //[email protected]
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE0; //设定定时初值
TH1 = 0xFE; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}本回答被网友采纳
第2个回答  2018-04-16