一、说明
单片机中“中断”处理主要是指单片机暂停当前主程序的执行,而去执行更重要或需急迫处理的事件请求的处理程序,处理完成后,再回到主程序暂停处继续执行。这个事件叫“中断源”,发出的中断信号叫“中断请求”,事件处理程序叫“中断处理程序”或“中断服务程序”,暂停主程序的程序位置叫“断点”。
中断技术主要用于实时监测与控制,避免单片机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;
}
四、下载
详见:STC51单片机-多外部中断事件处理及应用-物联网应用系统设计项目开发
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)