/************************************************ 跳線設置:默認
顯示效果:按一下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.zg4o1577.cn/ziliao/51hei-5/外部中斷INT0.rar
[此貼子已經被作者于2010-4-11 0:53:19編輯過]
|