No se de lo que me estais ablando es una paja que no e necesitado, donde todabia no me e metido. Solo quise poner lo fundamental lo que se que antes funcionaba. Esplicarme esto:
//ESTOY COMPLETAMENTE SEGURO DE QUE ESTE CODIGO FUNCIONA (Es original no hay nada modificado por my)
//PERO YA SEA POR EL COMPILADOR CCS O PROTEUS NO CONSIGO REALIZAR LECTURA ALGUNA DEL KEYPAD-PHONE 3X4
#include <16f877.h>
#FUSES NOWDT, XT, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=4M)
#DEFINE use_portd_lcd TRUE
#DEFINE use_portb_kbd TRUE
#include <lcd.c>
#include <kbd.c>
#include <stdio.h>
#use fast_io(B)
#use fast_io(D)
#BYTE PORTA=0X07
#BYTE TRISA=0X85
#BYTE PORTB=0x06
#BYTE TRISB=0X86
#BYTE PORTC=0X07
#BYTE TRISC=0X87
#BYTE PORTD=0X08
#BYTE TRISD=0X88
#bit alarma=portc.0
#bit cerradura=portc.1
void main (){
lcd_init();
kbd_init();
port_b_pullups(true);
long comando;
long acumulador;
long total;
long numero;
long intentos;
comando=0;
acumulador=0;
total=0;
numero=0;
intentos=0;
lcd_gotoxy(1,1);
lcd_putc("CODIGO: ");
lcd_gotoxy(9,1);
trisc=0x00;
portc=0x00;
while(true){
comando=kbd_getc();
/*//SI AÑADO ESTE CODIGO................
delay_ms(1000);
for (total=0;total<1000;total++){
for(numero=0;numero<5;numero++){
comando=kbd_getc();
printf(lcd_putc," %x",comando); delay_ms(1000);
}
lcd_putc("\f");
}
//.........kbd_getc(); NO REALIZA LECTURA ALGUNA SIEMPRE DEVUELBE 00 */
if(comando!=0 & comando!=42 & comando!=35){
lcd_putc(comando);
numero=comando-48;
total=acumulador+numero;
acumulador=total*10;
}
if(comando==42){
if(total==2365){
lcd_gotoxy(1,2);
lcd_putc("CODIGO CORRECTO");
cerradura=1;
}
if(total!=2365){
lcd_gotoxy(1,2);
lcd_putc("ERROR");
delay_ms(200);
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("CODIGO: ");
lcd_gotoxy(9,1);
comando=0;
acumulador=0;
total=0;
numero=0;
intentos=intentos+1;
if(intentos==3){
while(intentos==3){
alarma=1;}
}
}
}
}
}
Las salidas son erroneas incluso en PORTB este program que no hice yo Y antes funcionaba ¿Tengo que corregir algo en opciones de compilacion?