Witam,
Napisałem kawałek programu który ma generować przebieg na porcie b.0
około 9ms - stan wysoki
około 4,5ms - stan niski
Użyłem do tego licznika, żeby odmierzał czas, dokładność tutaj akurat nie ma znaczenia.
Problem w tym że nie działa to jak należy, tzn wykonuje się tylko jeden podprogram.
Wiem że jest coś nie tak, bo po przepełnieniu licznika, wykonuje się znów ten sam podprogram.
Jak zrobić żeby ustawić port jako "1" na jakiś czas, później zmienić na "0" na jakiś czas itd itd...
Nie mam pomysłu na ten program...
Jak można zrealizować, kilkakrotną zmiane stanu portu?
Może być na podprogramach?
Napisałem kawałek programu który ma generować przebieg na porcie b.0
około 9ms - stan wysoki
około 4,5ms - stan niski
Użyłem do tego licznika, żeby odmierzał czas, dokładność tutaj akurat nie ma znaczenia.
Problem w tym że nie działa to jak należy, tzn wykonuje się tylko jeden podprogram.
Wiem że jest coś nie tak, bo po przepełnieniu licznika, wykonuje się znów ten sam podprogram.
Jak zrobić żeby ustawić port jako "1" na jakiś czas, później zmienić na "0" na jakiś czas itd itd...
Nie mam pomysłu na ten program...
Jak można zrealizować, kilkakrotną zmiane stanu portu?
Może być na podprogramach?
$regfile = "m16def.dat"
$crystal = 16000000
dim a as single
Config Timer1 = Timer , Prescale = 1
enable interrupts
enable timer1
on timer1 sygnal1
cls
Do
loop
End
sygnal1:
timer1 = 65535
incr a
portb.0 = 1
IF a = 308 then
stop timer1
a = 0
goto sygnal2
end if
return
sygnal2:
start timer1
timer1 = 65535
incr a
portb.0 = 0
IF a = 150 then
stop timer1
a = 0
goto koniec
end if
return
koniec:
portb.0 = 1
end