我玩的pic相信51应该也差不多
我整理一下发
#include <>unsigned char code table[]={0x3f,0x06,0x5b,0x4f, //01230x66,0x6d,0x7d,0x07, //45670x7f,0x6f,0x77,0x7c, //89ab0x39,0x5e,0x79,0x71}; //cdefunsigned char temp; unsigned char key; unsigned char i,j;
void main(void) { while(1) { P3=0xff; P3_4=0; temp=P3; temp=temp & 0x0f; //保留低四位
if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); //延迟 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; }
temp=P3; P1_0=~P1_0; P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f){ temp=P3; temp=temp & 0x0f; }
}
}
P3=0xff; P3_5=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; } temp=P3; P1_0=~P1_0; P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } } }
。。。} } //由于字数限制剩下的那两行键盘扫描我就用。。。代替了
相信你也应该能懂
我采纳率一直保持100%希望不要在这里掉下去。。
有不懂的可以问我!