当定时器重载值是8bit时(传统的51单片机型号,如AT89C51的T1):
Y=256-((256-X)*4)
当定时器重载值是16bit时(较新的51单片机型号,如C8051F系列的Timer3):
Y=65536-((65536-X)*4)
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则TH1=256-62500/波特率
baud(波特率)=2^smod*12M/(12*32*(256-TH1)
当SMOD=1时,k为倍数,是2的幂,公式为:
波特率=K×12000000/32×12×(256-TH1)
所以,TH1=0xf3=256-(12000000/384×波特率) 其中波特率为2400
TL1=0xF3; //9600波特率的初值,板子使用12M晶振,初值=256-12000000/32/12/2400
12000000是晶振的值,32是指使用的是32位,即计数器模式2
设计的时候就是这样的。12个晶振周期才能完成一条指令的执行