#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar line,key,column;
void key_down();
void delay();
void main()
{
while(1)
{
key_down();
}
}
void key_down()
{
line = column = 1;
key=P1;
if(key==0x0f)//检测是否有按键按下
{}
else
{
//检测列
switch(key&0x0f)
{
case 0x07: column=1;break;
case 0x0b: column=2;break;
case 0x0d: column=3;break;
case 0x0e: column=4;break;
}
//检测行
switch(key&0xf0)
{
case 0x70: key= column;break;
case 0xb0: key= column + 3;break;
case 0xd0: key= column + 7;break;
case 0xe0: key= column+11;break;
}
P0 = key;
delay();
}
}
void delay()
{
uchar x,y;
for(x=300;x>0;x--);
for(y=300;y>0;y--);
}
#define uint unsigned int
#define uchar unsigned char
uchar line,key,column;
void key_down();
void delay();
void main()
{
while(1)
{
key_down();
}
}
void key_down()
{
line = column = 1;
key=P1;
if(key==0x0f)//检测是否有按键按下
{}
else
{
//检测列
switch(key&0x0f)
{
case 0x07: column=1;break;
case 0x0b: column=2;break;
case 0x0d: column=3;break;
case 0x0e: column=4;break;
}
//检测行
switch(key&0xf0)
{
case 0x70: key= column;break;
case 0xb0: key= column + 3;break;
case 0xd0: key= column + 7;break;
case 0xe0: key= column+11;break;
}
P0 = key;
delay();
}
}
void delay()
{
uchar x,y;
for(x=300;x>0;x--);
for(y=300;y>0;y--);
}