单片机使用定时器TO,工作于定时模式,采用工作方式1,实现50000us延时,编写定时器初始化程序
1个回答
关注
展开全部
您好,很高兴为您解答。亲单片机使用定时器TO,工作于定时模式,采用工作方式1,实现50000us延时,编写定时器初始化程序我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。希望我的回答能帮助到您!请问您还有其它问题需要咨询吗?
咨询记录 · 回答于2022-12-14
单片机使用定时器TO,工作于定时模式,采用工作方式1,实现50000us延时,编写定时器初始化程序
您好,很高兴为您解答。亲单片机使用定时器TO,工作于定时模式,采用工作方式1,实现50000us延时,编写定时器初始化程序我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。希望我的回答能帮助到您!请问您还有其它问题需要咨询吗?
原文链接:https://blog.csdn.net/imxlw00/article/details/88029372
这里有详细的亲