外部中断是
单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的
中断系统将迫使
CPU暂停正在执行的
程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
单片机在自主运行时一般是在执行一个死循环程序,在没有外界干预(输入信号)时它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律自主运行并通过输出设备(如
液晶显示屏)把时间显示出来。在不需要对它进行调校时它不需要外部干预,自主封闭地运行。如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。但事情往往不会如此简单,在
时钟刚刚上电或时钟需要重新校准.甚至时钟被带到不同时区的时候,就需要重新对时钟进行调校,这时就要求时钟必须具有调校功能。因此单片机系统往往又不会是一个单纯的封闭系统.它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原因。
在没有干预的情况下,单片机的程序在封闭状态下自主运行,如果在某一时刻需要响应一个外部事件(比如有按键按下),这时就会用到外部中断。具体来讲,外部中断就是在单片机的一个引脚上,由于外部因素导致了一个电平的变化(比如由高变低),而通过捕获这个变化,
单片机内部自主运行的程序就会被暂时打断,转而去执行相应的中断处理程序,执行完后又回到原来中断的地方继续执行原来的程序。这个引脚上的
电平变化,就申请了一个外部中断事件,而这个能申请外部中断的
引脚就是外部中断的触发引脚。
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置两个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置“1”。
在挂起寄存器的对应位写“1”,将清除该
中断请求。如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置两个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置“1”。通过在软件中断/事件寄存器写“1”,也可以通过软件产生中断/事件请求。
若外部中断定义为电平触发方式,外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的
电平变化而变化,这能提高CPU对外部中断请求的响应速度。当外部
中断源被设定为电平触发方式时,在
中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。所以电平触发方式适合于外部中断以
低电平输入而且中断服务程序能清除外部中断请求源(即外部中断输入电平又变为高电平)的情况。
外部中断若定义为跳沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变。即便是CPU暂时不能响应,中断申请标志也不会丢失。在这种方式里,如果相继连续两次采样,一个机器周期采样到外部中断输入为高,下一个
机器周期采样为低,则置“1”中断申请触发器,直到CPU响应此中断时才清’0’。这样不会丢失中断,但输入的负脉冲宽度至少保持12个
时钟周期(若晶振频率为6MHz,则为21xs),才能被CPU
采样到。外部中断的跳沿触发方式适合于以负脉冲形式输入的外部中断请求。
(1)实时处理功能:在实时控制中,现场的各种参数、信息均随时问和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请.请求CPU及时处理中断请求,如中断条件
(2)故障处理功能:针对难以预料的情况或故障,如
掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。
(3)分时操作:中断可以解决快速的
CPU与慢速的外设之问的矛盾,使CPU和外设同时工作。CPU在启动外设工作后继续执行主程序,同时外设也在工作。每当外设做完一件事就发出中断申请,请求CPU中断它正在执行的程序,转去执行
中断服务程序(一般情况是处理输入/输出数据),中断处理完之后,CPU恢复执行主程序,外设也继续工作。这样,CPU可启动多个外设同时工作,大大地提高其效率。