Puoi provare questo codice ?
Codice:
program MyProject
' Declarations section
main:
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
fissa:
while true
gpio.1=1
gpio.2=1
if gpio.0=1 then
while (gpio.0=1)
wend
goto inizio
end if
wend
inizio:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
GOTO mezzo
end if
wend
mezzo:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
goto strobo
end if
wend
strobo:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
goto fissa
end if
wend
end.
se invecevuoi usarlo senza oscillatore esterno, usa questo, ricordantoti di settare nelle preferenze di progetto (project->edit project) di usare l'oscillatore interno, ed inoltre gia che ci sei di disabilitare le funzioni sul GP3/MCLR (recuperi 3 pin)
Codice:
program MyProject
' Declarations section
main:
asm
bsf status,RP0;
call 0x3FF
movwf osccal
bcf status,RP0
end asm
TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7
fissa:
while true
gpio.1=1
gpio.2=1
if gpio.0=1 then
while (gpio.0=1)
wend
goto inizio
end if
wend
inizio:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
GOTO mezzo
end if
wend
mezzo:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
goto strobo
end if
wend
strobo:
delay_ms(100)
while true
if gpio.0=1 then
while (gpio.0=1)
wend
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
while (gpio.0=1)
wend
goto fissa
end if
wend
end.