Teclado 4x4 en el puerto D del pic16f877a....ccs c

#1
hola a todos bueno consulto una ves mas en este foro por el siguiente problema que me estoy enfrentando hace mas de una semana, por ende e tenido que acudir a ustedes, bueno mi problemas es el siguiente:
antes que todo estoy usando el pic16f877a y estoy programando en el compilador de CCS C, bueno estoy tratando de manejar un teclado 4x4 en el puerto D del pic, y por que no uso otros puertos ? por que ya los tengo ocupados, pero no me funciona nada e intentado casi de todo lo que esta en mi imaginacion pero nada, no logro optener un dato del teclado e echo el barrido eso de que dejo las columnas como entradas y ago unbarrido por las filas y tampoco me sale, bueno si alguien me pudiese ayudar con la programacion de este teclado seria de verdad grandioso, bueno que esten bien salu2.


PD=(el puerto D no tiene resistencia pull ups >;( ).
 
#2
hola q tal japifer capaz podria ayudarte si me pusieras tu programa del teclado y asi ver en q estas fallando yo e realizado lo mismo pero en ves del puerto D use el B por las resistencias pull ups
y las interrupciones para el puerto voy a buscar el archivo y luego te estare comentando

Saludos............
 
#6
Aquí les coloco unas librerías para manejo de teclados 4X4, la librería original es llamada kdb2.c que trabaja en el puerto B yo la modifique un poco y ahora trabaja con el puerto D.

#include <16f877.h>
#use delay(clock=4000000)
#fuses xt,noprotect,nowdt
#include <kbd_portd.c> //libreria manejo TECLADO 4X4 puerto d
#include <lcd.c> //libreria manejo lcd 4 bits
#use fast_io(B)
#use fast_io(D)


///PROGRAMA
void main(void)
{
char c,limit; //variable donde se almacena tecla pulsada
signed char i;

lcd_init(); //inicializa lcd

lcd_putc(" Tecla:" ); //presentacion
lcd_gotoxy(8,1); //donde se va a mostrar tecla
delay_ms(500);
lcd_putc("\f");

for(i=0;i<16;i++){ //bucle...
do{ //espera hasta...
c=kbd_getc();
}
while(c==0); //...pulsar una tecla

printf(lcd_putc,"%c",c);
limit=i+1;
} //...infinito

}
 

Adjuntos

Arriba