这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教矩阵按键扫描的单片机程序问题

共1条 1/1 1 跳转至

请教矩阵按键扫描的单片机程序问题

工程师
2021-10-14 21:26:25     打赏

大家好!以下是某设备上的单片机程序,我有一些不明白的地方把它复制过来了,就是按键值的范围我不太理解

单片机源程序如下:


#include <c8051F020.H>
#include <intrins.H>
#define Keybus  P0
unsigned char R_Keyno;

unsigned char Get_Keyno(void)
{
     unsigned char Key_h,Key_l,Key_no;
   _nop_();_nop_();_nop_();
   Key_h=Keybus;           //我的理解:此时Key_h=P0,应该是P0口的实际状态。
   _nop_();_nop_();_nop_();_nop_();_nop_();
  Keybus=0x0f;               
  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  Key_l=Keybus;                  //我的理解:此时Key_l=0x0f
   _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();
  Keybus=0xf1;
   Key_no=Key_h | Key_l;        //我的理解:如果按位或的话那么 Key_no的值低四位永远是F
   _nop_();
   return Key_no;
}
这是矩阵键盘按键读取的子程序,

void keyin_work(void)
{
    switch (R_Keyno)                 //这是其他引用按键的程序,它的后四位并不是F,请问大神们这个怎么得出来的
         case     0xbc:
         case     0xec:
         case     0xea:
         case     0xba:
         case     0xda:
         case     0xd6:
         case     0xb6:
}
这是应用键盘值判断是哪个按键被按下的应用程序。




关键词: 按键     扫描     矩阵     源码    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]