首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

單片機外部中斷實驗:按鍵控制數碼管數字增減(C 語言)

     編輯:關於C語言

實驗目標

使用 INT0、INT1 外部中斷響應按鍵(鍵盤掃描碼 8 和 C),控制雙位數碼管顯示 0~15 循環增減。

硬體接口

  • P2.7 = 位鎖存 (WEI),P2.6 = 段鎖存 (DUAN)。
  • P0 = 段碼/位碼輸出。
  • P3.2 = INT0 (減),P3.3 = INT1 (加)。
  • 矩陣鍵盤接 P3.0~P3.7,行列掃描獲取鍵值。

關鍵代碼

// 鍵盤掃描(行列逐級)
unsigned char KeyScan() {
    P3 = 0xF0; if (P3 != 0xF0) { /* 掃描四行,返回 0xEE~0x77 */ }
    return 0xFF;
}

// 鍵值轉換
unsigned char KeyPro() {
    switch(KeyScan()) {
        case 0xEE: return 0; ... case 0xEB: return 8; ... case 0xE7: return 12; ...
        default: return 0xFF;
    }
}

// 數碼管動態掃描顯示
void Screen1(int pos, int val) { /* 顯示十位 */ }
void Screen2(int pos, int val) { /* 顯示個位 */ }

// 主迴圈:輪詢顯示
void main() {
    EA=1; EX0=1; IT0=0; EX1=1; IT1=0;
    while(1) {
        if(flag) Screen1(6, num); else Screen2(7, num);
        Key_push = KeyPro();
    }
}

// INT0 中斷:減
void inter_sub() interrupt 0 {
    if (Key_push == 8) if (num > 0) num--;
    Key_push = 0;
}

// INT1 中斷:加
void inter_add() interrupt 2 {
    if (Key_push == 12) { num++; if (num==16) num=0; }
    Key_push = 0;
}

現象

按鍵 8 (INT0) 數字遞減至 0 停止;按鍵 C (INT1) 數字遞增至 15 後循環到 0。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved