Visualizza messaggio singolo
Vecchio 22 luglio 14, 13:40   #17 (permalink)  Top
trabo
User
 
Data registr.: 19-07-2014
Messaggi: 17
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
avevo visto l'ultima copia del sorgente e crcom non c'era...
non è che puoi postare il codice che effettivamente stai usando ?

Inoltre per debuggare il programma ti consiglio un ottimo programma che si chiama pic simulator ide. che simula anche l'hardware attorno (ingressi pulsanti etc)

allora questo è quello che ho scritto da 0... con soli 2 effetti e funziona.
Se aggiungo il 3 effetto lo salta:

[program Lampeggioled



main:


while TRUE
trisio.1=0
trisio.2=0
trisio.0=1

gpio.1=1
gpio.2=1
cmcon=7



delay_ms(2000)

while gpio.0=0
gpio.1=1
delay_ms(1000)
gpio.1=0
delay_ms(1000)
wend



while gpio.0=0
delay_ms(2000)
gpio.2=0
delay_ms(2000)
wend



wend


Mentre questo è il primo in assoluto che ho realizzato...
Solo che ogni volta che premo il pulsante, mi va random:

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.


INFINE, questo è quello che ho provato inserendo la variabile K ed eliminando i goto.
Questo si blocca al secondo effetto e da li non si muove:


program Lampeggioled

const tasto as byte[4]=(0,1,2,3)
dim K as byte
dim premuto as byte

main:
gpio.0=0
gpio.1=0
gpio.2=0
K=0
premuto=0
trisio.1=0
trisio.2=0
trisio.0=1
cmcon=7
while true
if gpio.0=0 then
premuto=0
end if

if (gpio.0=1)and (K<3) and (premuto=0) then
K=K+1
premuto=1
end if

if(gpio.0=1) and (K=3)and(premuto=0)then
K=0
end if

if K=0 then
gpio.1=1
gpio.2=1
end if

if K=1 then
gpio.1=1
gpio.2=1
delay_us(50)
gpio.1=0
gpio.2=0
delay_us(50)
end if

if K=2 then
gpio.1=1
delay_ms(500)
gpio.1=0
delay_ms(500)
gpio.2=1
delay_ms(500)
gpio.2=0
delay_ms(500)
end if

if K=3 then
gpio.1=1
gpio.2=1
delay_ms(50)
gpio.1=0
gpio.2=0
delay_ms(50)
end if
wend
end.

Ora tutti e 3 hanno dei problemi, e fino ad ora, l'unico che cambia perfettamente è quello con i soli while, ma non legge (se lo aggiungo ) il 3o effetto[/COLOR]
trabo non è collegato   Rispondi citando