线反转法/3X3矩阵/改变位置
#include <reg51.h>
void scankey();
unsigned i,j,k,t;
void delay(unsigned char a)
{
unsigned char j=0;
while(a–)
for(j=0;j<123;j++);
}
void main ()
{
scankey();
delay(1);
}
void scankey()
{
while(1)
{
P1=0xc7;
delay(10);
if(P1!=0xc7)
{
j=P1; //记录一个键值
P1=0xf8; //反转记录下键值
k=j|P1; //与操作,获取键码
switch(k)
{
case 0xf6:P0=0x3f;P2=0xfe;break;
case 0xee:P0=0x06;P2=0xfd; break;
case 0xde:P0=0x5b;P2=0xfe;break;
case 0xf5:P0=0x4f;P2=0xfd;break;
case 0xed:P0=0x66;P2=0xfe;break;
case 0xdd:P0=0x6d; P2=0xfd;break;
case 0xf3:P0=0x7d;P2=0xfe;break;
case 0xeb:P0=0x07;P2=0xfd;break;
case 0xdb:P0=0x7f;P2=0xfe;break;
}
}
}
}