新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430單片機的4X4矩陣鍵盤C語言程序

        MSP430單片機的4X4矩陣鍵盤C語言程序

        作者: 時間:2016-11-30 來源:網絡 收藏
        #include <msp430x24x.h>

        #define uchar unsigned char
        #define uint unsigned int

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

        uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

        void delay(unsigned int i) //延時子程序
        {
        while(i--);
        }

        uchar keyvalue()
        {
        uchar key;
        uchar np10,np11,np12,np13;
        P1DIR=0x0f;
        //第一排
        P1OUT=~BIT3;
        delay(10);
        np10=P1IN&BIT4;
        if(np10==0)
        {
        key=0;
        }
        np11=P1IN&BIT5;
        if(np11==0)
        {
        key=1;
        }
        np12=P1IN&BIT6;
        if(np12==0)
        {
        key=2;
        }
        np13=P1IN&BIT7;
        if(np13==0)
        {
        key=3;
        }
        //第二行
        P1OUT=~BIT2;
        delay(10);
        np10=P1IN&BIT4;
        if(np10==0)
        {
        key=4;
        }
        np11=P1IN&BIT5;
        if(np11==0)
        {
        key=5;
        }
        np12=P1IN&BIT6;
        if(np12==0)
        {
        key=6;
        }
        np13=P1IN&BIT7;
        if(np13==0)
        {
        key=7;
        }
        //第三行
        P1OUT=~BIT1;
        delay(10);
        np10=P1IN&BIT4;
        if(np10==0)
        {
        key=8;
        }
        np11=P1IN&BIT5;
        if(np11==0)
        {
        key=9;
        }
        np12=P1IN&BIT6;
        if(np12==0)
        {
        key=10;
        }
        np13=P1IN&BIT7;
        if(np13==0)
        {
        key=11;
        }
        //第四行
        P1OUT=~BIT0;
        delay(10);
        np10=P1IN&BIT4;
        if(np10==0)
        {
        key=12;
        }
        np11=P1IN&BIT5;
        if(np11==0)
        {
        key=13;
        }
        np12=P1IN&BIT6;
        if(np12==0)
        {
        key=14;
        }
        np13=P1IN&BIT7;
        if(np13==0)
        {
        key=15;
        }
        P1OUT=0X00;
        return key;
        while(1)
        {
        if((P1IN&0X0F)==0x0f)
        break;
        }
        }

        void main()
        {
        uchar key_value;
        WDTCTL=WDTPW+WDTHOLD;
        P1DIR=0X0F;
        P2DIR=0XFF;
        P2OUT=0XFF;
        while(1)
        {
        if((P1IN&0XF0)!=0XF0)
        {
        delay(100);
        if((P1IN&0XF0)!=0XF0)
        {
        delay(100);
        if((P1IN&0XF0)!=0XF0)
        {
        key_value=keyvalue();
        }
        }
        }
        P2OUT=~key_value;
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 梁山县| 西昌市| 惠州市| 叶城县| 筠连县| 长阳| 电白县| 丰镇市| 永靖县| 嘉鱼县| 睢宁县| 永定县| 巍山| 阳城县| 盐池县| 当阳市| 峨山| 隆回县| 枞阳县| 津南区| 望奎县| 略阳县| 建德市| 陇南市| 古田县| 洮南市| 龙山县| 比如县| 城步| 惠水县| 葵青区| 永修县| 颍上县| 介休市| 峨山| 舞阳县| 新乡县| 耒阳市| 启东市| 桦甸市| 安龙县|