您的位置首页快问快答

T1用作串行口波特率发生器时,设置为工作方式1时,如何初始化?波特率如何计算?

T1用作串行口波特率发生器时,设置为工作方式1时,如何初始化?波特率如何计算?

的有关信息介绍如下:

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倍