這一顆,我們學(xué)習外中斷的用法。也就是外部IO的中斷INT0,和INT1。對應的引腳是P32和P33。在我們的電路圖中,P32也就是接在K1的引腳。所以當我們按下P32接到地的時(shí)候,可以觸發(fā)一個(gè)INT0中斷,當然,必須預先初始化才會(huì )啟動(dòng)。
這種中斷方式的按鍵,可以實(shí)現按鍵的立即響應。對于需要快速響應的場(chǎng)合是很有用的。外部IO中斷還常用在用IO模擬通訊的場(chǎng)合,可以對數據的到來(lái)立即響應。
下面請看代碼:
―――――――――――――――――
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include //包括一個(gè)52標準內核的頭文件
sbit P10 = P1^0; //頭文件中沒(méi)有定義的IO就要自己來(lái)定義了
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit K1= P3^2;
bit ldelay=0; //長(cháng)定時(shí)溢出標記,預置是0
uchar speed=10; //設置一個(gè)變量保存默認的跑馬燈的移動(dòng)速度
uchar speedlever=0; //保存當前的速度檔次
char code dx516[3] _at_ 0x003b;//這是為了仿真設置的
//用外中斷方式讀按鍵K1,點(diǎn)亮一個(gè)LED
void main(void) // 主程序
{
IT0=1; //外中斷跳變產(chǎn)生中斷
EX0=1;
EA=1; //打開(kāi)總中斷
while(1) //主程序循環(huán)
{
}
}
//外中斷0
int0() interrupt 0
{
P10=0; //在中斷里點(diǎn)亮LED
}
――――――――――――――――――――――――――――――――――
這個(gè)程序里,按一下K1(P32)之后,就會(huì )觸發(fā)INT0中斷,在該中斷里點(diǎn)亮LED燈。
請編譯運行,并看結果?梢钥吹,在按下K1之后,LED1變處于亮著(zhù)的狀態(tài)。
作業(yè):
用中斷方式的按鍵K1,控制一個(gè)LED燈的亮和滅兩種狀態(tài)
提示:需要去抖操作,否則按鍵抖動(dòng)會(huì )引起多種中斷。 |