编译的头文件。
程序如下:
# include <reg51.h>
void Timer2(void) interrupt 1
{
TH0=-(50000/256);
TL0=-(50000%256);
}
void key4_4(uchar key) //错误就在这里。
{
unsigned char k,in;
if(RI=1)
{
while(1)
{
P3=0xfe;
in=P3;
if(in!=0xfe)
{ delay();//消除抖动
in=P3;
switch(in)
{
case 0xee:key=0;
break;
case 0xde:key=1;
break;
case 0xbe:key=2;
break;
case 0x7e:key=3;
break;
}
}
P3=0XFD;
in=P3;
if(in!=0XFD)
{ delay(); //消除抖动。
in=P3;
switch(in)
{
case 0xed:key=4;
break;
case 0xdd:key=5;
break;
case 0xbd:key=6;
break;
case 0x7d:key=7;
break;
}
}
P3=0xfb;
in=P3;
if(in!=0xfb)
{ delay();//消除抖动
in=P3;
switch(in)
{
case 0xeb:key=8;
break;
case 0xdb:key=9;
break;
case 0xbb:key=10;
break;
case 0x7b:key=11;
break;
}
}
P3=0xf7;
in=P3;
if(in!=0xf7)
{ delay();//消除抖动
in=P3;
switch(in)
{
case 0xe7:key=12;
break;
case 0xd7:key=13;
break;
case 0xb7:key=14;
break;
case 0x77:key=15;
break;
}
}
return (key);
}
}
}
void delay5ms()
{
unsigned char i,j;
for(i=0;i<121;i++)
for(j=0;j<100;j++);
}