关于中断状态保持的问题

2020-02-03 10:07发布

工作也有一段时间了,但是有时候很基础的问题搞得不是很清楚。

最近用STC的单片机,遇到这样一种情况,希望不是STC的问题:单片机的主程序的一部分在进行实时操作,不能被中断打断,所以自然的,加入关闭总中断予以保护。
但是呢,在关闭总中断的期间,如果有中断发生呢,事实上是需要记录中断状态的,稍后的时间内进行处理,而不是完全不理会此消息。

所以,小弟在此想问的是:
1、51中是不是有比较完美的解决关闭中断过程中,记录期间中断响应,之后可以再进入中断处理的方法;
2、其他的高级的单片机包括现在的M3等的,是不是可以做到这些。

谢谢大家
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
eduhf_123
1楼-- · 2020-02-04 16:01
BDXing6 发表于 2012-10-19 00:56
51中断逻辑:无论那类中断,到来时,相关中断标志置位。如果中断被关闭,则不会响应该中断,标志也不会被清除。因此,在打开中断允许后,仍然会产生中断。也就是中断挂起。但应该注意的是,如果中断关闭期间,来了两次中断,则打开中断允许后只会响应一次,对于用于计时或计数类的中断就可能会产生误差。


楼上说的基本上对,除了一种例外情况:当外部中断是电平触发时,如果中断信号的有效电平在开中断前就撤消了的话,那么这次中断请求是不会被响应的。

如果想不漏掉中断请求,那么要么使用边沿触发、要么在外部使用硬件锁存器来锁存中断请求信号。
hotfleet
2楼-- · 2020-02-04 20:06
zjk 发表于 2012-10-18 11:06
LZ为啥要关总中断?想关哪个就直接关了不就可以了么

是这样子的,有段时序的,至少要关闭定时器和串口两个中断,而事实上也就用了这两个中断。。
hotfleet
3楼-- · 2020-02-04 23:44
eduhf_123 发表于 2012-10-19 02:40
楼上说的基本上对,除了一种例外情况:当外部中断是电平触发时,如果中断信号的有效电平在开中断前就撤消 ...

感谢楼上两位了,看来是51的话,应该有所谓的中断挂起的,我的LED扫描是放在定时器里的,但是由于在有段需要开关中断的时序操作(时间不长,但是有点频繁),结果就是LED会时不时的抖动。有时间了做下试验验证下吧,可能和STC的单片机有关系,我一直不喜欢这个单片机。。
eduhf_123
4楼-- · 2020-02-05 05:19
 精彩回答 2  元偷偷看……

一周热门 更多>