搜索

51单片机定时器2的最短定时时间怎么有限制?

gecimao 发表于 2019-08-25 09:39 | 查看: | 回复:

  晶振是12MHZ的,12分频,按道理计数器应该是每1微秒自加一次,那么理论上最小定时时长也应该是1微秒,考虑中断等等CPU干别的事要花些时间,我想那么定时定个20微秒也应该不是问题吧。...

  晶振是12MHZ的,12分频,按道理计数器应该是每1微秒自加一次,那么理论上最小定时时长也应该是1微秒,考虑中断等等CPU干别的事要花些时间,我想那么定时定个20微秒也应该不是问题吧。

  我写了程序发现定时时长在250微秒(65536UL-250)以上,烧到板子上观察都是准的(我的观察方法是:定时每250微秒中断,中断4000次的时候数码管加一,看数码管是不是每隔一秒加一,结果的确是的)。

  但是再想把定时时长改短,不管怎么改短(比如65536UL-200)时长都不会再变短,这不科学啊!

  如果中断频率最高只能到4KHz(即最短定时时长只能在250微秒),那么这个性能是没法达到我的要求的,我要用它产生方波信号,驱动开关电源的。急求各位大侠解决方案!

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部51单片机定时器,晶振是12MHZ、12分频,理论上最短定时时间1微秒,

  但是,CPU 运行指令 需要时间,只要中断服务程序 的运行时间 不超过定时器 定时时间,

  用 C 语言编程,有可能 定时时间 过短 会有问题,有不好 计算中断用去多少时间。

  如果用 汇编语言 编程,晶振是12MHZ、12分频,只是产生一个方波信号,30KHz 频率没有问题。

  一般编程时, 在中断 服务程序中 尽量少占用时间,能不在中断服务程序中处理的 事尽量 不在

  中断服务程序中 处理。追问单纯的数码管动态显示又没有software delay.还没干正事呢,只是用数码管检测一下定时器就出问题了追答其实 数码管动态显示,也可以用定时器 来完成,如 8 个 数码管,定时 2 - 2.5 mS,

  每次定时器中断 扫描显示 一 位数码管,8 次中断 16 - 20 mS 完成 8 个数码管的显示。

  知道合伙人软件行家采纳数:14882获赞数:28023国家科技进步奖向TA提问展开全部应该是你的中断服务程序有问题,占用时间可能太多,超过定时时间了,因此可能造成不准的情况,贴上你的定时中断程序看看,还有最好在定时程序里赋值时先作如下处理:

  展开全部1微秒是每条汇编指令需要的时间,定时器中断涉及到了压栈寻址出栈等操作,天知道用了多少条汇编指令,你定个20微妙当然有问题,程序还有别的事情干,比如数码管显示(这玩意儿也很耗时),不能光响应你的中断去了。。。

  不过如果你只是想输出高频方波信号的话,我建议你不要用定时器,直接在主程序里面加循环,除去必须的代码后,根据需要的频率增加不同数量的_nop_指令,这个应该能达到更高的频率。

  如果你要提高定时精度,你可以增加晶振频率如:24MHZ,是不是能够解决你的问题

本文链接:http://kingstonflowers.net/dingshiqi/1088.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部