Saludos al foro.
Estoy creando un secuencial de LEDs con el PIC16F84 y la idea es que mediante un pulsador (on) se prenda un LED, después de 5 segundos se prenda el otro y el anterior se quede prendido y así sucesivamente hasta prender 10 LEDs.
El problema que tengo, es que este sistema debe tener una PARADA DE EMERGENCIA (stop) lo cual haga que cuando se presione éste pulsador, el sistema se pare por completo.
Hasta ahora avancé en algo el programa y funciona, pero cuando presiono "stop" el sistema se para, pero cuando vuelvo a presionar "on", el sistema empieza desde donde se interrumpió y yo quiero que cuando se presione "on", mi sistema vuelva a empezar desde el principio.
¿Cómo podría hacer eso? Hasta ahora no logro resolverlo.
Espero algo de su ayuda, amigos. Saludos.
Este es mi programa:
Estoy creando un secuencial de LEDs con el PIC16F84 y la idea es que mediante un pulsador (on) se prenda un LED, después de 5 segundos se prenda el otro y el anterior se quede prendido y así sucesivamente hasta prender 10 LEDs.
El problema que tengo, es que este sistema debe tener una PARADA DE EMERGENCIA (stop) lo cual haga que cuando se presione éste pulsador, el sistema se pare por completo.
Hasta ahora avancé en algo el programa y funciona, pero cuando presiono "stop" el sistema se para, pero cuando vuelvo a presionar "on", el sistema empieza desde donde se interrumpió y yo quiero que cuando se presione "on", mi sistema vuelva a empezar desde el principio.
¿Cómo podría hacer eso? Hasta ahora no logro resolverlo.
Espero algo de su ayuda, amigos. Saludos.
Este es mi programa:
Código:
#include <16f84a.h>
#fuses xt,nowdt
#use delay (clock=4000000)
#byte trisa=0x85
#byte trisb=0x86
#byte porta=0x05
#byte portb=0x06
#bit on=porta.2
#bit stop=porta.3
int8 i=0;
void detener();
void main(){
trisa=0b01100;
trisb=0x00;
porta=0x00;
portb=0x00;
while(1){
if(on==0){
portb=0b10000000;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11000000;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11100000;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11110000;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11111000;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11111100;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11111110;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
portb=0b11111111;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
porta=0b10;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
porta=0b11;
for(i=0;i<20;i++){
delay_ms(250);
if(stop==0)
detener();
}
}
}
}
void detener(){
while(on==1){
porta=0x00;
portb=0x00;
}
}
Última edición por un moderador: