打印
[国产单片机]

求余数不是%才对吗?还有TH0和TL0寄存器设置怎么都是256-t

[复制链接]
1491|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
ayb_ice| | 2020-6-28 15:41 | 只看该作者
原因是向上计数

使用特权

评论回复
板凳
coody| | 2020-6-28 16:09 | 只看该作者
MOD就是求余运算。满溢出重装,所以要256-t。

使用特权

评论回复
地板
AVRx007| | 2020-6-28 18:08 | 只看该作者
向上计数

第一个是16位

第二个例子是8位  

使用特权

评论回复
5
QWE4562009|  楼主 | 2020-6-28 18:46 | 只看该作者
coody 发表于 2020-6-28 16:09
MOD就是求余运算。满溢出重装,所以要256-t。

把高位TH0的初值赋给TL0怎么理解这个。高位的值给低位,抽象

使用特权

评论回复
6
coody| | 2020-6-28 20:55 | 只看该作者
QWE4562009 发表于 2020-6-28 18:46
把高位TH0的初值赋给TL0怎么理解这个。高位的值给低位,抽象

就是溢出时自动将TH0的值送给TL0,非常简单的道理哦。

使用特权

评论回复
7
QWE4562009|  楼主 | 2020-6-29 09:43 | 只看该作者
coody 发表于 2020-6-28 20:55
就是溢出时自动将TH0的值送给TL0,非常简单的道理哦。

就是TL0 8位计数,计数最大值为256,如果计数达到256就溢出了,这时硬件会自动把TH0的值赋给TL0------------TLO都满了  TH0再赋值给TL0那岂不是更加溢出了吗

使用特权

评论回复
8
wsmysyn| | 2020-6-29 09:57 | 只看该作者
本帖最后由 wsmysyn 于 2020-6-29 10:00 编辑
QWE4562009 发表于 2020-6-29 09:43
就是TL0 8位计数,计数最大值为256,如果计数达到256就溢出了,这时硬件会自动把TH0的值赋给TL0--------- ...

还没理解呢,

赋值,不是加法,也不是减法,就是把值拷贝过去覆盖掉,还不懂,真的建议去看看数字电路基础,和单片机原理,微机原理与应用,C语言,或者汇编,这几本教材。。虽然老,但是很经典。。


使用特权

评论回复
9
AVRx007| | 2020-6-29 12:10 | 只看该作者
QWE4562009 发表于 2020-6-29 09:43
就是TL0 8位计数,计数最大值为256,如果计数达到256就溢出了,这时硬件会自动把TH0的值赋给TL0--------- ...

初始化程序 和 中断程序 ,你能分清么?

8位自动装载模式
初始化时 TH0设定时值, TL0也要手动置初值啊,
中断时无需手动重置,因为这个是自动装载模式,自动把TH0-->TL0


16位才是全手动模式 中断里面也是TH0/TL0都得自己填,

使用特权

评论回复
10
oufuqiang| | 2020-6-29 14:31 | 只看该作者
从125开始数

126
127
...
254
255

溢出

从125数起

这样还不懂就难搞了。

使用特权

评论回复
11
coody| | 2020-6-30 00:24 | 只看该作者
QWE4562009 发表于 2020-6-29 09:43
就是TL0 8位计数,计数最大值为256,如果计数达到256就溢出了,这时硬件会自动把TH0的值赋给TL0--------- ...

举个栗子!
比如TH0 = 256 - 100 = 156。
当TL0计到255,再来一个时钟,就变0,溢出,同时将TH0的156装到TL0,明白了吧?什么叫重装?

使用特权

评论回复
12
linxi6414| | 2020-7-1 21:10 | 只看该作者
现在举一个形象的例子说明一下,如果单片机的时钟为1HZ,需要定时5秒,假如TL0的空间为25,那么就先往TL0里装20个珠子,剩下的5个珠子,由单片机一秒装一个,当装满25个时,产生中断,再往里先装20个后,再一个一个往里装,周而复始,每次装满的时间就是5秒钟,也就是说,时间如果越长,就需要往里装的珠子越少,如果时间越短,就需要往里装越加多的珠子,这样说你可能明白?
所以算时间应该是25减你要的时间,就是要往里装的珠子的个数。这样说明白了没有?


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

931

主题

2843

帖子

22

粉丝