Technika mikroprocesorowa
— W trakcie działania pętli bit przeniesienia C musi pozostać zawsze ustawiony w stan logicznej 1, ponieważ wchodzi do rotacji jako logiczna 1 (co ustalono na początku rozkazem sec). Tymczasem stosowane w pętlach czasowych rozkazy cpi, brnę, breq zmieniają wartość bitu przeniesienia C. W celu zachowania pierwotnej wartości bitu C należy wykorzystać stos do przechowania wartości rejestru statusowego sreg, w którym znajduje sie bit przeniesienia.
Czas:
In rl 6, sreg Push r 16
Pop rló Out sreg, rló ret
Skonfiguruj linie 0 portu D jako wejściowa podwieszona do zasilania i podłącz na niej przycisk (switch), natomiast linie 1 portu D jako wyjściowa i podłącz na niej diodę. Konfiguracja pozostałych linii portu D jest nieistotna (niech np. beda wejściami). Zwarcie switcha sygnalizuj świeceniem diody.
Odczyt stanów wejściowych za pomocą rozkazu „in”
— Ustalenie kierunku linii portu D: linia 0 staje sie wejściem, linia 1 wyjściem !di rló, ObOOOOOOIO
outDDRD, rló
— Podwieszenie linii 0 do zasilania, zgaszenie diody na linii 1 Idi rló, ObOOOOOOll
outPORTD, rló
pętla:
— Wczytanie stanu na wejściach fizycznych portu D In rló, PIND
— Iloczyn logiczny rejestru rló z liczba ObOOOOOOOl pozwoli wyselekcjonować wyłącznie stan linii 0
And i rló, ObOOOOOOOl
— Porównanie z liczba np. ObOOOOOOOl pozwoli określić, czy linia 0 jest zwarta czy rozwarta
Cpi rló, ObOOOOOOOl
— W przypadku zwarcia linii 0 skaczemy do etykiety Zapal:, w przeciwnym razie przechodzimy do etykiety Zgaś:
Brnę zapal
Zgaś:
— Diodę gasi logiczna 1 na linii 1 Sbiportd, 1
— Skok bezwarunkowy na etykiete Dalej Rjmp pętla
20