打印
[51单片机]

单片机中断程序运行时间的疑惑

[复制链接]
4392|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyj317|  楼主 | 2014-4-7 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟最近看一个MP3的源代码程序,我有一个很大的疑惑:
该程序中有多个中断,其中主要的中断是Timer1,Timer1_isr里面要处理很多任务(按键扫描,显示,设备检测,灯闪烁,等等)1ms中断一次(系统时钟频率是24MHZ),我想问的是
先不管其他中断,就这个Timer1中断1ms之内能处理得了这么多任务吗?(当然还有其他如Timer2中断,UART中断)
希望能人异士能帮小弟解惑,谢谢

相关帖子

沙发
wangch_sh| | 2014-4-7 16:57 | 只看该作者
如果1MS处理不完,那么就是中断一次程序还没执行完,又来一次中断,堆栈就会溢出,程序就会乱掉。
如果程序运行正常,那么就是说1MS可以处理完。

使用特权

评论回复
板凳
专注于嵌入式| | 2014-4-7 21:48 | 只看该作者
中断里面有标志位的。每次进入中断,判断标志位。比如8件事情。用变量n,每次进入,n++;判断N来决定处理不同的任务:lol

使用特权

评论回复
地板
ayb_ice| | 2014-4-8 07:13 | 只看该作者
这点任务应该是没有问题的,1MS一般只处理其中一个状态而已

使用特权

评论回复
5
tou007| | 2014-4-8 08:40 | 只看该作者
估算一下中断函数的指令执行最大时间不久可以解决疑问?

使用特权

评论回复
6
lyj317|  楼主 | 2014-4-8 10:57 | 只看该作者
各位大哥,中断函数里面做的任务不是设标志位这么简单,我看起来都大概有上千行代码了(以往的程序是在主循环里面处理任务,这个程序是把任务处理放在了中服务里面了

使用特权

评论回复
7
lanmp| | 2014-4-8 11:05 | 只看该作者
lyj317 发表于 2014-4-8 10:57
各位大哥,中断函数里面做的任务不是设标志位这么简单,我看起来都大概有上千行代码了(以往的程序是在主循 ...

ls不是有人说了么,这几千行代码不一定每次都要执行,总有些判断之类的吧。这是51么?要是单指令周期的MCU,1ms够24000条指令的了。

使用特权

评论回复
8
ningling_21| | 2014-4-8 11:13 | 只看该作者
lyj317 发表于 2014-4-8 10:57
各位大哥,中断函数里面做的任务不是设标志位这么简单,我看起来都大概有上千行代码了(以往的程序是在主循 ...

不是每次中断都把上千行都执行一遍的...

使用特权

评论回复
9
coody| | 2014-4-8 11:30 | 只看该作者
wangch_sh 发表于 2014-4-7 16:57
如果1MS处理不完,那么就是中断一次程序还没执行完,又来一次中断,堆栈就会溢出,程序就会乱掉。
如果程序 ...

中断执行不完也不会乱的,就是丢失中断而已。

使用特权

评论回复
10
crazyfool| | 2014-4-8 13:45 | 只看该作者
搞不懂,为什么在中断中处理这些“任务”呢?
我认为的基本原则是:中断isr必须短小精悍!

使用特权

评论回复
11
受不了了| | 2014-4-8 16:01 | 只看该作者
crazyfool 发表于 2014-4-8 13:45
搞不懂,为什么在中断中处理这些“任务”呢?
我认为的基本原则是:中断isr必须短小精悍! ...

嗯,楼主列举的那几样没一个非得放中断里处理,都是一些不要紧的任务

使用特权

评论回复
12
江枫渔火| | 2014-4-8 18:09 | 只看该作者
用中断是对的。这个程序的精髓就是用好定时器。不要学人家到处delay,玩不转的。程序一大,就哭了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lyj317 + 1 很给力!
13
lyj317|  楼主 | 2014-4-8 18:56 | 只看该作者
谢谢各位大哥的指导,今天小弟在中断开始出在空闲IO口输出高电平,结束处输出低电平,然后用示波器看了一下,发现每次中断运行的时间最多不超过0.2ms,所以这中断是没问题的,我真是吃精啊,一个中断服务里面有上千行代码,运行起来竟然只需要零点毫秒,这跟教材上说的中断服务尽量短小背道而驰啊,不过这种程序构架,在能正常运行的情况下还是不错的

使用特权

评论回复
14
dj狂人| | 2014-4-8 20:23 | 只看该作者
江枫渔火 发表于 2014-4-8 18:09
用中断是对的。这个程序的精髓就是用好定时器。不要学人家到处delay,玩不转的。程序一大,就哭了 ...

使用特权

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

本版积分规则

5

主题

17

帖子

0

粉丝