Programación ascendente
PD: Aunque es posible que este programa no se ejecute en su placa de desarrollo sin modificaciones, puede usarlo como plantilla y modificarlo usted mismo para lograr competencia. Cuando aprendes a programar por primera vez, estás constantemente imitando programas escritos por otros.
//Escáner de líneas y columnas, usted mismo puede definir el puerto y el método de escaneo. Aquí hay una breve introducción.
# include ltreg52.h gt//Incluir archivo de encabezado
#Definir carácter uchar sin signo
#Definir uint entero sin signo
Sin signo char const dofly[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x 71 } //; 0-F
escaneo de clave uchar (void);
Retraso no válido (uint I);
void main()
{
uchar key;
P2 = 0x 00; //1 El tubo digital mostrará los caracteres de la tecla cuando presione la tecla correspondiente.
while(1)
{
key = key scan(); //Llamar al escaneo del teclado,
Cambiar (tecla)
{
Caso 0x7e: P0 = do fly[0]; Break; //0 Presione la tecla correspondiente para mostrar el valor del código correspondiente.
Caso 0x7d: P0 = volar[1]; //1
Caso 0x7b: P0 = volar[2];
Caso 0x 77: P0 = volar[3]; //3
Caso 0x ser: P0 = volar[4]; //4
Caso 0x BD: P0 = volar[5]; //5
Caso 0x bb: P0 = volar[6]; //6
Caso 0xb 7: P0 = volar[7]; romper; //7
Caso 0x de: P0 = volar[8]; //8
Caso 0x DD :P0 = volar[9]; //9
Caso 0x db: P0 = volar[10]; //a
Caso 0xd 7: P0 = volar[11]; romper; //b
Caso 0x ee: P0 = hacer volar; //c
Caso 0x ed: P0 = hacer volar[13]; romper; //d
caso 0xeb: P0 = hacer volar[14]; //e
Caso 0xe 7: P0 = hacer volar[15] ]; break; //f
}
}
}
Uchar teclascan(void)//Función de escaneo de teclado, usando Modo de escaneo de fila e inversión de fila.
{
uchar cord_h, cord_l; //Valores de filas y columnas
P3 = 0x0f; //Las salidas de filas y líneas son todas 0.
P3 amp; 0x0f //Leer los valores de columna y fila
if(cord_h!=0x0f) //Primero verifique si el botón está presionado.
{
Delay(100); //Ve a agitar
if(cord_h!=0x0f)
{
P3 amp; 0x0f //Leer el valor de la línea de la columna
P3 = cord_h |
P3 amp; 0xf0//Lee el valor de la línea
return(cord _ h cord _ l //El último valor del código de combinación del teclado
}
} return(0x ff); //Valor de retorno.
}
Retraso nulo(uint i)//función de retardo
{
mientras(I-);
}