在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430G2553測(cè)試程序(長(zhǎng)短按鍵識(shí)別)

            MSP430G2553測(cè)試程序(長(zhǎng)短按鍵識(shí)別)

            作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
            //原始狀態(tài)P1.6亮,P1.0暗,利用狀態(tài)機(jī)進(jìn)行按鍵檢測(cè),短按鍵情況下并釋放的瞬間P1.0翻轉(zhuǎn),P1.6翻轉(zhuǎn)

            //長(zhǎng)按鍵P1.0,P1.6按照10Hz的頻率閃爍
            // MSP430G2xx3
            // -----------------
            // /|| XIN|-
            // | | |
            // --|RST XOUT|-
            // P1.3|KEY P1.6|-->LED
            // | P1.0|-->LED
            // 作者h(yuǎn)ttp://jiwm.blog.163.com
            // Built with IAR Embedded Workbench Version: 5.40
            //******************************************************************************
            #include "msp430g2553.h"
            #define NOKEY 0 //未按下狀態(tài)
            #define PUSH_KEY 1 //短按狀態(tài)
            #define LONG_KEY 2 //長(zhǎng)按狀態(tài)
            unsigned char KEY=0; //按鍵狀態(tài)處理
            void main(void)
            {
            WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門狗
            BCSCTL1= CALBC1_1MHZ; //1M內(nèi)部時(shí)鐘
            DCOCTL = CALDCO_1MHZ;
            P1DIR |=BIT6+BIT0; // 設(shè)置 P1.6,P1.0為輸出
            P1OUT|=BIT0; //設(shè)置初值,P1.0亮
            P1OUT&=~BIT6; //設(shè)置初值,P1.6不亮
            P1REN|=BIT3; //配置上拉電阻
            TACCTL0 |= CCIE; // CCR0 interrupt enabled
            TACCR0 =2500; //計(jì)到2.5K,約20ms
            TACTL = TASSEL_2+ID_3+MC_1+TACLR; //設(shè)置TIMERA的時(shí)鐘源為SMCLK(1M),8分頻后(125K),計(jì)數(shù)模式為up,到CCR0再自動(dòng)從0開始計(jì)數(shù)
            _BIS_SR(GIE); //開總中斷
            TACCTL0 |= CCIE; // CCR0 interrupt enabled
            while(1)
            {
            switch(KEY) //按鍵動(dòng)作
            { case 1: //短按狀態(tài)時(shí)進(jìn)行按鍵處理
            {P1OUT^=BIT0; //翻轉(zhuǎn)
            P1OUT^=BIT6; //翻轉(zhuǎn)
            KEY=0;}
            break;
            case 2: //長(zhǎng)按初始狀態(tài)
            {P1OUT|=BIT0; //設(shè)置初值,P1.0亮
            P1OUT|=BIT6; //設(shè)置初值,P1.6亮
            KEY=0;}
            break; //必須要,需要退出循環(huán)
            case 3: //長(zhǎng)按狀態(tài)時(shí)進(jìn)行按鍵處理
            {P1OUT^=BIT0; //翻轉(zhuǎn)
            P1OUT^=BIT6; //翻轉(zhuǎn)
            KEY=0;}
            break;
            }
            }
            }

            本文引用地址:http://www.biyoush.com/article/201611/316569.htm

            /************************************************
            定時(shí)中斷響應(yīng)
            *************************************************/
            // Timer A0 interrupt service routine
            #pragma vector=TIMER0_A0_VECTOR
            __interrupt void Timer_A (void)

            { //TACCTL0&=~ CCIE; //關(guān)中斷
            static unsigned char KEY_State=0; //按鍵的狀態(tài)變量
            static unsigned char i,j=0; //計(jì)數(shù),用于處理時(shí)間
            switch(KEY_State) //處理按鍵狀態(tài)
            {case NOKEY: //未按鍵時(shí)進(jìn)行按鍵處理
            if ((P1IN&BIT3)==0)
            {KEY_State=PUSH_KEY; //按下按鍵后,進(jìn)入短按狀態(tài)
            }
            break; //必須要,需要退出循環(huán)
            case PUSH_KEY: //短按狀態(tài)時(shí)進(jìn)行按鍵處理
            if((P1IN&BIT3)!=0) //釋放按鍵,認(rèn)為是一次短按,加以處理
            { KEY=1; //按鍵賦值
            KEY_State=NOKEY; //回到未按狀態(tài)
            }
            else
            {
            if (i<100)
            { //KEY=0; //KEY返回0,接收下一次數(shù)據(jù)
            i++; //計(jì)數(shù),以實(shí)現(xiàn)長(zhǎng)按鍵,約2秒
            }
            else
            {
            i=0;
            KEY=2; //輸出長(zhǎng)按初始狀態(tài)
            KEY_State=LONG_KEY; //長(zhǎng)按狀態(tài)
            }
            }
            break;

            case LONG_KEY: //長(zhǎng)按狀態(tài)時(shí)進(jìn)行按鍵處理
            if((P1IN&BIT3)!=0) //釋放按鍵,退出
            { KEY=0; //按鍵賦值
            KEY_State=NOKEY; //回到未按狀態(tài)
            }
            else
            {
            if (j<5)
            {
            j++; //計(jì)數(shù),以實(shí)現(xiàn)長(zhǎng)按鍵狀態(tài)計(jì)時(shí),約0.1秒
            }
            else
            {j=0; //重新計(jì)數(shù)
            KEY=3; //長(zhǎng)按狀態(tài)的處理
            }
            }
            break;

            }
            TACCTL0|= CCIE; //開中斷
            }



            評(píng)論


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

            關(guān)閉