Ejemplo de análisis del lenguaje de programación de microcontroladores
Escaneo de líneas y filas: los cuatro bits altos generan un nivel bajo y los cuatro bits bajos generan un nivel alto. Cuando los cuatro bits inferiores de los datos recibidos no son todos altos, significa que se ha presionado un botón. Luego, en función del valor de los datos recibidos, se juzga qué columna se ha presionado y luego, a su vez, los cuatro bits altos generan un nivel alto y los cuatro bits bajos generan un nivel bajo. Luego, basándose en el valor de los cuatro bits superiores recibidos, se juzga qué fila se presionó, de modo que se pueda determinar qué tecla se presionó.
/****************************************** ********************************
*Nombre de la función
:Botón
*Función
:
Detecta la clave y lee el valor de la clave.
*Entrada
:
Ninguno
*Salida
:
Ninguno
********************************************* *** **********************************/
voidKeyDown(no válido) p>
{
Té
a = 0;
GPIO_KEY = 0x0f
if(GPIO_KEY!=0x0f )// Lee si el botón está presionado.
{
retraso 10 ms(); //Retraso 10 ms para antirrebote.
if(GPIO_KEY!=0x0f)//Comprueba si el teclado está presionado nuevamente.
{
GPIO_KEY = 0X0F
//Columna de prueba
Interruptor (GPIO_KEY)
{
Caso (0X07):
valor clave = 0; roto
Caso (0X0b):
valor clave = 1; Romper;
Caso (0X0d):
valor clave = 2; Romper;
Caso (0X0e):
valor clave = 3; romper;
}
//Línea de prueba
GPIO_KEY = 0XF0
Interruptor (GPIO_KEY)
{
Caso (0X70):
KeyValue = KeyValue roto;
Caso (0Xb0):
valor clave = valor clave 4;
Caso (0Xd0):
valor clave = valor clave 8;
Caso (0Xe0):
valor clave = valor clave 12; break;
}
Y ((a lt50) amp; amp(GPIO_KEY!=0xf0))//Detección de liberación de clave.
{
retraso 10 ms()
a
}
}
}
}