中断的定义:在CPU在执行一个程序时,对系统发生的某个事情,作出一种反应:CPU暂停正在执行的程序,保护现场后自动转去处理相应的事件,处理完该事情,到会返回刚才的位置。
例子:如读盘,盘有问题,无法读,产生中断,解决后,程序恢复,软件错误也会中断。
特点:
1) 中断随机的,提高实时性。
2) 中断是可恢复的
3) 中断是自动进行处理的
中断源
把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。
(1)外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。
(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。由计算机硬件异常或故障引起的中断,也称为内部异常中断。
(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。
(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。
(5)程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等。
中断号
中断是指在CPU运行期间,被CPU内部或外部事件所打断、暂停当前程序的执行而转去执行一段特定的处理内部或外部时间程序的过程。
外部设备
进行I/O操作时,会随机产生
中断请求
信号。这个信号中会有特定的标志,使计算机能够判断是哪个设备提出中断请求,这个信号就叫做中断号。
中断服务函数
1,中断函数与普通函数相比要注意在入口屏蔽一些中断,在出口恢复,防止中断函数在处理重要工作中,又被中断重入,导致处理异常。
2,中断函数还要注意在入口保存重要的寄存器状态,特别是函数中用到的寄存器,在出口恢复,防止中断函数结束后给正常程序带来异常。
3,普通函数相当于子程序,完全可以写到主函数里面去。
4,中断函数一般是和硬件相关联,在一定条件下才跳转进入的函数,这也是中断两字的来历------中断现在正在进行的程序,执行中断函数。
5,中断函数需要预先设定中断条件。在嵌入式上,可以是硬件上的定时器技术溢出,或者是中断引脚电平的跳变,在PC上也可以是一些特定的事件的发生,比如鼠标的单击,键盘某个按键的按下,等等。
2,中断函数还要注意在入口保存重要的寄存器状态,特别是函数中用到的寄存器,在出口恢复,防止中断函数结束后给正常程序带来异常。
3,普通函数相当于子程序,完全可以写到主函数里面去。
4,中断函数一般是和硬件相关联,在一定条件下才跳转进入的函数,这也是中断两字的来历------中断现在正在进行的程序,执行中断函数。
5,中断函数需要预先设定中断条件。在嵌入式上,可以是硬件上的定时器技术溢出,或者是中断引脚电平的跳变,在PC上也可以是一些特定的事件的发生,比如鼠标的单击,键盘某个按键的按下,等等。
6,中断服务程序的入口地址是相对固定的,而普通的功能程序入口则是随意设置的,此外,中断服务程序的调用方式也不同于普通的功能程序,中断服务程序的调用是靠中断申请信号,而非普通的程序。
中断标志位
1、一般来说单片机的中断发生有两个条件,一是中断标志位置位,二是中断允许,如果这两个条件都满足则进入中断,因为正常情况下中断一直是允许的,那么只能通过标志位来区分是否有中断挂起,
2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况
3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。
2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况
3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。
4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,如果在这之前已经清零标志位那么中断结束后会再进入一次该中断,如果这时还没有清除中断标志位,则
第二个1毫秒中断无效。
中断请求
"紧急事件"须向处理器提出申请(发一个电脉冲信号),要求"中断",即要求处理器先停下"自己手头的工作"先去处理"我的急件",这一"申请"过程,称--中断请求。
中断处理
从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。 为了解决这个矛盾,我们提出了中断传送方式,即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。 能够向CPU发出中断请求的设备或事件称为中断源。而对其的处理方式即中断处理
现场保护
保护现场就是:当出现中断时,把CPU现在的状态,也就是中断的入口地址保存在寄存器中,随后转向执行其他任务,当任务完成,从寄存器中取出地址继续执行。保护现场其实就是保存中断前一时刻的状态不被破坏。
现场恢复