一、说明
单片机中“中断”处理主要是指单片机暂停当前主程序的执行,而去执行更重要或需急迫处理的事件请求的处理程序,处理完成后,再回到主程序暂停处继续执行。这个事件叫“中断源”,发出的中断信号叫“中断请求”,事件处理程序叫“中断处理程序”或“中断服务程序”,暂停主程序的程序位置叫“断点”。
中断技术主要用于实时监测与控制,避免单片机CPU花大量的时间去查询和判断需要处理的事件是否发生。有了中断系统,CPU就可以减少大量的查询时间而去处理其他工作,当事件发生提出处理要求,单片机能及时地响应中断请求源提出的服务请求,并快速响应与及时处理。
单片机对于中断的处理是由中断响应和中断服务二个部分组成。中断响应主要由单片机硬件实现,中断服务主要由软件(中断服务程序)完成。
一个中断源中断请求被响应,须满足以下必要条件:
- (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。
- (2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。
- (3)该中断的中断允许位=1,即该中断被允许。
- (4)无同级或更高级中断正在被服务。
中断响应就是CPU对中断源提出的中断请求的判断和处理,只有满足上述条件时,就进行中断响应。
用开发装置上完成外部中断实验。采用矩阵式键盘的某列按键作为外部中断源,对二个以上外部中断事件,用Proteus仿真实现同时使用二个外部中断引脚的中断仿真实验。编程实现以下功能:
- INT0具有比INT1高的优先权
- INT0中断1次高4位灯亮、2次低4位灯亮、3次灯全暗,如此循环往复
- 在INT0中断3次到下一轮1次之间,允许INT1中断,其他时间不允许INT1中断
- 在允许INT1中断时,LED以二进制形式显示INT1中断次数
二、重点
- 单片机中断系统及其控制方法
- 单片机中断系统的实际应用
三、实现
#include <reg52.h> #include <intrins.h> #define uchar unsigned char sbit P26=P2^6; uchar count,count1; void main( ) { EA=1; EX0=1; EX1=0; IT0=1; IT1=1; IP=0x01; P0=0; P26=1;P26=0; while(1) { if(count==1){P0=0xf0;P26=1;P26=0;EX1=0;count1=0;} if(count==2){P0=0x0f;P26=1;P26=0;} if(count==3){P0=0x00;P26=1;P26=0;count=0;EX1=1;} } } void int0_isr(void) interrupt 0 { count++ ; } void int1_isr (void) interrupt 2 { count1++; P0=count1;P26=1;P26=0; }
四、下载