Programación de escaneo de teclado matricial 4*4, en línea, etc.
#includelt;reg52.hgt;
#includelt;intrins.hgt;
#define uchar unsigned char
#define uint tabla de códigos int sin firmar
uchar[]={0xc0, 0xf9, 0xa4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x90, 0x88, 0x83,
0xc6, 0xa1 , 0x86, 0x8e};
/****Codificación de tubo digital Yang, si es ***Yin, puede cambiar el contenido de la matriz a 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71*/
retraso nulo(uint i){ //Función de retardo
uint j ;
uint j;
retraso nulo(uint i){ p>
for(;igt;0;i--)
for( j=112;jgt;0;j--);
}
void keycan(){
uchar num, key=0, i; /p>
for(i=0; ilt; 4; i ){
P2=~(0x01lt;lt;i);
num=P2; p>
num=P2amp;0xf0;
if(num!=0xf0) {
retraso(5);
num=P2amp;0xf0 ;
if(num!=0xf0){
switch( num){
caso 0xe0: clave=1 4*i; >
caso 0xd0: clave=2 4*i;
caso 0xb0: clave=3 4*i;
caso 0x70: clave=4 4* i; romper;
}
}
if(clave){
P0=tabla[clave-1]; p>
retraso(10);
}
más P0=0xff;
}
}
}
void main()
{ p>
while(1)
keyscan();
}