永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-11-21 12:11
  • 提问者网友:浪荡绅士
  • 2021-11-20 15:06
51单片机定时器2的最短定时时间怎么有限制?
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-11-20 15:25
51单片机定时器,晶振是12MHZ、12分频,理论上最短定时时间1微秒,
但是,CPU 运行指令 需要时间,只要中断服务程序 的运行时间 不超过定时器 定时时间,
并且 有些余量,则就不成问题,如果没有余量,则中断结束 又进入 中断,
如果 超过定时器 定时时间,则来不及 处理 定时也就不准确了。
用 C 语言编程,有可能 定时时间 过短 会有问题,有不好 计算中断用去多少时间。
如果用 汇编语言 编程,晶振是12MHZ、12分频,只是产生一个方波信号,30KHz 频率没有问题。
当然你要检测 准确性 加入计数程序后 会占用时间,
一般编程时, 在中断 服务程序中 尽量少占用时间,能不在中断服务程序中处理的 事尽量 不在
中断服务程序中 处理。追问单纯的数码管动态显示又没有software delay.还没干正事呢,只是用数码管检测一下定时器就出问题了追答其实 数码管动态显示,也可以用定时器 来完成,如 8 个 数码管,定时 2 - 2.5 mS,
每次定时器中断 扫描显示 一 位数码管,8 次中断 16 - 20 mS 完成 8 个数码管的显示。
全部回答
  • 1楼网友:旧脸谱
  • 2021-11-20 19:16
这个单片机不是传统的51单片机,时钟比传统51的时钟要快12倍,仔细看芯片资料...追问要是快的话,定时时长应该可以更短追答你说的对
  • 2楼网友:上分大魔王
  • 2021-11-20 18:28
应该是你的中断服务程序有问题,占用时间可能太多,超过定时时间了,因此可能造成不准的情况,贴上你的定时中断程序看看,还有最好在定时程序里赋值时先作如下处理:
TR2=0;
赋值
TR2=1;
  • 3楼网友:woshuo
  • 2021-11-20 17:14
如果你要提高定时精度,你可以增加晶振频率如:24MHZ,是不是能够解决你的问题追问如何提高?百度过,没谁说的清楚,买个快的?追答增加晶振频率如:24MHZ,买个快的
  • 4楼网友:愁杀梦里人
  • 2021-11-20 15:39
1微秒是每条汇编指令需要的时间,定时器中断涉及到了压栈寻址出栈等操作,天知道用了多少条汇编指令,你定个20微妙当然有问题,程序还有别的事情干,比如数码管显示(这玩意儿也很耗时),不能光响应你的中断去了。。。
如果用中断还想有一定的精度的话一般单片机的话10~20k就到顶了。
不过如果你只是想输出高频方波信号的话,我建议你不要用定时器,直接在主程序里面加循环,除去必须的代码后,根据需要的频率增加不同数量的_nop_指令,这个应该能达到更高的频率。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯