buenas gente.. consulto lo siguiente..
estoy conectando un teclado matricial en proteus a un pic18f4550, el mismo circuito y de la misma manera.. en que lo conecte con un 16f628 y funciona excelente..
al parecer hay algo de los tris en la libreria kbd.c que no esta bien para usarlo con un 18f.. o nose..
el problema es que el pin_b1 de este pic se queda en un estado que no es ni bajo ni alto.. (en proteus color gris)
alguien puede decirme o darme una mano con esto???
tengo conectado un lcd al puerto D y funciona perfecto.. el problema es el teclado.. a alguien le paso?
lo estoy simulando en proteus 7.7 sp2..
ya me fije los fuses..
#include <18F4550.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES PUT //Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOPBADEN //PORTB pins are configured as analog input channels on RESET // Este fuse me pone el puerto b como entrada salida digital segun entiendo
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12 //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4 //System Clock by 4
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES NOVREGEN //USB voltage regulator enabled
#FUSES ICPRT //ICPRT enabled
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
y el codigo es tan simple como esto:
dentro de la funcion main ...
char k;
do
{
k=kbd_getc();
if(k!='\0')
{
lcd_putc(k);
}
}while(1);