void keydown()
{
u8 a;
key=0x0f; //這里的key應該是定義為按鍵的端口了,如P0,key=0x0f是打通低4位輸入通道
if(key!=0x0f) //讀出端口判斷有無鍵按下
{
delay(1000); //一般是延時10ms進行消抖
if(key!=0x0f) //再次讀低4位進行判斷
{
key=0x0f; //再一次打通低4位輸入通道
switch(key) //讀出端口值進行判斷
{
case(0x07):keyvalue=0;break; //這個地方似乎常量不對,應包括高4位的的值,,否則要改為switch(key&0x0f)
case(0x0b):keyvalue=1;break;
case(0x0d):keyvalue=2;break;
case(0x0e):keyvalue=3;break;
} |