新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機中最簡單實用的按鍵程序

        單片機中最簡單實用的按鍵程序

        作者: 時間:2016-11-25 來源:網絡 收藏
        我想了很久才寫成的這個按鍵程序;先講講我的思路,

        我的思路很簡單就是一般的按鍵不是需要去抖動延時,我想單片機夠慢的了,用什么方法不要去延時,所以我就想到在定時中斷中插入按鍵掃描程序,如果連續兩個中斷程序中都有按鍵,就可以認為有按鍵。

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

        但是我下面的這個程序中有個缺陷,那就是沒有加入去抖動的方法,為了縮短短程序的總長度,我就是沒有寫,這個我用在一個平時的一個小的測試部件控制程序中,去抖動沒什么實際的意義,就沒有寫!

        ucharkey = 0;
        ucharkey0 = 0;
        ucharkey1 = 0;
        ucharkey2 = 0;
        ucharkey3 = 0;
        ucharkey4 = 0;

        //以上為全局變量


        voidkey_saomiao(void)
        {
        //uchara = 0;

        P3 = P3 | 0xF0;
        nop();
        key0 = P3;
        key0 = key0 >> 4;
        key2 = key2 | (key0 ^ key1);
        key1 = key0;
        key = key | (key2 & key0);
        key2 = key ^ key2;
        }


        void time0_init(void)
        {
        uchar a;

        a = TMOD;
        a = a | 0x01;
        TMOD = a;
        //IE = 0x82;
        TH0 = 0x10;
        TL0 = 0x00;
        ET0 = 1;
        TR0 = 1;
        EA = 1;
        }

        void time0_int(void) interrupt 1
        {
        TH0 = 0x10;
        TL0 = 0x00;
        TR0=1;
        time_count++;
        key_saomiao();
        if(time_count > 20)
        {
        LED0 = ~LED0;
        time_count = 0;
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 耒阳市| 洛宁县| 象山县| 嘉祥县| 白山市| 本溪| 嘉鱼县| 宁明县| 怀来县| 交口县| 萍乡市| 武功县| 广安市| 夹江县| 金川县| 仪陇县| 湖口县| 乐平市| 准格尔旗| 抚顺市| 且末县| 连州市| 建湖县| 威宁| 石屏县| 闻喜县| 剑河县| 平舆县| 游戏| 鄢陵县| 景洪市| 永清县| 登封市| 武定县| 沽源县| 延寿县| 蓬溪县| 江北区| 织金县| 白河县| 黄陵县|