色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          鍵盤子程序(AVR) 

          作者: 時間:2013-12-09 來源:網(wǎng)絡(luò) 收藏

          ) 

          鍵盤掃描有
          #i nclude "jn8515def.h"

          /******以下是鍵盤排列圖******
          | | |
          PC0 ___1|__2|__3|__
          | | |
          PC1 ___4|__5|__6|__
          | | |
          PC2 ___7|__8|__9|__
          | | |
          PC3 ___C|__0|__S|__
          | | |
          | | |
          PC4 PC5 PC6
          *****************************/
          //下沿為有效鍵值 0 1 2 3 4 5 6 7 8 9 s(10) c0 c1 c4 c7 cs c
          flash uchar cKeyTab[]={0x57,0x6e,0x5e,0x3e,0x6d,0x5d,0x3d,0x6b,0x5b,0x3b,0x37,0x47,0x66,0x65,0x63,0x27,0x67};
          flash uchar cKeyOut[]={0xef,0xdf,0xbf}; //其中一列為0
          flash uchar cKeyDir[]={0x10,0x20,0x40};
          uchar cMenu=0;

          uchar cKeyVal()
          { static uchar cLastKv,cSameKvNum=0;
          static bit bKeyPress=0;
          uchar i,j,cKeytmp=0xff;
          for(i=0;i3;i++)
          { DDRC=0x80;
          DDRC|=cKeyDir[i];
          PORTC=cKeyOut[i];
          #asm("nop")
          #asm("nop")
          cKeytmp=PINC0x7f;
          for(j=0;j16;j++)
          { if(cKeyTab[j]==cKeytmp)
          { cWaitTime=10; //延時去抖
          goto Next;
          }
          }
          }
          // do{ //等待按鍵釋放
          // }while(!bKeyPress);
          cSameKvNum=0;
          bKeyPress=0;
          return 0xff;
          Next:
          // delay_ms(2);
          if(bKeyPress) return 0xff;
          if(cKeytmp==cLastKv)
          { if(++cSameKvNum>10)
          { cSameKvNum=0;
          bKeyPress=1;
          return j;
          }
          }
          else
          { cSameKvNum=0;
          cLastKv=cKeytmp;
          }

          return 0xff;//返回空鍵值
          }



          評論


          相關(guān)推薦

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

          關(guān)閉