KEYPAD 4x4 FLEX Cuando se desee conectar un keypad de 4x4 con cualquier PIN, sólo se tiene que agregar la siguiente biblioteca. #define ROW0 PIN_C0 #define ROW1 PIN_C1 #define ROW2 PIN_C2 #define ROW3 PIN_C3 #define COL0 PIN_C4 #define COL1 PIN_C5 #define COL2 PIN_C6 #define COL3 PIN_C7 #include <keypad4x4flex.h> Diagrama de Pines Los KeyPad son un conjunto de pulsadores dispuestos en forma de una matriz de 4 filas y 4 columnas, estos dispositivos son utilizados para introducir información al microcontrolador. ROW0 --> PIN_X0 ROW1 --> PIN_X1 ROW2 --> PIN_X2 ROW3 --> PIN_X3 COL0 --> PIN_X4 COL1 --> PIN_X5 COL2 --> PIN_X6 COL3 --> PIN_X7 --R-- ROW0 {'1' ,'2' ,'3' ,'A'} --R-- ROW1 {'4' ,'5' ,'6' ,'B'} --R-- ROW2 {'7' ,'8' ,'9' ,'C'} --R-- ROW3 {'*' ,'0' ,'#' ,'D'} COL0 COL1 COL2 COL3 | | | | R R R R |____|____|____|___+vcc kbd_get char kbd_get(void) Esta funcion no es bloqueante y devuelve una variable de tipo char con el valor de la tecla pulsada, si no encuentra alguna tecla pulsada o si encuentra mas de una tecla, devuelve 0 kbd_getchar char kbd_getchar(void) Esta funcion es similar a pero bloqueante tambien devuelve una variable de tipo char con el valor de la tecla pulsada Ejemplo de KeyPad4x4 Flex para compilar necesitas los siguientes comandos Ejemplo de compilacion : ./compila.sh ej_keypad4x4flex 16f877a ej_pinio.c #include <pic/p16f877a.h> #define FOSC_HZ 20000000 #define ROW0 PIN_B0 #define ROW1 PIN_B1 #define ROW2 PIN_B2 #define ROW3 PIN_B3 #define COL0 PIN_B4 #define COL1 PIN_B5 #define COL2 PIN_B6 #define COL3 PIN_B7 #include <uart.h> #include <keypad4x4flex.h> #include <delayms.h> int main (void) { char tmp; char INTRO[]="PRESIONA UNA TECLA\n"; TRISB=0xFF; TRISC=0xFF; delayms(100); uart_open(SET_9600_8N1); set_pullup_portb(TRUE); uart_puts(INTRO); while(TRUE) { delayms(200); tmp = kbd_getchar(); uart_putc(tmp); } return 0; }