在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > msp430矩陣式按鈕驅(qū)動(dòng)程序

            msp430矩陣式按鈕驅(qū)動(dòng)程序

            作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
            寫(xiě)這個(gè)程序的時(shí)候,完全沒(méi)有參考,全部是建立在匯編語(yǔ)言的基礎(chǔ)上,一步步的搬移到c語(yǔ)言上的。但是測(cè)試后,感覺(jué)效果還是十分理想,所以拿出來(lái)與眾位分享了,希望對(duì)一些朋友有所幫助~

            #include "msp430x14x.h"
            unsigned char LineScan[4]={0xef,0xdf,0xbf,0x7f}; //列值列舉

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

            void ADD()
            {
            P4OUT+=1;
            }

            void SUB()
            {
            P4OUT-=1;
            }

            unsigned int key_check(void) //檢測(cè)是否有按鍵按下
            {
            unsigned char temp;
            P1DIR=0xf0; //定義P1.4~P1.7為輸出
            temp=P1IN & 0x0f;
            if(temp!=0x0f)
            return 1;
            else
            return 0;
            }

            unsigned char scan_key(void) //掃描對(duì)應(yīng)按鍵的鍵號(hào)
            {
            P1DIR=0xf0;
            unsigned char count;
            unsigned char i,temp,m,n; //m為列的值,n為行的值
            unsigned int flag=0;
            for(i=0;i<4;i++) //列掃描
            {
            P1OUT=LineScan[i]; //獲取掃描的列
            temp=P1IN&0x0f;

            if(temp==0x07) //為第一行
            {n=0; //記錄按下按鈕的行
            flag=1; //標(biāo)志檢測(cè)出來(lái)
            break;}
            else if(temp==0x0b) //為第二行
            {n=1;
            flag=1;
            break;}
            else if(temp==0x0d) //為第三行
            {n=2;
            flag=1;
            break;}
            else if(temp==0x0e) //為第四行
            {n=3;
            flag=1;
            break;}
            }
            if(flag==1)
            {m=i;
            flag=0;
            count=n*4+m;
            switch(count)
            {
            case 0: {;break;}
            case 1: {;break;}
            case 2: {;break;}
            case 3: {;break;}
            case 4: {;break;}
            case 5: {;break;}
            case 6: {;break;}
            case 7: {;break;}
            case 8: {;break;}
            case 9: {;break;}
            case 10:{;break;}
            case 11:{SUB();break;}
            case 12:{;break;}
            case 13:{;break;}
            case 14:{;break;}
            case 15:{ADD();break;}
            }
            return;
            }
            else
            return;
            }

            void Delay(char wDelay) //延時(shí)子程序
            {
            while(wDelay!=0)
            wDelay--;
            }

            int main( void )
            {
            WDTCTL = WDTPW + WDTHOLD;
            P4DIR =0xff;
            P4OUT=0X00;
            while(1)
            {
            if(key_check())
            {Delay(10000);
            if(key_check())
            {
            scan_key();
            while(key_check());
            P1OUT=0x0f;
            }
            }
            }
            }



            評(píng)論


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

            關(guān)閉