holaaaaaaaaaaaaaaaa maestro como va e (suky) ???. que bueno tenerte por estos lados jijijijij. e echo lo que me dijiste pero ahora tengo un problema con el varrido, deveria ser 1000 01000 0010 0001 y de ahy empiesa denuevo siento esto en el puerto d desde RD0 a RD3 y de RD4 a RD7 todos en 1111 con resistensia pull up. si es que no estoy mal, pero la linea rotate_left(&Filas,1);
output_d(Filas); //Trasladamos el 0 a siguiente Pin.
no me hace lo que mensiono. maesto por favor nesesito de su saviduria alimentame de esos buenos pensamientos plisssssssssss jijijij, como dije tiene que ser en el puerto d. bueno dejo el codigo nuevamente y la foto de proteus. salu2.
#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#define use_portb_lcd TRUE //definir salida del puerto B para la lcd
#include<lcd.c> //libreria manejo lcd
#use standard_io(D)
///PROGRAMA
void main(void)
{
int i,j,filas;
char Keypad[4][4] = { {'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'E','0','F','D'} };
lcd_init(); //inicializa lcd
filas=0xF1;
output_d(filas );
While(TRUE){
for(i=0;i<5;i++){
rotate_left(&Filas,1);
output_d(Filas); //Trasladamos el 0 a siguiente Pin.
if(!input(PIN_D4)){ //¿se ha pulsado el boton?
j=1;}
if(!input(PIN_D5)){ //¿se ha pulsado el boton?
j=2;}
if(!input(PIN_D6)){ //¿se ha pulsado el boton?
j=3;}
if(!input(PIN_D7)){ //¿se ha pulsado el boton?
j=4;}
if(i==5){i=0;}
}
printf(lcd_putc,"tecla:%c",Keypad[j][i] ); //...presentacion
lcd_gotoxy(1,1);
}
}