Hola, que tal recien estoy comenzando a utilizar el teclado matrical con un lcd, y estoy realizando un programa donde el detectar un 1 en el puerto E0 este enciende un led en el puerto C0, y pormedio de un teclado matricial al presionar '*' este se debe apagar, si despues de 30 segundo no se a presionado la tecla '*' se pone todo el puerto C con un 1, es decir lo enciende todo. Por medio del lcd se visualizan los segundos que van. Mi problema es que se enciende el led y se visualiza la cuenta de los 30 segundos pero cuando presiona la tecla '*' en el telcado no detiene la operacion. Asi que agradeceria mucho su ayuda para saber donde esta mi error, les dejo el codigo que tengo hasta ahora en pic c.
#include <16F887.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4M)
#define use_portb_lcd TRUE
#include <lcd.c>
#include <kbd.c>
#use fast_io(C)
#use fast_io(E)
#byte portc = 0x07
#byte porte = 0x09
#bit BT1 = 0x09.0
int t,n,a=1,d=29;
void inicializar(void)
{
setup_adc_ports(NO_ANALOGS);
set_tris_e(0b11111111);
set_tris_c(0b00000000);
output_c(0x00);
lcd_init();
kbd_init();
}
void main(void)
{
inicio:
inicializar();
for(;;)
{
if(BT1==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"ACTIVADO");
output_c(0x1);
do
{
t=kbd_getc();
if(t!=0)
{
if(t=='*')
{
output_C(0x00);
goto inicio;
}
}
lcd_gotoxy(1,2);
printf(lcd_putc,"Tiempo Desc: %d\r",d);
delay_ms(1000);
a++;
d--;
}
while(a<=30);
output_C(0xFF);
}
}
}