/************************************************ 跳線設(shè)置:J7拔掉,J5的23端插上選中喇叭,雙排針除PSEN外全部插上雙排針除PSEN外全部插上 顯示效果:按一下INT0鍵,喇叭就響再按一此不響依此類推 這個程序我把很多中斷設(shè)置了進去,給大家留了很多自己修改的空間 ************************************************/ #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; //--------------------------------------------------- //固定函數(shù)聲明 void int_0(); //外部中斷0 void int_1(); //外部中斷1 void timer_0(); //定時器中斷1 void timer_1(); //定時器中斷2 void serial_1(); //串行中斷1 void serial_2(); //串行中斷2 //--------------------------------------------------- //用戶函數(shù)聲明 void initial(); //初始化 //--------------------------------------------------- void main(){ initial(); while(1){ P13=0; //為了使按'取消'、'確定'鍵能夠產(chǎn)生INT0及INT1中斷 //led4=0; //上一句等價于此句 if(FINT0){ //中斷0來到要做什么事情 FINT0=0; laba=~laba; led1=0; //INT0中斷時點亮 led2=0; led3=0; led3=0; //可以在此設(shè)一個斷點 } if(FINT1){ //中斷1來到要做什么事情 FINT1=0; led1=1; //INT1中斷時熄滅 led2=1; led3=1; } if(FT0){ FT0=0; if(++T0_10ms>30){ T0_10ms=0; //定時多少做什么事,未初始化里定時器尚未設(shè)置 } } } } //------------------------------------------------------------------- void initial(){ EA=1; // CPU所有中斷開(IE最高位MSB) EX0=1; // INT0中斷開 IT0=1; // INT0低電平觸發(fā)(為1則為下降沿觸發(fā)) EX1=1; // INT1中斷開 IT1=0; // INT1低電平觸發(fā)(為1則為下降沿觸發(fā)) return; } //------------------------------------------------------------------- //INT0中斷 由P3.2引腳產(chǎn)生 void int_0() interrupt 0 using 0 { FINT0=1; } //------------------------------------------------------------------- //INT1中斷 由P3.3引腳產(chǎn)生 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; } //-------------------------------------------------------------------
雖然有注釋,但還是不太明白。我把程序燒進板子,喇叭直接就間斷地響了,按int0不放,聲音就變成連續(xù)。但我看程序看不出有這個效果。連哪里是令喇叭響也找不著。望指導(dǎo)。 怎么這個論壇不是即見即所得的?不會編輯了。。。
你肯定不是用的ie發(fā)的帖子吧,這個論壇發(fā)代碼最好用ie的,如果說你燒入程序喇叭直接就響了,這說明程序已經(jīng)進入的int0的中斷了,很可能是你的無線模塊沒有拔掉,因為無線模塊也是用的p3.2口的
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |