单片机外部中断详解 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
一.外部中断相关寄存器
1.定时器/计数器控制寄存器控制寄存器(TCON)?
?
IT0:外部中断0触发方式控制位?
当IT0=0时,为电平触发方式(低电平有效)?
当IT0=1时,为边沿触发方式(下降沿有效)?
IT1:外部中断1触发方式控制位?
当IT1=0时,为电平触发方式(低电平有效)?
当IT1=1时,为边沿触发方式(下降沿有效)
2.中断允许控制寄存器(IE)?
?
EX0:外部中断0允许位;?
EX1:外部中断1允许位;?
EA :CPU中断允许(总允许)位。
二.外部中断的处理过程
1、设置中断触发方式,即IT0=1或0,IT1=1或0?
2、开对应的外部中断,即EX0=1或EX1=1;?
3、开总中断,即EA=1;?
4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断?
5、中断响应,执行中断服务函数
三.程序编写
要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。
?
目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。
#include<reg51.h>#define uint unsigned int #define uchar unsign ed char uchar code dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90};uint num;
void main()
{
EA=1; //开总中断
IT0=1; //下降沿触发
IT1=0; //低电平触发
EX0=1; //外部中断0允许
EX1=1; //外部中断1允许
while(1)
{
P0=dat[num%10];
}
}
void plus() interrupt 0???? //外部中断0
{
EX0=0;
num++;
EX0=1;
}
void minus() interrupt 2?? //外部中断1 {
EX1=0;
num--;
EX1=1;
}。