单片机定时里 TH0=(65536-45872)/256; TL0=(65536-45872)%256; 这两句 为什么每算完一次就是50MS?
/256和%256 是用于计算TH,和TL的值。即高8位,和低8位。
要了解定时器计数一次是多久,例如:定时器对系统时钟计数,系统时钟周期1US,那么定时器1US计数一次。要计数1MS,那么就计数1000次,计算方法:
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
依次类推。
50MA定时初值应该是50000,但考虑到中断延迟,故把常数改为了45872。
前一个求商后赋值给TH0,后一个求余数赋值给TL0
相当于:
TH0=(65536-100)>>8,所以得到16位的高八位。
TL0=(65536-100)&0x00ff,所以得到16位的低八位。
TH0=(65536-100)/256 ;//这是定时100us时高8位的值。
TL0=(65536-100)%256;//这是定时100us时低8位的值。
扩展资料:
(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。
(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。
(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。
(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。
参考资料来源:百度百科-单片原理
原来如此 这个我搞懂了 但是我又不明白他得出来的数有什么用? 得到50ms的原因是什么? 就如(65536-50000)/256 得到的商是60 (65536-50000)%256 得到余数6875 那得到这些数据又有什么用?
“定时器0设置于模式1时,计数寄存器为16位模式,由高8位TH0和低8位TL0两个8位寄存器组成,”
*******“商存入高8位寄存器, 余下的数存入低8位即可,”**************你还是点开连接看看吧,肯定能看懂的。
这两条:
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
是对定时器T0,写入初始值。
(65536-45872)是什么意思 ?
65536 - 45872 = 19664,19664 是初始值。
/256和%256又是为什么 干什么用?
/256 是取 19664 的高八位;
%256 是取 19664 的低八位;
这两句,为什么每算完一次就是50MS?
这和单片机的晶振有关。
写入后,T0 即从 19664 开始加一,加了 45872 次,就会溢出,产生中断。
加了 45872 次,就是50MS?
这和单片机的晶振有关。
首先要了解定时器计数一次是多久,例如:定时器对系统时钟计数,系统时钟周期1US,那么定时器1US计数一次。要计数1MS,那么就计数1000次,计算方法:
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
依次类推。
50MA定时初值应该是50000,但考虑到中断延迟,故把常数改为了45872
广告 您可能关注的内容 |