数码管为共阳的 #include unsigned char key; char code tab[4][4]={{0xc0,0xf9,0xa4,0xb0}, {0x99,0x92,0x82,0xf8}, {0x80,0x90,0x88,0x83}, {0xc6, 0xa1,0x86, 0x8e} }; void delay(unsigned char a) { unsigned char i; while(a--) for(i=100;i>0;i--); } char ksan() { unsigned char hang,lie; if(P1!=0x0f) delay(5); if(P1!=0x0f) { switch(P1&0x0f) { case 0x0e:hang=0;break; case 0x0d:hang=1;break; case 0x0b:hang=2;break; case 7:hang=3;break; } P1=0xf0; switch(P1&0xf0) { case 0xe0:lie=0;break; case 0xd0:lie=1;break; case 0xb0:lie=2;break; case 0x70:lie=3;break; } P1=0x0f; key=tab[hang][lie]; } return (key); } void main() { P1=0x0f; while(1) { ksan(); if(key!=0) { P2=key; } else { P2=0xff; } } } |