定时器使用之中断程序大小问题?

2019-07-15 15:23发布

最开始使用单片机的时候,我们使用延时操作的时候使用一个延时函数,而这个函数是通过不断的循环,来消耗单片机的时间以此达到延时的目的。我们知道对于51来说,默认12MHz晶振。我们可以根据频率和时间的关系计算出麦种周期。 Tosc=1/12Mhz。 同时呢。我们的还知道运行一操作需要几个机器周几或者数个机器周期。而机器周期又时时钟周期的12倍。所以可以算出一个机器周期的时间为Tm=12*Tosc 。可以算出运行时间为1微秒。所以我们就是while(i--)while(j--);消耗时间。C语言的学习中我们写的一个程序时显示一个 hello word!  在单片机的最开始是通过点亮小灯。呵呵。 让小灯一闪一闪的。很有成就感。接着点亮2个 8个小灯,还玩出许多花样。这样就以为学会了单片机。开始自己动手做了一单片机控制许多个继电器。没想到成了。
那时还用的汇编,真的以为自己了不起。接着就在网上找了许多电路图和程序照着做。那时就那本事,现在还是那个本事。工作的原因完全与单片机不沾边,随后我辞了工作,又开始每天晚上学习单片机。
看到了数码管、独立按键、矩阵按键等等,看了一遍回过头再看了一遍这一边比上一次有所思考。鉴于专业背景与文化程度低的缘故学的很吃力。晚上看完第二天就忘了,就这样反反复复还是忘。
就这样,,,
学习就此中断在这里,写了这篇自我感想。而我正好在看定时器中断这块。思索着程序进入定时器中断程序后,如果中断程序很长。那么在这段时间中定时还在不在运行?如果在运行中,那么中断程序还没有运行完,又产生一个中断会发生什么问题。(写到这里才是我的疑惑所在希望各位给予解答)中断程序多长为好呢?会不会对时序产生影响
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
leidong043
2019-07-16 02:15
1522495332 发表于 2015-12-13 23:35
一般来说呢,不建议在中断函数里完成很复杂或耗时很久的操作,除非你主程序什么都不做,倒还可以考虑.
推荐的做法是,在中断函数里设置一些全局变量,主函数中去判断这个变量,然后处理.
为什么要这样做呢? 楼主自己也有思考过,如果前一个中断函数还没结束,又来一个中断请求,会发生什么问题? 回答这个问题就涉及到中断优先级和中 ...

看了你的解释,良心作答值得点赞。 非常感谢对我疑问的一一解答。

一周热门 更多>