新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430和AT89C51單片機4x4鍵盤C程序

        MSP430和AT89C51單片機4x4鍵盤C程序

        作者: 時間:2016-11-30 來源:網絡 收藏

        #include "io430.h"
        #define uchar unsigned char
        #define uint unsigned int
        uint key,i;
        uchar temp,temp1,ms;
        uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
        0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
        void delay(uchar ms)
        {
        while(ms--)
        {
        for(i=0;i<120;i++);
        }
        }
        void B_key()
        {
        temp1=0x0e;
        P1OUT=temp1;
        if(P1IN!=temp1)
        {
        delay(10);
        if (P1IN!=temp1)
        {
        temp=P1IN|temp1;
        switch(temp)
        {
        case 0xee:key=0;break;
        case 0xde:key=1;break;
        case 0xbe:key=2;break;
        case 0x7e:key=3;break;
        default:break;
        }
        }
        }
        temp1=0x0d;
        P1OUT=temp1;
        if(P1IN!=temp1)
        {
        delay(10);
        if (P1IN!=temp1)
        {
        temp=P1IN|temp1;
        switch(temp)
        {
        case 0xed:key=4;break;
        case 0xdd:key=5;break;
        case 0xbd:key=6;break;
        case 0x7d:key=7;break;
        default:break;
        }
        }
        }
        temp1=0x0b;
        P1OUT=temp1;
        if(P1IN!=temp1)
        {
        delay(10);
        if (P1IN!=temp1)
        {
        temp=P1IN|temp1;
        switch(temp)
        {
        case 0xeb:key=8;break;
        case 0xdb:key=9;break;
        case 0xbb:key=10;break;
        case 0x7b:key=11;break;
        default:break;
        }
        }
        }
        temp1=0x07;
        P1OUT=temp1;
        if(P1IN!=temp1)
        {
        delay(10);
        if (P1IN!=temp1)
        {
        temp=P1IN|temp1;
        switch(temp)
        {
        case 0xe7:key=12;break;
        case 0xd7:key=13;break;
        case 0xb7:key=14;break;
        case 0x77:key=15;break;
        default:break;
        }
        }
        }
        }
        int main( void )
        {
        // Stop watchdog timer to prevent time out reset
        WDTCTL = WDTPW + WDTHOLD;
        P1DIR=0x0f;
        P2DIR=0xff;
        while(1)
        {
        B_key();
        P2OUT=tab[key];
        }
        }

        上一頁 1 2 下一頁

        關鍵詞: MSP430AT89C51單片

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝清县| 宁波市| 四川省| 平罗县| 交城县| 普兰县| 镇远县| 桓仁| 黄冈市| 岫岩| 涿州市| 肇源县| 耒阳市| 东阿县| 班玛县| 秀山| 饶阳县| 游戏| 塔城市| 盐城市| 长岭县| 藁城市| 威远县| 保靖县| 朝阳县| 同仁县| 澄迈县| 新建县| 黎城县| 洱源县| 三台县| 闵行区| 澄迈县| 广平县| 林州市| 南川市| 星座| 磴口县| 东阿县| 富顺县| 大姚县|