/************************************************ 跳线设置:默认
显示效果:按一下INT0键,喇叭就响再按一此不响依此类推 这个程序我把很多中断设置了进去,给大家留了很多自己修改的空间 ************************************************/ #include <reg52.h> //--------------------------------------------------- //重定义I/0引脚名称 sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3; sbit laba=P2^2;
sbit P13=P1^3; //--------------------------------------------------- //全局变量及位标志定义 bit FINT0; bit FINT1; bit FT0; bit FT1; bit FT2;
unsigned char T0_10ms; unsigned char T0_50ms; unsigned char T0_100ms; //--------------------------------------------------- //固定函数声明 void int_0(); //外部中断0 void int_1(); //外部中断1 void timer_0(); //定时器中断1 void timer_1(); //定时器中断2 void serial_1(); //串行中断1 void serial_2(); //串行中断2 //--------------------------------------------------- //用户函数声明 void initial(); //初始化
//--------------------------------------------------- void main(){ initial();
while(1){
P13=0; //为了使按'取消'、'确定'键能够产生INT0及INT1中断 //led4=0; //上一句等价于此句 if(FINT0){ //中断0来到要做什么事情 FINT0=0; laba=~laba; led1=0; //INT0中断时点亮 led2=0; led3=0; led3=0; //可以在此设一个断点 } if(FINT1){ //中断1来到要做什么事情 FINT1=0; led1=1; //INT1中断时熄灭 led2=1; led3=1; } if(FT0){ FT0=0; if(++T0_10ms>30){ T0_10ms=0; //定时多少做什么事,未初始化里定时器尚未设置 } } } } //------------------------------------------------------------------- void initial(){ EA=1; // CPU所有中断开(IE最高位MSB)
EX0=1; // INT0中断开 IT0=1; // INT0低电平触发(为1则为下降沿触发)
EX1=1; // INT1中断开 IT1=0; // INT1低电平触发(为1则为下降沿触发)
return; } //------------------------------------------------------------------- //INT0中断 由P3.2引脚产生 void int_0() interrupt 0 using 0 { FINT0=1;
} //------------------------------------------------------------------- //INT1中断 由P3.3引脚产生 void int_1() interrupt 2 using 1 { FINT1=1; } //------------------------------------------------------------------- //定时器0中断 void timer_0() interrupt 1 using 2 { FT0=1;
} //------------------------------------------------------------------- //定时器1中断 void timer_1() interrupt 3 using 3 { FT1=1; } //------------------------------------------------------------------- //串行中断1 void serial_1() interrupt 4 {
} //------------------------------------------------------------------- //定时器2中断 void timer_2() interrupt 5 { FT2=1; } //-------------------------------------------------------------------
下载地址:http://www.51hei.com/ziliao/51hei-5/外部中断INT0.rar
[此贴子已经被作者于2010-4-11 0:53:19编辑过]
|