单片机新人,求助各位!KEIL4已经用注册机破解过了,但是现在出现了这样一个问题,编译之后没有报错,但是却无法生成目标文件。
谢谢大家!!
代码如下:(矩阵键盘)
#include<reg51.h>
#define key_port P0
sbit hc573_en=P1^3;
unsigned char key_value;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void key_scan()
{
unsigned char temp;
key_port=0x7f;
delay(5);
temp=key_port;
switch(temp)
{
case 0x77:key_value=1;break;
case 0x7b:key_value=2;break;
case 0x7d:key_value=3;break;
case 0x7e:key_value=4;break;
default:break;
}
while(key_port!=0x7f);
key_port=0xbf;
delay(5);
temp=key_port;
switch(temp)
{
case 0xb7:key_value=5;break;
case 0xbb:key_value=6;break;
case 0xbd:key_value=7;break;
case 0xbe:key_value=8;break;
default:break;
}
while(key_port!=0xbf);
key_port=0xdf;
delay(5);
temp=key_port;
switch(temp)
{
case 0xd7:key_value=9;break;
case 0xdb:key_value=10;break;
case 0xdd:key_value=11;break;
case 0xde:key_value=12;break;
default:break;
}
while(key_port!=0xdf);
key_port=0xef;
delay(5);
temp=key_port;
switch(temp)
{
case 0xe7:key_value=13;break;
case 0xeb:key_value=14;break;
case 0xed:key_value=15;break;
case 0xee:key_value=16;break;
default:break;
}
while(key_port!=0xef);
}
main()
{
hc573_en=0;
P1=0;
hc573_en=1;
P2=0;
key_value=0xff;
while(1)
{
key_scan();
P2=~key_value;
}
}
编译结果:
PS:1.hc573_en=0;
P1=0;
hc573_en=1;
P2=0;
这一段是什么意思?
2.P2=~key_value,P2为什么要取反?意义何在?
[img]file:///C:\Users\rongrong\Documents\Tencent Files\1609573405\Image\C2C\7`6[2D{SGZMIKY00I~1N1%K.png[/img]
|