找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2846|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机为什么保护现场前要关CPU中断?

[复制链接]
跳转到指定楼层
楼主
ID:50910 发表于 2021-11-12 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在李朝青所编《单片机原理及接口技术》P113页讲到,中断服务子程序中在保护现场和恢复现场前应关中断,完成后再开中断。为什么呢?
我个人认为,在保护现场和恢复现场的中间,即使被更高一级的中断打断,因为在这更高一级的中断中也有保护现场和恢复现场的操作,它不会改变上一次中断的现场数据,为什么还要关中断呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-11-12 12:22 | 只看该作者
这本书没看过, “中断服务子程序中在保护现场和恢复现场前应关中断” 中的  中断子程序 是 中断程序本身? 还是 中断程序 另外 调用的子程序?   其中举例用的单片机,又是什么单片机?  编程的语言 又是什么?

如果 51 单片机  用 KEIL C 编程的话,  那么,在中断响应后,“保护现场” 之前, 你是没有任何手段去 关闭中断的。  如果汇编编程的话,  虽然可以在 “保护现场” 之前 关中断,但是 只要这个“现场”不牵涉到  DPTR , 是没有必要关中断的。 只有 姚老板的 STC15 系列的 11年~13年的部分产品(具体就不点名了),才会需要 关中断。不然会跑飞。
回复

使用道具 举报

板凳
ID:429003 发表于 2021-11-12 12:59 | 只看该作者
发生中断保护现场的过程,CPU需要执行多步操作(有多个寄存器需要入栈保存),无法在一个指令周期完成全部入栈操作。CPU执行这个过程时不能被高优先级中断打断,否则现场被破坏程序会跑飞。
回复

使用道具 举报

地板
ID:401564 发表于 2021-11-12 14:28 | 只看该作者
现场保护:主要是把一些会有可能会被中断内部改变,或者是中断内部在使用到的数据保存起来,比如8051的CY(C标志位),这个CY在8051的很多计算中都要用到,如果在主程序中用到,在中断中也要用到,那么,如果不保存起来,中断中改变了CY,等到中断返回之后,主程序中的计算就会出错

恢复现场:就是把保存的数据恢复

至于执行中断时要关闭中断,在8051中是没有必要的,因为8051是软件堆栈.
除非你中断设计得非常不合理,比如:定时器2需要1秒时间来完成中断操作,但你又开启了定时器1,10mS中断时间,定时器1的中断等级设定成比定时器2高,这样一来,在执行定时器2中断的时候,它就会不断的被定时器1中断打断,整个的定时器2中断时间可能很长,有时候程序都跑不动

对于其它的一般只有几层的硬件堆栈单片机来说,就要关闭中断,不然就会溢出,程序就跑飞了
回复

使用道具 举报

5#
ID:57657 发表于 2021-11-12 20:09 | 只看该作者
xstong 发表于 2021-11-12 12:59
发生中断保护现场的过程,CPU需要执行多步操作(有多个寄存器需要入栈保存),无法在一个指令周期完成全部 ...

多级中断嵌套,只要堆栈顺序正确是是不会跑飞的,除非堆栈溢出或数组越界,指针错误等。
回复

使用道具 举报

6#
ID:50910 发表于 2021-11-13 10:22 | 只看该作者
188610329 发表于 2021-11-12 12:22
这本书没看过, “中断服务子程序中在保护现场和恢复现场前应关中断” 中的  中断子程序 是 中断程序本身? ...

回答:1、是中断程序本身。2、8051单片机。3、汇编语言。
回复

使用道具 举报

7#
ID:980554 发表于 2021-11-13 11:16 | 只看该作者
设置 9 个按键,每个按键递进 10%,刚好
晶振选用11.0592,串口波特率一般采用9600
定时器内设置一个变量,用于控制占空比
回复

使用道具 举报

8#
ID:624769 发表于 2021-11-13 11:19 | 只看该作者
brucekang 发表于 2021-11-13 10:22
回答:1、是中断程序本身。2、8051单片机。3、汇编语言。

基于这个3个限定,结论是:

的确能在 中断程序保护现场前,关中断,但是,事实和你理解的一样,毫无必要, 需要在保护现场前关中断,只有2个可能。
1)单片机本身缺陷,目前只在姚老板的特定几个版本单片机上遇到过,其他牌子可以忽略这个问题。
2)编程者自身能力问题,无法“完美”的保护现场,还可能会破坏现场。(可能你看得这本书的作者属于这个情况。)
回复

使用道具 举报

9#
ID:420836 发表于 2021-11-15 09:01 | 只看该作者
在中断保护堆栈保存过程中,不得中断该过程。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表