Primero que nada un saludo cordial a todos los colegas.
Luego de pasar toda la tarde de solucionar mi problema recurro a este excelente foro.
Mi duda es que no eh podido salir de una estructura "For" dentro de un case, para dar más detalle publico el código fuente
Mi objetivo era hacer una serie de secuencias de luces y que vayan cambiando cuando el pic reciba un pulso bajo. Eh utilizado el Puerto A y B para 13 leds y ya eh habilitado el MCLR y OSC1 y OSC2 como E/S
Al recibir el primer pulso la secuencia se ejecuta pero al recibir el 2do o 3ero o 4to pulso la secuencia del 1ero sigue corriendo. Los siguientes casos a modo de ejemplo solo encienden un led.
PD: Eh recortado las sentencias porque es demasiado largo, pero publico lo necesario
////PIC16F88////
Espero haya quedado claro y muchas gracias
Luego de pasar toda la tarde de solucionar mi problema recurro a este excelente foro.
Mi duda es que no eh podido salir de una estructura "For" dentro de un case, para dar más detalle publico el código fuente
Mi objetivo era hacer una serie de secuencias de luces y que vayan cambiando cuando el pic reciba un pulso bajo. Eh utilizado el Puerto A y B para 13 leds y ya eh habilitado el MCLR y OSC1 y OSC2 como E/S
Al recibir el primer pulso la secuencia se ejecuta pero al recibir el 2do o 3ero o 4to pulso la secuencia del 1ero sigue corriendo. Los siguientes casos a modo de ejemplo solo encienden un led.
PD: Eh recortado las sentencias porque es demasiado largo, pero publico lo necesario
////PIC16F88////
Código:
void main(){
int i=0;
setup_oscillator(OSC_8MHZ|OSC_INTRC);
set_tris_b(0x00);
set_tris_a(0xE0);
output_b(0x00);
output_a(0x00);
disable_interrupts(GLOBAL);
while(true) // Bucle infinito. True = 1
{
if(!input(pin_A7))
{
delay_ms(30);
switch(i%5){
case 0:
for(;;){
output_high(PIN_A0);
delay_ms(80);
output_high(PIN_A0);
output_high(PIN_A1);
delay_ms(80);
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
delay_ms(80);
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
delay_ms(80);
.
.
.
output_high(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
delay_ms(80);
output_high(PIN_A0);
output_low(PIN_A1);
delay_ms(80);
}
break;
case 1:
output_toggle(pin_b1);
while(!input(pin_A7));
break;
case 2:
output_toggle(pin_b2);
while(!input(pin_A7));
break;
case 3:
output_toggle(pin_b3);
while(!input(pin_A7));
break;
case 4:
output_toggle(pin_b4);
while(!input(pin_A7));
break;
}
i++;
}
}
}
Espero haya quedado claro y muchas gracias