中断是为使CPU具有对外界紧急事件的实时处理能力而设置的
当CPU正在处理某件事时,外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后,再回到原来被中断的地方,继续原来的工作,这个过程被称为中断
中断程序流程
左侧图:在主程序执行期间,发现有中断请求到来,会先打个断点,然后进行中断响应,执行
中断处理程序
,完成后返回断点,继续执行主程序
右侧图:以程序地址空间的形式展示处理中断的过程,发生中断时,会跳转到中断处理程序的地址空间
,执行完再跳转回主程序的地址空间
中断资源
中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3)
中断优先级个数:4个
如果使用C语言编程,中断查询次序号就是中断号
其中 Timer0_Routine(void)
为定时器T0的中断处理函数,中断号为1,Timer1_Routine(void)
为定时器T1的中断处理函数,中断号为3,以此类推
注意
:中断资源和单片机型号是关联在一起的,不同型号可能会有不同的中断资源,例如中断资源个数不同,中断优先级个数不同等
如下是一个较为简单的中断结构图
,只有两个优先级
左侧的INT0
和 INT1
为外部中断0和1,T0
和 T1
为定时器中断0 和 1
可以看到,要想让中断启用,还需要连通电路。例如想让定时器中断0启动,还需要将ET0 = 1
, EA = 1
,PT0选择一个优先级,0或1都可