Witam.
Jestem początkujący w programowaniu mikrokontrolerów i mam prośbę do osób z większym doświadczeniem o wyjaśnienie zasady działania poniższego kodu.
Ustawianie wejść, wyjść, aliasy i zmienna jest zrozumiałe.
Pierwszą pętle rozumiem w ten sposób że jeżeli naciśnięty jest S1 to wykonuje podprogram Obs_s1 - czyli po naciśnięciu S1 zmienna Opozn przyjmuję wartość zero.
Druga pętla to zwiększanie zmiennej Opozn co 10ms
Później tego kawałka nie rozumiem:
Dalej warunek że jeżeli zmienna Opozn osiągnie wartość 200 to wyjście sterujące D2 ma zmienić stan na przeciwny, w przeciwnym wypadku ma zostać zmieniony stan wyjścia sterującego diodą D1.
Jestem początkujący w programowaniu mikrokontrolerów i mam prośbę do osób z większym doświadczeniem o wyjaśnienie zasady działania poniższego kodu.
‘Program obslugi jednego przycisku S1 za pomoca instrukcji Debounce
‘Krotkie przycisniecie S1 umozliwia właczenie i wyłaczenie diody LED1
‘natomiast przycisniecie przycisku S1 na czas ok 2 sekund umozliwia wlaczenie lub wylaczenie diody LED2
$regfile = „m8def.dat” ‘informuje kompilator o pliku dyrektyw mikrokontrolera
$crystal = 8000000 ‘informuje kompilator o czŕstotliwosci oscylatora
‘taktuj¦cego mikrokontroler
Config Pinb.0 = Input ‘linia PB0 jako wejsciowa
Config Pinb.1 = Output ‘linia PB1 jako wyjsciowa
Config Pinb.2 = Output ‘linia PB2 jako wyjsciowa
Dim Opozn As Byte ‘pomocnicza zmienna zliczajaca opoznienia
Led1 Alias Portb.1 ‘przypisanie nazwie Portb.1 nazwy Led1
Led2 Alias Portb.2 ‘przypisanie nazwie Portb.2 nazwy Led2
S1 Alias Pinb.0 ‘przypisanie nazwie Pinb.0 nazwy S1
Set Portb.0 ‘dolaczenie do linii PB0 rezystora podciagajacego
Do ‘poczatek nieskoczonej petli Do-Loop ‘niesko˝czona pŕtla Do...Loop
Debounce S1 , 0 , Obs_s1 , Sub ‘jeťli nacisniety przycisk S1,to skok do podprogramu ‘Obs_s1
Loop
End ‘koniec programu
Obs_s1: ‘podprogram Obs_s1
Opozn = 0 ‘zerowanie zmiennej liczacej opoznienia
Do ‘poczatek petli Do-loop
Waitms 10 ‘opoznienie 10 ms
Incr Opozn ‘zwiekszenie o jeden wartosci zmiennej opoznienia
Loop Until Opozn = 200 Or S1 = 1 ‘jesli S1 puszczony lub zmienna opozn osiagnie wartosc ‘200 to opusc petle
If Opozn = 200 Then ‘jesli opozn=200 (200*10 ms)=2 sekundy to
Toggle Led2 ‘zmiana na przeciwny stanu wyjscia sterujacego dioda LED D2
Else ‘w przeciwnym razie
Toggle Led1 ‘zmiana na przeciwny stanu
‘wyjscia sterujacego dioda LED D1
End If
Return ‘powrot z podprogramu
Ustawianie wejść, wyjść, aliasy i zmienna jest zrozumiałe.
Pierwszą pętle rozumiem w ten sposób że jeżeli naciśnięty jest S1 to wykonuje podprogram Obs_s1 - czyli po naciśnięciu S1 zmienna Opozn przyjmuję wartość zero.
Druga pętla to zwiększanie zmiennej Opozn co 10ms
Później tego kawałka nie rozumiem:
Loop Until Opozn = 200 Or S1 = 1Dalej warunek że jeżeli zmienna Opozn osiągnie wartość 200 to wyjście sterujące D2 ma zmienić stan na przeciwny, w przeciwnym wypadku ma zostać zmieniony stan wyjścia sterującego diodą D1.
