Ingresso di conteggio con PIC16F84
Salve a tutti , sto realizzando un circuitino che utilizzando tre porte di ingresso del PIC .
in due porte in particolare devo contare gli inpulsi.
su queste due porte chi prima arriva a 6 deve creare un altro evento ed azzerare il tutto .
fatto tutto sembrerebbe che funzioni ma , a volte accade che il tutto si fermi a 4 oppure 5 .
credo di aver fatto qualche errore sul codice ..lo posto qui sperando di venirene a capo
grazie infinite
main:
dim k as byte
dim j as byte
trisa=%00000
trisb=%11111111
porta=0
portb=1
inizio:
porta=0
portb=1
delay_ms(100)
if portb.1=0 then
porta.3=1
gosub sigla
goto primo
end if
goto inizio
primo:
delay_ms(100)
if portb.2=0 then
gosub uno
j=j+1
end if
delay_ms(100)
if portb.3=0 then
gosub due
k=k+1
end if
if k = 6 then
goto fine
end if
if j = 6 then
goto fine
end if
goto primo
sigla:
delay_ms(3000)
porta.0=1
delay_ms(150)
porta.0=0
return
uno:
delay_ms(100)
porta.1=1
delay_ms(150)
porta.1=0
return
due:
delay_ms(100)
porta.1=1
delay_ms(150)
porta.1=0
return
fine:
delay_ms(8000)
porta.2=1
delay_ms(150)
porta.2=0
delay_ms(30000)
porta.3=0
k=0
j=0
goto inizio
end.
in due porte in particolare devo contare gli inpulsi.
su queste due porte chi prima arriva a 6 deve creare un altro evento ed azzerare il tutto .
fatto tutto sembrerebbe che funzioni ma , a volte accade che il tutto si fermi a 4 oppure 5 .
credo di aver fatto qualche errore sul codice ..lo posto qui sperando di venirene a capo
grazie infinite
main:
dim k as byte
dim j as byte
trisa=%00000
trisb=%11111111
porta=0
portb=1
inizio:
porta=0
portb=1
delay_ms(100)
if portb.1=0 then
porta.3=1
gosub sigla
goto primo
end if
goto inizio
primo:
delay_ms(100)
if portb.2=0 then
gosub uno
j=j+1
end if
delay_ms(100)
if portb.3=0 then
gosub due
k=k+1
end if
if k = 6 then
goto fine
end if
if j = 6 then
goto fine
end if
goto primo
sigla:
delay_ms(3000)
porta.0=1
delay_ms(150)
porta.0=0
return
uno:
delay_ms(100)
porta.1=1
delay_ms(150)
porta.1=0
return
due:
delay_ms(100)
porta.1=1
delay_ms(150)
porta.1=0
return
fine:
delay_ms(8000)
porta.2=1
delay_ms(150)
porta.2=0
delay_ms(30000)
porta.3=0
k=0
j=0
goto inizio
end.
