C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?

来源:百度知道 编辑:UC知道 时间:2024/05/18 04:57:41
C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?

在51单片机中,定时器工作是从初值逐步累加直到溢出来申请中断,定时器是16位的寄存器,所以溢出值是65536,初值是溢出值减去需要延时的机器周期值,在这里是50000,而对256求模就是取初值的低8位

TL0 = (65536 - 50000) % 256
TL0 = (65536 - 50000) / 256
t = (12 / fos)* n, n为定时器初值,fos为晶振频率
解释:
65536 - 50000 = 15536
意思是说:从15536开始计数,总共累加50000次计数器产生一次溢出

写成二进制:
1 00000000 00000000 - 11000011 01010000 = 00111100 10110000
256 = 1 00000000
(65536 - 50000) % 256 意思就是15536除掉高八位余下的余数也即TL0

再拿十进制举个例子:
2543 % 100 = 43,2543 / 10 = 25 就是有25个10

就是这个意思,慢慢想一下就应该明白了