新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機實現單鍵重復按鍵檢測

        51單片機實現單鍵重復按鍵檢測

        作者: 時間:2016-11-19 來源:網絡 收藏
        /*****************************************************************************

        Copyright: 2013-07-27.version1.0
        File name: key.c
        Description: 自己做的單鍵識別實現重復按鍵功能
        Author:
        Version: version1.0
        Date: 2013.7.27
        History:無
        *******************************************************/
        #include
        sbit key=P0^0;
        int num=0;

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

        /*************************************************
        Function: delay_press()
        Description: 鍵按下時的延時的功能
        Calls: 無
        Called By: key_test()
        Table Accessed: 無
        Table Updated: 無
        Input: void
        Output: 無
        Return: 1->按下
        0->松開
        Others: 無
        *************************************************/
        int delay_press(void)
        {
        int press=1;
        int i,j;
        for(i=0;i<255;i++)
        for(j=0;j<255;j++)
        press=1;
        press=0;
        return press;
        }

        /*************************************************
        Function: delay()
        Description: 延時的功能
        Calls: 無
        Called By: key_test()
        Table Accessed: 無
        Table Updated: 無
        Input: void
        Output: 無
        Return: void
        Others: 無
        *************************************************/
        void delay(void)
        {
        int i,j;
        for(j=0;j<25;j++)
        for(i=0;i<25;i++);
        }

        /*************************************************
        Function: key_test()
        Description: 單鍵識別功能
        Calls: delay()
        Called By: main()
        Table Accessed: 無
        Table Updated: 無
        Input: void
        Output: num,按鍵按一次num自加一
        Return: void
        Others: 無
        *************************************************/
        void key_test(void)
        {
        if(!key)
        {
        delay();
        if(!key)
        {
        num++;
        if(num>255)
        num=0;
        }
        }while(delay_press());
        }
        /*************************************************
        Function: main()
        Description: 程序的主函數
        Calls: key_test()
        Called By: 無
        Table Accessed: 無
        Table Updated: 無
        Input: void
        Output: 無
        Return: void
        Others: 無
        *************************************************/
        void main(void)
        {
        //int i;
        while(1)
        {
        key_test();
        P2=~num;
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 额济纳旗| 新乡市| 荆门市| 贵南县| 西城区| 烟台市| 澄江县| 阿荣旗| 济源市| 筠连县| 治多县| 广西| 苏尼特右旗| 奉新县| 工布江达县| 泊头市| 五河县| 鹤山市| 宁乡县| 邓州市| 沈阳市| 宁德市| 桦南县| 通榆县| 广德县| 固原市| 渝中区| 乾安县| 灵台县| 丰都县| 平顺县| 武功县| 西青区| 沂源县| 西林县| 云南省| 青海省| 舒城县| 宝山区| 中牟县| 昌乐县|