Hola amigos, bueno tengo una duda en cuanto mi programa, lo más elemental ya esta hecho es un contador ascedente, que al llegar a 0 prende el motor / foco, (cosa que ya nos salio) pero ahora tengo la duda es que yo quiero meter los tiempos, osea
no programar la tecla "1" y me de 10 segundos,
si no teclear 1 y 0 y me lo lea y me haga la función
al igual si meto 1 y 5 = 15
o igual si meto 0 y 1= me de 1 para que no se repitan, cual seria mi solución?
les anexo parte del programa
esta ensamblado en PIC C
#include <16F887.h> // PIC a utilizar
#FUSES XT // Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOWDT // No Watch Dog Timer
#FUSES NOPUT // No Power Up Timer
#FUSES NOPROTECT // Code not protected from reading
#FUSES NODEBUG // No Debug mode for ICD
#FUSES NOBROWNOUT // No brownout reset
#FUSES NOLVP // No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD // No EE protection
#FUSES NOWRT // Program memory not write protected
#use delay(clock=4000000) // Oscilador a 4MHz
#define use_portb_kbd TRUE // Puerto B, a utilizar para el Teclado Matricial
#include <kbd4x4.c> // Libreria para el manejo del Teclado Matricial a utilizar
#define use_portd_lcd TRUE // Puerto D, a utilizar para el LCD
#include <LCD.c> // Libreria para el manejo del LCD a utilizar
boolean var=0;
void main() {
char k;
int counter;
port_b_pullups(TRUE);
lcd_init();
kbd_init();
lcd_putc("\fIM-602 \nPULSE EL TIEMPO");
start:while (TRUE) {
k=kbd_getc();
//////////////////////// RUTINA TECLA 1 /////////////////////////
if(k=='1') /// AQUI TENGO LA DUDA PARA METER 2 TECLAS Y LO ALMACENE EN UNA VARIABLE Y ME SALGA UNA SALIDA QUE ES %U
{counter=1;
loop1:lcd_putc("\fFOCO APAGADO");
lcd_gotoxy(1,2);
printf(lcd_putc,"POR %u SEGUNDOS ",counter);
counter=counter-1;
k=kbd_getc();
delay_ms(1000);
if(k=='#')//LA IDEA ES QUE ACA RECONOZCA QUE SE OPRIMIO LA TECLA # E INTERRUMPA LA TEMPORIZACION.
{lcd_putc("\fMOTOR EN PAUSA");
delay_ms(5000);}//
else {delay_ms(500);//Mitad de un segundo
if (counter>10)
goto loop1;
else lcd_putc("\fFOCO ENCENDIDO EN \n0 SEGUNDOS");
delay_ms(1000);
lcd_putc("\fPulse una tecla \npara iniciar");
k=kbd_getc();
}
}
}
}
Gracias , y espero me contesten
no programar la tecla "1" y me de 10 segundos,
si no teclear 1 y 0 y me lo lea y me haga la función
al igual si meto 1 y 5 = 15
o igual si meto 0 y 1= me de 1 para que no se repitan, cual seria mi solución?
les anexo parte del programa
esta ensamblado en PIC C
#include <16F887.h> // PIC a utilizar
#FUSES XT // Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOWDT // No Watch Dog Timer
#FUSES NOPUT // No Power Up Timer
#FUSES NOPROTECT // Code not protected from reading
#FUSES NODEBUG // No Debug mode for ICD
#FUSES NOBROWNOUT // No brownout reset
#FUSES NOLVP // No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD // No EE protection
#FUSES NOWRT // Program memory not write protected
#use delay(clock=4000000) // Oscilador a 4MHz
#define use_portb_kbd TRUE // Puerto B, a utilizar para el Teclado Matricial
#include <kbd4x4.c> // Libreria para el manejo del Teclado Matricial a utilizar
#define use_portd_lcd TRUE // Puerto D, a utilizar para el LCD
#include <LCD.c> // Libreria para el manejo del LCD a utilizar
boolean var=0;
void main() {
char k;
int counter;
port_b_pullups(TRUE);
lcd_init();
kbd_init();
lcd_putc("\fIM-602 \nPULSE EL TIEMPO");
start:while (TRUE) {
k=kbd_getc();
//////////////////////// RUTINA TECLA 1 /////////////////////////
if(k=='1') /// AQUI TENGO LA DUDA PARA METER 2 TECLAS Y LO ALMACENE EN UNA VARIABLE Y ME SALGA UNA SALIDA QUE ES %U
{counter=1;
loop1:lcd_putc("\fFOCO APAGADO");
lcd_gotoxy(1,2);
printf(lcd_putc,"POR %u SEGUNDOS ",counter);
counter=counter-1;
k=kbd_getc();
delay_ms(1000);
if(k=='#')//LA IDEA ES QUE ACA RECONOZCA QUE SE OPRIMIO LA TECLA # E INTERRUMPA LA TEMPORIZACION.
{lcd_putc("\fMOTOR EN PAUSA");
delay_ms(5000);}//
else {delay_ms(500);//Mitad de un segundo
if (counter>10)
goto loop1;
else lcd_putc("\fFOCO ENCENDIDO EN \n0 SEGUNDOS");
delay_ms(1000);
lcd_putc("\fPulse una tecla \npara iniciar");
k=kbd_getc();
}
}
}
}
Gracias , y espero me contesten