谁有lm3s811控制4*4键盘的程序,发上来分享一下吧,谢谢了

2019-03-24 15:40发布

谢谢了 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
Study_Stellaris
2019-03-24 23:15
< 矩阵键盘的可以试试参考下一个 PIC 单片机的,改成 LM3S811 的吧。
CHAR keycodes[16] = {'7','8','9','/','4','5','6','*','1','2','3','-','.','0','=','+'};

CHAR keypadread()
// Find a key, wait for
// it to be released and return.
{ CHAR key = scankeypad();
   if (key)
      while (scankeypad() != 0)//松手检测
         /* Nothing */  ;  
   return key;
}

CHAR scankeypad()
// Scan the keypad for a keypress.
// Return 0 for no press or the char pressed.
{ INT8 row,col,tmp;
   CHAR key=0;

   // Disable ADC functionality on Port A
   ADCON1 = 6;

   // Initialise Port for input, and PORTC for output
   TRISA = PORTC = 0xFF;
   TRISC = 0;

   for (row=0; row < KEYP_NUM_ROWS; row++)
    { // Drive appropriate row low and read columns:
      PORTC = ~(1 << row);
      asm ( "NOP");     
      tmp = PORTA;
   
      // See if any column is active (low):
      for (col=0; col<KEYP_NUM_COLS; ++col)
         if ((tmp & (1<<col)) == 0)
          { INT8 idx = (row*KEYP_NUM_COLS) + col;
            key = keycodes[idx];
            goto DONE;
          }
    }
   DONE:

   // Disable Port Drive and return.
   TRISC = 0xFF;
   return key;
}

一周热门 更多>

相关问题

    相关文章