|
這個是某設備上的程序,我有一些不明白的地方把它復制過來了,就是按鍵值的范圍我不太理解
單片機源程序如下:
#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:
}
這是應用鍵盤值判斷是哪個按鍵被按下的應用程序。
|
|