计数器是16位的,由高8位TH0和低8位TL0组成,可以存储2^8=65536个数,例如当设定计算值为65536-50000=15536时,也就是计数器从15536开始计时,到65536溢出,产生中断,对于晶振频率为12MHz的单片机来说,执行一个机器周期时长为1us,所以这里计时50000us,15536(D)转换为16进制是3CB0(H),此时TH0=3C,TL0=B0分别装入定时器即可,为了免除这些计算步骤,很多编程者采用"TH0=(65536-50000)/256;TL0=(65536-50000)%256",那么为什么要介入256呢?我们可以做一下运算,256(D)=0100(H),512(D)=0200(H),512(D)有两个256,所以高8位就是02,那么15536有多少个256?就是15536/256个,就相当于高8位有多少数值,商存入高8位,剩下的不足一个256,存入低8位,15536%256。
单片机定时器(65536-x)/256
单片机定时器计数原理及编程技巧
最新推荐文章于 2023-12-17 15:09:31 发布
本文详细介绍了单片机16位计数器的工作原理,通过实例解释了如何设置计数初值以实现特定时间的定时,以及如何利用16进制转换简化编程过程。在晶振频率为12MHz的单片机中,通过计算高8位和低8位的值来设定定时器,以达到计时50000us的目标。该方法通过将目标值除以256来确定高8位和低8位的数值,高8位存储商,低8位存储余数,从而避免复杂的计算步骤。
1587

被折叠的 条评论
为什么被折叠?



