小弟最近初學(xué)單片機(jī),用C語(yǔ)言編程,買了一塊板子,想用單片機(jī)的外部中斷做幾個(gè)試驗(yàn),我想實(shí)現(xiàn)的效果是當(dāng) 單片機(jī)上電之后,小燈閃爍,然后當(dāng)按下一個(gè)按鍵之后產(chǎn)生外部中斷,小燈停止閃爍一段時(shí)間之后,另外一個(gè)小燈閃爍, 就是這么一個(gè)簡(jiǎn)單的功能,可是無(wú)奈我對(duì)單片機(jī)的中斷執(zhí)行過(guò)程不是很清楚,寫出的程序,上電之后發(fā)現(xiàn)單片機(jī)并不響應(yīng)鍵盤的外部中斷!還是上電時(shí)的初始狀態(tài),哪位大哥(大姐也行)能貼一下代碼幫我解決一下這個(gè)問(wèn)題么?(我的單片機(jī)獨(dú)立鍵盤由P1.0-P1.3口控制,8個(gè)LED燈由P0口控制)下面是我寫的代碼
#include <reg52.h> sbit key0=P1^0; //按鍵位 sbit D=P3^2; //外部中斷口 void keydelay(int z)//消抖延時(shí)函數(shù) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
void delaytime(int ms)//控制小燈的閃爍 { int x,y; for(x=ms;x>0;x--) for(y=200;y>0;y--); }
void main() { IT0=0; EA=1; EX0=1; P1=0xff; //獨(dú)立鍵盤位置1 while(1) { if(key0==0) // 判斷鍵盤是否按下 keydelay(15);//消抖 if(key0==0) { D=0;//產(chǎn)生外部中斷 while(!key0); }
while(1)//上電時(shí)小燈閃爍 { P0=0xfe; delaytime(10); P0=0xff; delaytime(10); } } }
void extinter() interrupt 0 //中斷處理 { P0=0xff; //燈滅 delaytime(5); while(1) { P0=0x7f; delaytime(10); P0=0xff; delaytime(10); }
}
[此貼子已經(jīng)被作者于2008-11-21 12:38:58編輯過(guò)]
|