在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR main.c/基于狀態(tài)機(jī)的按鍵

            AVR main.c/基于狀態(tài)機(jī)的按鍵

            作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            /**********************************************************************
            * 文件名稱: main.c/基于狀態(tài)機(jī)的按鍵
            * 程序作者: Kevin Chin
            * 程序版本: V1.0
            * 編制日期: 2010/07/14
            * 功能描述: 按一個(gè)K20(PD7),LED燈亮(PB1),松開熄滅
            * 編譯器:WinAVR-20090313
            * 芯片:ATmega16,外部11.0592MHZ晶振
            * 技術(shù)支持:http://bbs.cepark.com
            **********************************************************************/
            #include<avr/io.h>
            #include

            #defineKEY_Value PIND&0x80//定義按鍵所在的引腳PD7

            #defineLED_OPEN PORTB&=~(_BV(PB1))//PB1口的LED燈點(diǎn)亮

            #defineLED_CLOSE PORTB|=_BV(PB1)//PB1口的LED燈熄滅

            #defineKEY_STATE_0 0//狀態(tài)0

            #defineKEY_STATE_1 1//狀態(tài)1

            #defineKEY_STATE_2 2//狀態(tài)2


            uint8_tKeyScane(void)//按鍵掃描函數(shù)

            {
            staticuint8_tkeystate=0,keyreturn=0;//定義靜態(tài)變量

            uint8_tkeypress;


            keypress=KEY_Value;//讀取按鍵的狀態(tài)賦給keypress


            switch(keystate)
            {
            caseKEY_STATE_0:if(!keypress)//如果是狀態(tài)1并且按鍵按下去了。

            {
            keystate=KEY_STATE_1;//狀態(tài)切換到1

            keyreturn=0;
            }
            break;
            caseKEY_STATE_1:if(!keypress)//如果10ms后按鍵按下狀態(tài)再次確認(rèn)

            {
            keystate=KEY_STATE_2;//按鍵狀態(tài)切換到2

            keyreturn=1;//返回值為1

            }
            elsekeystate=KEY_STATE_0;
            break;
            caseKEY_STATE_2:if(keypress)//判斷按鍵是否松開

            {
            keystate=KEY_STATE_0;//切換到狀態(tài)0

            keyreturn=0;
            }
            break;
            default:break;
            }

            returnkeyreturn;//返回鍵值


            }

            intmain(void)
            {

            uint8_tkeydata;

            PORTB=0xff;
            DDRB=0xff;

            PORTD=0x80;
            DDRD=0x00;

            while(1)
            {
            _delay_ms(10);//延時(shí)10ms

            keydata=KeyScane();//調(diào)用按鍵掃描函數(shù)


            if(keydata)//如果按鍵掃描函數(shù)返回為1,執(zhí)行下面的語句

            {
            LED_OPEN;//LED點(diǎn)亮

            }
            elseLED_CLOSE;//LED熄滅

            }
            }


            關(guān)鍵詞: AVR狀態(tài)機(jī)的按

            評(píng)論


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

            關(guān)閉