在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 三個(gè)I/O口實(shí)現(xiàn)的3*4矩陣按鍵程序

            三個(gè)I/O口實(shí)現(xiàn)的3*4矩陣按鍵程序

            作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò) 收藏
            uchar buttion(void)//按鍵讀寫(xiě)程序
            {uchar keybuf1=0x00,keybuf2=0x00,keysta=0x00;
            bit zz=0,z12=0,z23=0,z31=0,
            ff=0,f12=0,f23=0,f31=0,gnd=0;
            //先讀三個(gè)接地按鍵
            P6CR|=0xe0;//PORT端口控制寄存器
            delay8nop();
            keybuf1=PORT60xe0;
            if(keybuf1!=0xe0)gnd=1;//有接地按鍵按下
            else{
            //正向?qū)y(cè)試
            //測(cè)試Z12,12正向?qū)y(cè)試
            P6CR=0x9f;//置23口為輸出口 10011111
            P6CR|=0x80;//置1口為輸入口 10000000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P67==0){z12=1;zz=1;keysta+=0x01;}//12正向?qū)?BR>
            //測(cè)試Z23,23正向?qū)?BR>P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xdf;//3口清0 11011111
            PORT6|=0x80;//1口置1 10000000
            delay8nop();
            if(P66==0){z23=1;zz=1;keysta+=0x02;}//23口正向?qū)?BR>
            //測(cè)試Z31,31正向?qū)?BR>P6CR=0x3f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x40;//2口置1 01000000
            delay8nop();
            if(P65==0){z31=1;zz=1;keysta+=0x04;}//31正向?qū)?BR>
            //反向?qū)y(cè)試
            //測(cè)試F12,12反向?qū)?BR>P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P66==0){f12=1;ff=1;keysta+=0x08;}//12反向?qū)?BR>
            //測(cè)試F23,23反向?qū)?BR>P6CR=0x9f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P65==0){f12=1;ff=1;keysta+=0x10;}//23反向?qū)?BR>
            //測(cè)試F31,31反向?qū)?BR>P6CR=0x9f;//置23口為輸出口 10011111
            P6CR|=0x80;//置1口為輸入口 10000000
            PORT6=0xdf;//3口清0 11011111
            PORT6|=0x20;//2口置1
            delay8nop();
            if(P67==0){f31=1;ff=1;keysta+=0x20;}//31反向?qū)?BR>}
            //按鍵識(shí)別
            if(gnd==1) {P6CR|=0xe0;//PORT端口控制寄存器
            delay8nop();
            keybuf2=PORT60xe0;
            if(keybuf1==keybuf2)
            {switch(keybuf1)
            {case 0x80:return 0x01;break;
            case 0x40:return 0x04;break;
            case 0x20:return 0x08;break;
            default:return 0xff;
            }
            }
            else return 0xff;//接地三鍵按下
            }
            else//接地按鍵沒(méi)有按下
            {switch(keysta)
            {case 0x01://測(cè)試Z12,12正向?qū)y(cè)試
            P6CR=0x9f;//置23口為輸出口 10011111
            P6CR|=0x80;//置1口為輸入口 10000000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P67==0)return 0x02;
            else return 0xff;break;
            case 0x02://測(cè)試Z23,23正向?qū)?BR> P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xdf;//3口清0 11011111
            PORT6|=0x80;//1口置1 10000000
            delay8nop();
            if(P66==0)return 0x05;
            else return 0xff;break;
            case 0x04://測(cè)試Z31,31正向?qū)?BR> P6CR=0x3f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x40;//2口置1 01000000
            delay8nop();
            if(P65==0)return 0x08;
            else return 0xff;break;
            case 0x08://測(cè)試F12,12反向?qū)?BR> P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P66==0)return 0x03;
            else return 0xff;break;
            case 0x10://測(cè)試F23,23反向?qū)?BR> P6CR=0x9f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P65==0)return 0x06;
            else return 0xff;
            case 0x20://測(cè)試F31,31反向?qū)?BR> P6CR=0x9f;//置23口為輸出口 10011111
            P6CR|=0x80;//置1口為輸入口 10000000
            PORT6=0xdf;//3口清0 11011111
            PORT6|=0x20;//2口置1
            delay8nop();
            if(P67==0)return 0x09;
            else return 0xff;
            case 0x09://測(cè)試Z12,12正向?qū)y(cè)試
            z12=0;
            P6CR=0x9f;//置23口為輸出口 10011111
            P6CR|=0x80;//置1口為輸入口 10000000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P67==0)z12=1;
            //測(cè)試F12,12反向?qū)?BR> f12=0;
            P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P66==0)f12=1;
            if((z12==1)(f12==1))return 0x0a;
            else return 0xff;break;
            case 0x12: //測(cè)試Z23,23正向?qū)?BR> z23=0;
            P6CR=0x5f;//置13口為輸出口 01011111
            P6CR|=0x40;//置2口為輸入口 01000000
            PORT6=0xdf;//3口清0 11011111
            PORT6|=0x80;//1口置1 10000000
            delay8nop();
            if(P66==0)z23=1;
            //測(cè)試F23,23反向?qū)?BR> f23=0;
            P6CR=0x9f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P65==0)f23=1;
            if((z23==1)(f23==1))return 0x00;
            else return 0xff;
            case 0x24://測(cè)試Z31,31正向?qū)?BR> z31=0;
            P6CR=0x3f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//1口清0 01111111
            PORT6|=0x40;//2口置1 01000000
            delay8nop();
            if(P65==0)z31=1;
            //測(cè)試F23,23反向?qū)?BR> P6CR=0x9f;//置12口為輸出口 00111111
            P6CR|=0x80;//置3口為輸入口 00100000
            PORT6=0xbf;//2口清0 10111111
            PORT6|=0x20;//3口置1 00100000
            delay8nop();
            if(P65==0)f31=1;
            if((z31==1)(f31==1))return 0x0b;
            else return 0xff;
            default:return 0xff;break;

            }
            }
            return 0xff;}


            關(guān)鍵詞: IO口 3*4矩陣 按鍵程序

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉