【关于单片机的中断处理机制】

转发于 stupidx

1. 什么是中断?

当CPU执行程序时,由于发生了某种随机的事件(内部或外部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),处理完后又返回到被中断的程序继续执行,这一过程称为中断。

例如:在看电视时,突然妈妈让我去买瓶酱油,于是我先将电视关闭,跑下楼去买了瓶酱油,拿回来交给妈妈,然后回到原位置将电视打开,继续看电视。

在这个例子中,妈妈的指令就相当于是中断机制中的中断请求,而买酱油则相当于是中断服务程序,将酱油买回并交给妈妈便是处理完这一事件,继续看电视相当于返回原程序继续执行。

1.1 为什么要使用中断(中断的特点)

为什么要使用中断,这个问题就不得不先了解一下单片机另一种处理方式轮询。

轮询是指在单片机中每隔一段时间,对某一事件进行一次检查。就比如我在等快递,于是我每隔5分钟开门查看一次,而这样的行为实际是十分浪费时间和精力的。

而中断只需在特定的情况下执行。也就是说我无需每隔5分钟就开一次门去等待快递,只需等待快递小哥敲门,我再去开门拿快递即可。如此就不会耗费大量的时间和精力。

1.2 什么是中断源?

可以触发中断发生的事件,称为中断源。

1.2.1中断源有哪些

中断源可分为可屏蔽中断源和不可屏蔽中断源。而存在这两种分类的原因是因为有着中断允许控制位的存在,当将中断允许控制位I设定为**“中断禁止”时,CPU将不再响应**可屏蔽中断,但仍然会响应不可屏蔽中断。

可屏蔽中断源:

  • 内部中断源:定时器中断、串行通信中断等

  • 外部中断源:外部引脚IRQ0 - IRQ7

不可屏蔽中断:

  • 内部中断源:振荡器中断,WDT中断等
  • 外部中断源:外部引脚NMI
  • 软件中断源:利用软件指令,产生中断请求。

2. 中断机制的流程

中断流程:
(1)发生中断请求
(2)保护现场:将PC、PSW寄存器压入栈中【入栈操作】
(3)获取中断服务程序起始地址,放入到PC寄存器中
(4)执行程序
(5)恢复现场:将PC、PSW等数据出栈,继续执行被打断的程序

3. 中断优先级

3.1 多个中断同时发生

在多个中断同时发生时,有两种情况

1、 相同中断优先级情况下,优先处理中断号小的中断服务程序
2、中断优先级高的优先执行

3.2 中断嵌套

中断嵌套是指当中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出了中断请求,这时会暂时中止当前正在执行的级别较低的中断源的中断服务程序,去处理更高级别的中断源,待处理完毕后,再返回到被中断的中断服务程序中继续执行。
也可以简单的理解为更高一级中断的“加塞”。如同普通加急与紧急加急之间的关系。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值