这个按键怎么才可以用啊?
下面程序是我写的。可是按按键没有反应。感觉程序没有问题呀。那个师傅来看看。指导下。是怎么回事。研究了两天没有结果。很是郁闷啊。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num;
uchar code table[]={ //共阳极0--F
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
P0=0xff;
P2=0;
while(1)
{
P3=0xfe; //11111110第1行线置0
temp=P3;
temp=temp&0xf0; //判断是否有按键按下
while(temp!=0xf0)//有按键按下temp!=0xf0
{
delay(5);
temp=P3; //重新读P3的值
temp=temp&0xf0; //重新与运算
while(temp!=0xf0)//确认有按键按下
{
temp=P3; //再读P3的值 这一句很关键
switch(temp) //如果temp=以下case中的某一值
{ //就执行该行的语句
case 0xee:num=1;
break;
case 0xde:num=5;
break;
case 0xbe:num=9;
break;
case 0x7e:num=13;
break;
}
while(temp!=0xf0) //等待按键释放
{
temp=P3;
temp=temp&0xf0;
}
P0=table[num-1]; //从0开始显示到F
}
}
}
}
while(temp!=0xf0)//有按键按下temp!=0xf0
把这句和下面和这句相同的while都改成if
否则你在while那个为真的语句里永远第二个while为真,其他没再看了,你先试试...
我运行了单步。看见程序都没有进入到按键确认的语句。
谢谢。你的回复。我在试下。
我改为if还是一样的。按键都没有反应。
师傅们来看看。卡住了。
有中断是不是会好点?