Comentarios detallados sobre cada declaración en el programa del microcontrolador 89C51 y análisis del funcionamiento de todo el programa.
#?Definición? ¿Uchar? ¿No firmado? Té
#?Definición? uint? ¿No firmado? (Igual que las organizaciones internacionales) Organizaciones internacionales
Uchar? ¿datos? clave2
¿Código? ¿Uchar? dirtab[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80? };? //Mostrar tabla de códigos
¿No es válido? ¿llave? (?)?//Función de gestión de claves
{?Uchar? clave 1;
p 1 = 0x ff; //Leer clave
clave 1 = p 1;
if(key1!=0xff)? //Si se presiona una tecla,
{?int? delay(); //Retraso del rebote
p 1 = 0x ff; //Leer de nuevo
key 1 = p 1;
if(key1 ! =0xff)//? Si la clave aún es válida
{ key 1 = p 1;
¿Cambiar? (clave1)//Conversión clave-valor
{¿Caso? 0xff? :tecla 2 = 8; romper; // sin botón
¿Caso? 0xfe? :key 2 = 0; break; //Reasigna cada tecla por turno.
¿Caso? 0x FD:clave 2 = 1;
¿Caso? 0x FB:clave 2 = 2;
¿Caso? 0xf 7:clave 2 = 3;
¿Caso? 0x ef:clave 2 = 4;
¿Caso? 0x df:clave 2 = 5;
¿Caso? 0x BF:clave 2 = 6;
¿Caso? 0x7f:clave 2 = 7;
¿Incumplimiento de contrato? :break
}
}
}
}
¿No es válido? main()
{ clave 2 = 8
mientras(1)
{?key() //Botón de escaneo
P3 = dirtab[key 2]; //Busca la tabla y muéstrala
}
}