个人感觉是Switch语句没能正常执行
但找不到原因
单片机C语言源程序如下:
#include <REG52.H>
sbit LSA=P2^5;
sbit LSB=P2^6;
sbit LSC=P2^7;
unsigned char Key_Val,Key_Down,Key_Old,Key_Up;//按键专用变量
unsigned char Key_read()
{
unsigned char temp = 0;
if(P3^0 == 0) temp = 1;//S7
if(P3^1 == 0) temp = 2;//S6
if(P3^2 == 0) temp = 3;//S5
if(P3^3 == 0) temp = 4;//S4
return temp;
}
void main ()
{
LSC=1;
LSB=0;
LSA=0;
while(1)
{
Key_Val = Key_read();//实时读取键码值
Key_Down = Key_Val & (Key_Old ^ Key_Val);//捕捉按键下降沿
Key_Up = ~Key_Val & (Key_Old ^ Key_Val);//捕捉按键上降沿
Key_Old = Key_Val;//辅助扫描变量
switch(Key_Down)
{
case 1:
P0=0XFE;
break;
case 2:
P0=0XFD;
break;
case 3:
P0=0XFB;
break;
case 4:
P0=0XF7;
break;
}
}
}
|