标题: 单片机定时器赋值问题 [打印本页]

作者: 李冬    时间: 2021-7-13 10:00
标题: 单片机定时器赋值问题
12M晶振,16位定时器
        
已知  10微秒  65416
Y等于2,算20微秒的定时器赋值,有什么简单,不占单片机计算量的算法吗
20微秒超过INT范围怎么办

        TL1 =(65536-(uint)(65416*y))%256;                //设置定时初始值
        TH1 =(65536-(uint)(65416*y))/256;                //设置定时初始值


作者: hoodieboi    时间: 2021-7-13 11:46
12M晶振 10微秒 应该是TH1=(65536-10)%256;TL1=(65536-10)/256;
作者: hoodieboi    时间: 2021-7-13 11:49
定时20微秒 TH1=(65536-20)%256;TL1=(65536-20)/256;
作者: IdeaMing    时间: 2021-7-13 12:19
超过就一直中断,不能太短!
作者: dzbj    时间: 2021-7-13 13:20
这种赋值为什么一定要去片子去算呢 不如自己在电脑上用excel算好做个表 结果用code写在片子里 当需要改变的时候直接读code不好吗 不是单片机不能干 但乘除取整运算怎么都算耗费时间的运算尤其在中断里 毕竟单片机性能摆在那
作者: hz_dyg    时间: 2021-7-13 15:24
dzbj 发表于 2021-7-13 13:20
这种赋值为什么一定要去片子去算呢 不如自己在电脑上用excel算好做个表 结果用code写在片子里 当需要改变的 ...

编译器会替MCU做
作者: robinsonlin    时间: 2021-7-13 18:11
短于100us的定时器中断都要慎用, 占用资源太严重了。 如果是要做PWM,尽量用硬件PWM来做。
作者: dzbj    时间: 2021-7-14 00:34
hz_dyg 发表于 2021-7-13 15:24
编译器会替MCU做

这种直接赋值的编译器也做么 那编译器怎么区分是算法还是值
作者: 苏庆波    时间: 2021-7-14 08:40
sic里有快捷生成定时器
作者: hz_dyg    时间: 2021-7-14 09:45
dzbj 发表于 2021-7-14 00:34
这种直接赋值的编译器也做么 那编译器怎么区分是算法还是值

你能想到的,做编译器的人应该比我们都厉害!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1