大家好!以下是某设备上的单片机程序,我有一些不明白的地方把它复制过来了,就是按键值的范围我不太理解
单片机源程序如下:
#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:
}
这是应用键盘值判断是哪个按键被按下的应用程序。