Autor Tema: Como desactivar en 30 segundos un led por teclado matricial  (Leído 1570 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado fenix129

  • PIC10
  • *
  • Mensajes: 4
Como desactivar en 30 segundos un led por teclado matricial
« en: 09 de Octubre de 2012, 14:41:49 »
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.

Código: [Seleccionar]
#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);
      }
   }
}

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Como desactivar en 30 segundos un led por teclado matricial
« Respuesta #1 en: 12 de Octubre de 2012, 11:26:02 »
Yo creo que ya me di cuenta del error, en un teclado matricial conectado a un pic, cuando tu presionas una tecla, al pic no le llega el valor que dice allí, lo que hace es que se activa una entrada digital un solo pin, y eso es lo que tu tienes que testear, no esperar un * por que nunca lo vas a ver, mira a donde tienes conectado ese pin o monta el diagrama y nosotros te ayudamos... creo que es por eso que nunca se te activa.