以程序为例:
#include<reg52.h>
sbit led=P3^0;
void main()
{
IT0=1; //设置外部中断0的触发方式为下降沿
EX0=1; //开启外部中断0
//中断的设置,首先设置中断的触发方式,再设置开启终端,最后开启总中断。
IT1=1; //设置外部中断1的触发方式为下降沿 //顺序保证:最后开启总中断
EX1=1; //开启外部中断1
EA =1; //总中断开关
while(1)
{
P0=0xaa;
P0=0xff;
}
}
void EX0_ISR(void) interrupt 0
{
led=~led;
}
void EX1_ISR(void) interrupt 2 //外部中断1的中断在此为2!!!!
{
led=~led;
}
对于中断的理解:单片机中断和Java、Android中的线程有些像。中断的使用:首先要声明、设置中断服务,在此以外部中断0和1作解。首先要设置中断的触发方式,再设置中断的开启,最后再设置中断的总开关。IT0=1和IT1=1分别设置外部中断0的触发方式低电平触发也就是下降沿触发,同理IT1的触发方式也是如此。EX0=1和EX1=1是设置外部中断0和外部中断1都开启。EA=1是设置开启中断的所有开关。
以上是对中断的声明与设置。完成以上步骤要写中断响应服务。即代码中:
void EX0_ISR(void) interrupt 0
{
led=~led;
}
void EX1_ISR(void) interrupt 2 //外部中断1的中断在此为2!!!!
{
led=~led;
}
所谓的低电平触发是说的单片机上INT0与INT1变为低电平时侯。
也就是当开关按下的时候。
我在这一部分中容易犯得错误就是中断初始化那三行代码记的不熟悉。
IT0=1;
EX0=1;
EA=1;