⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个典型的线翻转法按键程序.txt

📁 一个典型的线翻转法按键程序 处理器是Mega16 编译器是Codevision 1。24。4a 十六各按键
💻 TXT
字号:
 [原创]一个典型的线翻转法按键程序

处理器是Mega16 编译器是Codevision 1。24。4a
十六各按键,标准矩阵键盘
void KeyScan(){
unsigned char lowKey;
unsigned char highKey;

static unsigned char keyActCount=0 ;   //按键闭合时间计数
if (gKeyScan == TRUE){                        //是否允许扫描键盘,
    lowKey = PINA;                             
     if((lowKey &= 0x87) != 0x87){              //判断键盘行线是否都为高电平
        //如果行线中有低电平的,说明有键闭合           
        DDRA=0x87;
        PORTA =0x78;                //翻转行列线电平方向
        delay_ms(1);
        highKey = PINA;             
        if ((highKey &0x78) !=0x78){ //判断列线电平状态,如果有低电平的进入译码过程
          switch (lowKey) {
            case 0x83: 
                  GetKeyValue(KEY_1,KEY_2,KEY_3,KEY_YES,YES_KEY);
                  break;
            case 0x85:       
                  GetKeyValue(KEY_4,KEY_5,KEY_6,KEY_NO,NO_KEY);
                  break;
                  
            case 0x86:       
                  GetKeyValue(KEY_7,KEY_8,KEY_9,KEY_UP,DOWN_KEY);
                  break;
            case 0x07:       
                  GetKeyValue(KEY_X,KEY_0,KEY_J,KEY_DOWN,UP_KEY);
                  break;
            default:break;      
          }
           if (++keyActCount > MAX_KEY_COUNT) {      //连续长时间按键 进入第二功能
              keyActCount=0;
              gKeyValue = preKeyValue;
              if (keyToneStatus == TRUE) keyTone = TRUE;
              if ((gKeyValue >='1' ) &&(gKeyValue<='5')) {
               gKeyValue -='0';      //连续按住1-5号键时为快捷键
               gKeyAttr = FAST_KEY;
              } 
           }
        }   
        DDRA=0x78;            //恢复行列线初始状态 列线输出低电平,行线做输入
        PORTA = 0x87;
        gKeyScan =FALSE;
      }
      //没有键闭合
      else{
       if (preKeyValue != 0){           //在按键打开后,按键才生效
           gKeyValue = preKeyValue;
           keyActCount=0;
           preKeyValue = 0x00;
       }
      }  
  }
}
void GetKeyValue(unsigned char col0Value,
                 unsigned char col1Value,
                 unsigned char col2Value,
                 unsigned char col3Value,
                 unsigned char col3Attr
){
  gKeyAttr = NUM_KEY;
   if (KEY_COL0 ==0)      {preKeyValue = col0Value; }
   else if (KEY_COL1 ==0) {preKeyValue = col1Value; }
   else if (KEY_COL2 ==0) {preKeyValue = col2Value; }
   else if (KEY_COL3 ==0) {preKeyValue = col3Value; gKeyAttr = col3Attr;}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -