不知道哪里有问题,按键按下去数码管都没反应
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,temp;
sbit key1=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
dula=1;
P0=0;
dula=0;
wela=1;
P0=0xc0;
wela=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
dula=1;
P0=table[num-1];
dula=0;
}
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
针对你贴出来的问题,就在于两个while(temp!=0xf0),很明显你只是要判断temp和0xf0是不是相等,直接用if就可以,用while反而不可以。因为一旦条件成立,你的程序就在while(temp!=0xf0)那对花括号里出不来,除非你复位或者重新上电。
注意:逻辑很重要!!!
= =额,因为我后面还没把松手检测的程序加进去啊,加进去就能跳出来了。。。确实是渣渣新手,还在慢慢学习,希望大神多多赐教。。。
谢谢 = =确实是因为多了个;号。。。难怪没结果
一周热门 更多>