holaa probe el programa con el 16f877a y todo perfecto. pero quise hacerle unas modificaciones, para permitir solamente el ingreso de 3 numeros por teclado( para luego intentar hacer un pograma como un control de acceso ) ... pero no he tenido exito :
aqui esta el codigo aver si alguien puede ayudarme a corregirlo
#include <16f877a.h> // Preprocessor directive that selects the chip
// Conversion a 8 bits
#fuses XT,NOWDT,NOPROTECT,NOLVP, // Preprocessor directive that defines the chip fuses
#use delay(clock=4000000) // Preprocessor directive that specifies clock speed
#use fast_io(C)
//#include ".\librerias\keypad.c"
#include <interkey.c> // es la misma libreria de Mauricio_V , le cambie el nombre para no confundirme
#include <lcd.c> // es la libreria que brinda ccs
//Libreria de teclado 4x4
unsigned char key; //Variable global tecla
int cont=0; // contador de las veces que presiono una tecla
int flag=0;
// Interrupcion RB4 - RB7 /////////////////////////////////////////////////////
#INT_RB
void interrupt_keypad()
{
// solo debo permitir el ingreso de 3 digitos por el teclado
if (cont<3)
{
key=read_keypad(); //Asigna la tecla pulsada
cont++;
lcd_putc('\f'); //
lcd_gotoxy(1,1); //Visualiza en el lcd
lcd_putc(key);
}
else {flag=1;} // si ya se ingresaron 3 pongo el falg=1
clear_interrupt(INT_RB);
}
//disable_interrupts(INT_RB);
// Programa Principal /////////////////////////////////////////////////////////
void main()
{
int cont=0;
flag=0;
SET_TRIS_C(0X00);
init_keypad();
lcd_init();
lcd_putc("\fEsperando...\n");
while(flag==0) // mientras el contador no llegue a 3 se queda en el bucle
{
}
// cuando el contador es igual a 3 ( osea se ingresaron 3 numeros por teclado) el fag=1
printf(lcd_putc,"\f se ingresaron 3 digitos por teclado y acaba el programa xd");
}