新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 外中斷(按鍵)控制數碼管顯示

        外中斷(按鍵)控制數碼管顯示

        作者: 時間:2016-11-24 來源:網絡 收藏
        #include "config.h"

        #defineuintunsigned int
        #defineucharunsignedchar
        #defineulongunsignedlong

        本文引用地址:http://www.104case.com/article/201611/320668.htm

        #defineSIGNALP3_5//鍵盤初始信號

        #defineKEY6P3_2//KEY6口就是INT0口
        #defineKEY2P3_3

        int num;


        // 延時約(0.001 * n)秒
        void delay(unsigned char n)
        {
        ulong i;
        do {
        i = CPUCLK / 1000;
        while(i--);
        } while (--n != 0);
        }


        void int0() interrupt 0 // 也可不判斷是否為KEY6按下,因為引發此中斷的就是KEY6鍵
        {
        if(KEY6 == 0)
        {
        delay(10);//延時消除按鍵抖動
        if (KEY6 == 0)//確定有鍵按下
        {
        num++;
        if (num > 9)
        num = 0;
        P0 = num;
        }
        while (!KEY6);//等待KEY1松開
        delay(10);//延時消除松鍵抖動
        }
        }


        void int1() interrupt 2
        {
        if(KEY2 == 0)
        {
        delay(10);//延時消除按鍵抖動
        if (KEY2 == 0)//確定有鍵按下
        {
        num--;
        if (num < 0)
        num = 9;
        P0 = num;
        }
        while (!KEY2);//等待KEY1松開
        delay(10);//延時消除松鍵抖動
        }
        }

        //外中斷初始化函數
        void int_init()
        {
        EA = 1;//開總中斷
        EX0 = 1;//開外中斷0
        IT0 = 0;//外中斷0低電平觸發方式
        EX1 = 1;
        IT1 = 0;
        }

        //主程序入口
        void main(void)
        {
        int_init();
        SIGNAL = 0;//重要!!雖然SIGNAL和IT1是同一地址,但必須初始化SIGNAL

        num = 0;
        P0 = num;

        for (;;){
        }
        }

        外中斷程序設計步驟:

        1. 開總中斷

        2. 開外中斷

        3. 設置外中斷觸發方式

        4. 中斷處理程序



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 兰考县| 沾益县| 滨海县| 页游| 临江市| 米泉市| 宜阳县| 璧山县| 淮安市| 濮阳县| 宜宾县| 江孜县| 鹿泉市| 珲春市| 林州市| 邳州市| 垫江县| 萝北县| 调兵山市| 宜川县| 紫金县| 浙江省| 连云港市| 疏附县| 遵义市| 哈尔滨市| 铜川市| 寻乌县| 赤城县| 陇川县| 永春县| 台中县| 福安市| 怀仁县| 泌阳县| 类乌齐县| 宁波市| 明溪县| 锡林浩特市| 秀山| 辽源市|