51单片机波特率和晶振的计算

当定时器重载值是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个晶振周期才能完成一条指令的执行

你可能感兴趣的:(c,timer)