#include <reg52.H>
void delay(int n)
{
int i,k;
for(i=0;i<=100;i++)
for(k=0;k<=n;k++);
}
unsigned char up=0;
unsigned char bright[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x00};
unsigned char num[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
unsigned char codeds[6]={0,0,0,0,0,0};
unsigned char coded[]={1,2,3,4,5,6};
unsigned char h,l;
unsigned char out=0;
unsigned char flag;
void coded_lock(void)
{
unsigned char tmp;
P2=0xfe;
for(tmp=0;tmp<up;tmp++)
{
P2=P2<<1;
if(up>6)
{
up=0;
}
}
switch(up)
{
case 0: codeds[0]=out; break;
case 1: codeds[1]=out; break;
case 2: codeds[2]=out; break;
case 3: codeds[3]=out; break;
case 4: codeds[4]=out; break;
case 5: codeds[5]=out; break;
}
}
unsigned char key_c(void)
{
unsigned char h,l;
h=0xf0;
P0=h;
l=P0&0xf0;
if(l!=0xf0)
{
delay(100);
if(l!=0xf0)
{
l=P0&0xf0;
P0=l|0x0f;
h=P0&0x0f;
return (h+l);
}
}
return (0xff);
}
unsigned char key_old;
unsigned char key_make(void)
{
unsigned char key_down,key_new;
key_new = key_c();
key_down = key_new ^ (key_old ^ key_new);
key_old = key_new;
switch(key_down)
{
case 0x7e:up++; return 0; break;
case 0xbe:up++; return 1; break;
case 0xde:up++; return 2; break;
case 0xee:up++; return 3; break;
case 0x7d:up++; return 4; break;
case 0xbd:up++; return 5; break;
case 0xdd:up++; return 6; break;
case 0xed:up++; return 7; break;
case 0x7b:up++; return 8; break;
case 0xbb:up++; return 9; break;
default: return 10; break;
}
}
void main()
{
int z=0;
while(1)
{
out=key_make();
coded_lock();
for(z=0;z<6;z++)
P1=bright[codeds[z]];
}
}
我这段代码主要是想实现:我按一次按键,数码管显示一个数,但是现在变成了按什么按键都是显示0,请问这是什么问题