#include <xc.h>
#include <lcd.h>
#define _XTAL_FREQ 1000000
#pragma config FOSC=INTOSC_EC
#pragma config WDT=OFF
#pragma config PBADEN=OFF
#define fila1 LATB0
#define fila2 LATB1
#define fila3 LATB2
#define fila4 LATB3
#define columna1 RB4
#define columna2 RB5
#define columna3 RB6
#define columna4 RB7
unsigned char Tecla();
void main(){
//Configuracion de pines
TRISB=0xF0;//(RB7:RB4 Como entradas) (RB3:RB0 Como salidas)
LATB=0xFF;// Entradas y salidas inician en 1;
RBPU=0; //Activar resistencias de Pull-UP (RB7:RB4)
__delay_ms(100);
//Inicializacion del LCD
Iniciar_LCD();
Comando_LCD(0x01);//Limpiar LCD
while(1){
fila1=0; fila2=1; fila3=1; fila4=1; //Fila1_ON
fila1=1; fila2=0; fila3=1; fila4=1; //Fila2_ON
fila1=1; fila2=1; fila3=0; fila4=1; //Fila3_ON
fila1=1; fila2=1; fila3=1; fila4=0; //Fila4_ON
Cursor_LCD(1,5);
Caracter_LCD(Tecla);
}
}
unsigned char Tecla(){
while(columna1==1 && columna2==1 && columna3==1 && columna4==1){
}
fila1=0; fila2=1; fila3=1; fila4=1; //Fila1_ON
if(columna1==0)return '1';
if(columna2==0)return '2';
if(columna3==0)return '3';
if(columna4==0)return 'A';
fila1=1; fila2=0; fila3=1; fila4=1; //Fila2_ON
if(columna1==0)return '4';
if(columna2==0)return '5';
if(columna3==0)return '6';
if(columna4==0)return 'B';
fila1=1; fila2=1; fila3=0; fila4=1; //Fila3_ON
if(columna1==0)return '7';
if(columna2==0)return '8';
if(columna3==0)return '9';
if(columna4==0)return 'C';
fila1=1; fila2=1; fila3=1; fila4=0; //Fila4_ON
if(columna1==0)return '*';
if(columna2==0)return '0';
if(columna3==0)return '#';
if(columna4==0)return 'D';
}