KEYPAD 4x4 Cuando se desee conectar un keypad de 4x4 con el puerto D o B, sólo se tiene que agregar la siguiente biblioteca. //para usar el puerto D #define PORTD_FOR_KEYPAD4X4 #include <keypad4x4.h> //para usar el puerto B #define PORTB_FOR_KEYPAD4X4 #include <keypad4x4.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 informacion 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 para compilar necesitas los siguientes comandos Ejemplo de compilacion : ./compila.sh ej_keypad4x4 16f877a ej_pinio.c #include <pic/p16f877a.h> #define FOSC_HZ 20000000 #define PORTB_FOR_KEYPAD4X4 #include <uart.h> #include <keypad4x4.h> #include <delayms.h> int main (void) { char tmp; char INTRO[]="\nPRESIONA 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; }