新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用外中斷方式讀按鍵,控制燈的亮滅

用外中斷方式讀按鍵,控制燈的亮滅

作者: 時間:2016-10-15 來源:網(wǎng)絡(luò) 收藏

這一顆,我們學(xué)習(xí)的用法。也就是外部IO的中斷INT0,和INT1。對應(yīng)的引腳是P32和P33。在我們的電路圖中,P32也就是接在K1的引腳。所以當(dāng)我們按下P32接到地的時候,可以觸發(fā)一個INT0中斷,當(dāng)然,必須預(yù)先初始化才會啟動。

本文引用地址:http://butianyuan.cn/article/201610/307631.htm

這種中斷方式的按鍵,可以實(shí)現(xiàn)按鍵的立即響應(yīng)。對于需要快速響應(yīng)的場合是很有用的。外部IO中斷還常用在用IO模擬通訊的場合,可以對數(shù)據(jù)的到來立即響應(yīng)。

下面請看代碼:

DDDDDDDDDDDDDDDDD

#define uchar unsigned char //定義一下方便使用

#define uint unsigned int

#define ulong unsigned long

#include //包括一個52標(biāo)準(zhǔn)內(nèi)核的頭文件

sbit P10 = P1^0; //頭文件中沒有定義的IO就要自己來定義了

sbit P11 = P1^1;

sbit P12 = P1^2;

sbit P13 = P1^3;

sbit K1= P3^2;

bit ldelay=0; //長定時溢出標(biāo)記,預(yù)置是0

uchar speed=10; //設(shè)置一個變量保存默認(rèn)的跑馬燈的移動速度

uchar speedlever=0; //保存當(dāng)前的速度檔次

char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的

//用方式K1,點(diǎn)亮一個LED

void main(void) // 主程序

{

IT0=1; //跳變產(chǎn)生中斷

EX0=1;

EA=1; //打開總中斷

while(1) //主程序循環(huán)

{

}

}

//外中斷0

int0() interrupt 0

{

P10=0; //在中斷里點(diǎn)亮LED

}

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

這個程序里,按一下K1(P32)之后,就會觸發(fā)INT0中斷,在該中斷里點(diǎn)亮LED燈。

請編譯運(yùn)行,并看結(jié)果。可以看到,在按下K1之后,LED1變處于亮著的狀態(tài)。

作業(yè):

用中斷方式的按鍵K1,控制一個LED燈的亮和滅兩種狀態(tài)

提示:需要去抖操作,否則按鍵抖動會引起多種中斷。



關(guān)鍵詞: 外中斷 讀按鍵

評論


技術(shù)專區(qū)

關(guān)閉