T1用作串行口波特率发生器时,设置为工作方式1时,如何初始化?波特率如何计算?
的有关信息介绍如下:#include
#define Baud 9600 //波特率9600
#define Fosc 11059200 //系统时钟11.0592MHz
main()
{
TMOD=0x22; //T1模式2波特率,T0模式2定1/3600秒
SCON= 0x52; //串口工作方式1,允许接收,TI=1
TL1=256-Fosc/12/16/Baud; //波特率装初值
TH1=256-Fosc/12/16/Baud;
TR1=1; //开启T1
IE=0x9A; //开总中断,开定时和串口,关外部
...
...
这里用的定时器模式2,方式2虽然定时数少一点,但是好像定时比较精确吧
看其中关于T1的部分,T0的就不要管了
TH1,TL1,在模式2下一个是用来重装初值的,一个是用来计数的
Fosc/12/16/Baud中 Fosc为系统时钟,除12是因为12个系统时钟为一个指令,除16是因为一帧的接收要经过16次扫描,即串口工作方式1下,采样频率是波特率的16倍