/*********************************************************************************************
程序名: 外部中断程序实例
编写时间: 2009年9月24日
硬件支持: STC12C2052AD 外部12MHZ晶振
接口说明:
修改日志:
NO.1-
/*********************************************************************************************
说明:
两个按键分别控制LED灯的开关。
INT0接口的按键按下时开灯。
INT1接口的按键按下时关灯。
/*********************************************************************************************/
#include <STC12C2052AD.h> //51头文件
sbit LED = P1 ^ 0; //定义LED灯
unsigned int a=50000;
//注:外部中断固定与P3.2和P3.3复用,无需定义这两个接口。
/*********************************************************************************************
函数名:外部中断INT初始化函数
调 用:INT_init();
参 数:无
返回值:无
结 果:启动外部中断INT1、INT0中断,设置中断方式
备 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中断总开关
// EX1 = 1; //允许外部中断1中断
EX0 = 1; //允许外部中断0中断
// IT1 = 1; //1:下沿触发 0:低电平触发
IT0 = 1; //1:下沿触发 0:低电平触发
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:外部中断INT0中断处理程序
调 用:[外部引脚INT0中断处理]
参 数:无
返回值:无
结 果:用户处理外部中断信号
备 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切换寄存器组到2
//LED = 1; //开灯
PCON=~PCON;
}
/**********************************************************************************************/
/*********************************************************************************************/
void main(void){
INT_init(); //外部中断初始化
LED=0;
while(1){
LED=0;
if(!RXD){ISP_CONTR=0x60;}
while(a--);
a=50000;
if(!RXD){ISP_CONTR=0x60;}
while(a--);
LED=1;
if(!RXD){ISP_CONTR=0x60;}
a=50000;
if(!RXD){ISP_CONTR=0x60;}
while(a--);
a=50000;
if(!RXD){ISP_CONTR=0x60;}
while(a--);
}
}
/*********************************************************************************************/