資源描述:
《51單片機(jī)外部中斷c51編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、51單片機(jī)外部中斷的C51編程相關(guān)知識:1、51單片機(jī)的5大中斷源:串行口中斷、定時(shí)中斷1、外部中斷1、定時(shí)中斷0、外部中斷0;2、中斷源的編號:串行口中斷為4、定時(shí)中斷1為3、外部中斷1為2、定時(shí)中斷0為1、外部中斷0為0;3、中斷源的優(yōu)先級:按以上順序排列,串行口中斷最低、外部中斷0最高;4、使用外部中斷0和1,必須TCON寄存器設(shè)置其觸發(fā)方式是低電平觸發(fā)(0)還是下降沿觸發(fā)(1);5、使用前必須通過IE寄存器打開總中斷和自己的中斷;//外部中斷基本例程-1(未使用中斷,鍵盤掃描為一般端口掃描)//這是特意安排的一個(gè)例程,以便和使用外部中斷的例程2進(jìn)行對比//用一個(gè)按鍵控制一個(gè)燈的
2、亮滅,開始不亮,按一下則點(diǎn)亮,再按一下滅掉,再按又亮........#includesbitk1=P3^2;sbitled=P2^7;voiddelay_ms(unsignedintxms);//ms級延時(shí)子程序voidkey_scan();//聲明鍵盤掃描子函數(shù)//=================================================voidmain(){led=1;//上電初始化,led燈不亮while(1){key_scan();delay_ms(3000);}}//==================================
3、===============voiddelay_ms(unsignedintxms)//ms級延時(shí)子程序{unsignedintx,y;?for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------?voidkey_scan()//鍵盤掃描子函數(shù){if(k1==0)//有鍵按下嗎?(k1=0?){delay_ms(10);//延時(shí)消抖if(k1==0)//確實(shí)是有鍵按下,則:{led=!led;//翻轉(zhuǎn)燈的狀態(tài)while(!k1);}//等待按鍵放開}?}//----
4、---------------------------------------------//外部中斷基本例程-2(單個(gè)鍵盤的外部中斷0掃描處理)//用一個(gè)按鍵控制一個(gè)燈的亮滅//開始不亮,按一下則點(diǎn)亮,再按一下滅掉,再按又亮........#includesbitk1=P3^2;sbitled=P2^7;voiddelay_ms(unsignedintxms);//ms級延時(shí)子程序voidkey_scan()interrupt0//使用了外部中斷0的鍵盤掃描子函數(shù)。也可放在主函數(shù)而不需要預(yù)先聲明{if(k1==0)//有鍵按下嗎?(k1=0?){delay_ms(1
5、0);//延時(shí)消抖if(k1==0)//確實(shí)是有鍵按下,則:{led=!led;//翻轉(zhuǎn)燈的狀態(tài)while(!k1);}//等待按鍵放開}?}//=================================================voidmain(){led=1;//上電初始化,led燈不亮TCON=0x01;//打開外部中斷0,并設(shè)置為下降沿觸發(fā)IE=0x81;//開總中斷while(1){delay_ms(3000);//注意主函數(shù)這里沒有鍵盤掃描程序了}}//=================================================voidd
6、elay_ms(unsignedintxms)//ms級延時(shí)子程序{unsignedintx,y;?for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------//外部中斷基本例程-3(單個(gè)鍵盤的外部中斷1掃描處理)//功能跟上例一樣,都是用一個(gè)按鍵控制一個(gè)燈的亮滅,但是使用的是外部中斷1//注意與前例寫法上的不同之處#includesbitk2=P3^3;//sbitled=P2^7;voiddelay_ms(unsignedintxms);//ms
7、級延時(shí)子程序//=================================================voidmain(){led=1;//上電初始化,led燈不亮TCON=0x04;//打開外部中斷1,并設(shè)置為下降沿觸發(fā)IE=0x84;//開總中斷和外部中斷1while(1){delay_ms(3000);}}//=================================================voiddelay_