PROBLEMA con programma pic 12f629
Salve a tutti.
Sono qui per chiedervi una mano se possibile.
da qualche giorno sto studiando il mondo dei PIC.
Ho realizzato un programma in MikroBasic, utilizzando il pic 12f629.
E sono giorni che sto provando ad ultimarlo
E' un piccolo progetto, ovvero una schedina , con il pic centrale, dove c'è collegato un pulsante e 8 led.
Praticamente ho bisogno che questo sistema,quando si preme il pulsante, cambia effetto ai led.
Appena acceso luce fissa, pulsante premuto metà potenza, pulsante premuto strobo, pulsante premuto 4 led accesi e 4 no (si alternano) premo il pulsante deve tornare su fissa.
Il mio problema è che quando premo il pulsante, mi cambia gli effetti, ma non in modo ordinato, ma casuale.
Magari fa 3 volte un effetto poi passa all'altro.
Spero nel vostro aiuto.
Grazie
Ecco il programma
program MyProject
main:
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
IF gpio.0=0 THEN
GOTO fissa
end if
fissa:
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
while true
gpio.1=1
gpio.2=1
if gpio.0=1 then
goto inizio
end if
wend
inizio:
delay_ms(100)
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
while true
if gpio.0=1 then
goto mezzo
end if
GPIO.1=1
gpio.2=1
delay_us(50)
GPIO.2=0
gpio.1=0
delay_us(50)
IF GPIO.0=1 THEN
GOTO mezzo
end if
wend
mezzo:
delay_ms(100)
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
while true
if gpio.0=1 then
goto strobo
end if
gpio.2=1
delay_ms(500)
gpio.2=0
delay_ms(500)
gpio.1=1
delay_ms(500)
gpio.1=0
delay_ms(500)
if gpio.0=1 then
goto strobo
end if
wend
strobo:
delay_ms(100)
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
while true
if gpio.0=1 then
goto fissa
end if
gpio.1=1
gpio.2=1
delay_ms(50)
gpio.1=0
gpio.2=0
delay_ms(50)
if gpio.0=1 then
goto fissa
end if
wend
end.
non capisco proprio dove sbaglio.
Ultima modifica di trabo : 19 luglio 14 alle ore 12:25 |