Untitled52

Untitled52



96 10. Arytmetyka mikrokontrolerów

różnić się więcej niż o -128 .. +127 w stosunku do adresu następnego rozkazuj występującego po instrukcji DJNZ. W podanym przykładzie różnica adresów) (etykiet) nie może przekraczać wartości:

-128 < Skok-Dalej < 127

Jeśli stosowany debuger nie wyświetla użytych w asemblerze symboli, J podany program rozpoczyna się np. od adresu OlAOh, to po uruchomieniu debugera na ekranie komputera może pojawić się zapis:

pamięć kodu programu

postać symbolicz

na programu:

adres:

zawartość:

OlAOh

7Fh 04h

MOV

R7,#4

01 A2h

63h 90h OFFh

Skok:

XRL

Pl,#0FFh

01 A5h 01A7h

ODFh OFBh

Dalej

DJNZ

R7,Skok

Asembler obliczył różnicę adresów Skok

- Dalej =

OFBh i podstawił ją

jako drugi argument instrukcji DJNZ R7,0FBh.

Jeśli podany w instrukcji DJNZ warunek (Rn * 0 lub (adr) * 0 ) nie jest spełniony, to mikrokontroler wykonuje następną instrukcję programu.

Instrukcje DJNZ nie wpływają na stan znaczników słowa statusowego I PSW, z wyjątkiem instrukcji DJNZ ACC,rel.

Maksymalna liczba powtórzeń pętli programu z użyciem instrukcji DJNZ wynosi 256. Aby to uzyskać należy wpisać do rejestru licznikowego warto# początkową równą 0, ponieważ jako pierwsze wykonywane je$t odejmowanie 1, a później porównanie.

W wielu pętlach programu służących do odmierzania odcinków czasu wykorzystywana jest instrukcja NOP, np:

MOV R7,#0    ;rejestr R7 jest licznikiem pętli

Skok:    NOP    ;1 cykl maszyn.

DJNZ    R7,Skok ;2 cykle maszyn.

Instrukcja NOP trwa jeden cykl maszynowy i w tym czasie procesor nie zmiel zawartości żadnego z rejestrów lub komórek pamięci. Czas wykonywania p?programu wynosi 256 * (1+2) = 768 cykli maszynowych.

Porównanie dwóch argumentów’ prowadzi zwykle do rozgałęziei programu, czyli skoku do fragmentu programu jeśli wynikiem porównania j<

prawda lub realizacja dalszej części programu jeśli wynikiem porównania jest fałsz- Wynika z tego, że wykonywane są równocześnie dwie operacje: porównania i skoku warunkowego. Konstruktorzy mikrokontrolera 8051 i wszystkich następnych tej rodziny przewidzieli taką sytuację. W liście rozkazów znalazły się rozkazy pełniące podane funkcje oznaczone symbolem CJNE (Compare and Jump relative if Not Equal):

CJNE A,adr,rel CJNE A,#dana,rel CJNE Rn,#dana,rel CJNE @Ri,#dana,rel


;jcśli A1(adr) to skocz do PC+rel ;jeśli A1dana to skocz do PC+rel ;jeśli Rn1dana to skocz do PC+rel ;jeśli (Ri)1dana to skocz do PC+rel

We wszystkich rozkazach CJNE zmieniany jest znacznik przeniesienia C

w następujący sposób:

•    jeśli Argument_l < Argument_2 to C=l,

•    jeśli Argument_l > Argument_2 to C=0,

•    Argumentem 1 jest: A, Rn (R0 .. R7) lub Ri (R0, Rl),

•    Argumentem 2 jest: adr (komórka wewnętrznej pamięci RAM adresowana bezpośrednio albo rejestry specjalne SFR) lub 8-bitowa dana będąca drugim bajtem instrukcji.

Rozkazy CJNE umożliwiają w bezpośredni sposób wykonanie skoku jeśli oba argumenty są różne. Poniższe przykłady wskazują jak wykonać porównanie i skok w przypadku gdy:

•    Argument_l < Argument_2, np. przy porównaniu zawartości akumulatora A i rejestru B należy wykonać skok do programu rozpoczynającego się od etykiety (adresu) Wykonaj jeśli A < B, a jeśli A > B to do programu rozpoczynającego się etykietą Dalej:

CJNE    A,B,Tutaj    ;jeśli A < B to C=1

Tutaj:    JC    Wykonaj    ;skok jeśli C=1

Dalej:

•    ArgumenM > Argument 2, np. przy porównaniu zawartości rejestru R0 i zmiennej 3Ch należy wykonać skok do programu rozpoczynającego się od etykiety Skok_l jeśli R0 > 3Ch, a jeśli R0 < 3Ch to do programu rozpoczynającego się etykietą Skok 2:

CJNE    R0,#3Ch,Tutaj    ;jeśli R0 > 3Ch to C=0

Tutaj:    JNC    Skok 1    ;skok jeśli C=0

Skok_2: ....................

1

   Argument_l > Argument 2, np. przy porównaniu zawartości akumulatora A i zmiennej 2Eh należy wykonać skok do programu


Wyszukiwarka

Podobne podstrony:
Untitled53 98 10. Arytmetyka mikrokontrolerów rozpoczynającego się od etykiety Duży jeśli A > 2Eh
Untitled48 88 10. Arytmetyka mikrokontrolerów Z przytoczonych form zapisów liczb można wysnuć następ
Untitled49 90 10 Arytmetyka mikrokontrolerem Jeśli wykonane zostanie dodawanie dwóch zmiennych 1-baj
Untitled51 94 10. Arytmetyka mikrokontrolcrói 94 10. Arytmetyka
Untitled54 100 10. Arytmetyka mikrokontrolerów! Jeżeli operacje dzielenia dotyczą potęgi 2 (np.
Untitled50 92 10. Arytmetyka mikrokontrolen Znacznik C jest przeniesieniem między kolejnymi bajtami.
Untitled55 102 10. Arytmetyka mikrokontrolerów Korekcja dziesiętna A7 Ą : 0110 OOOOb Suma: A = 80h =
ANIA ŚWIĄTECZNE „Za 10 mili-Iitrów kadzidła płaci się więcej niż za 28
skanuj0006 (291) 96__Rysunek techniczny Gwinty zaleca się wymiarować w rzucie na płaszczyznę równole
dowa składa się z więcej niż jednej warstwy kruszywa, to każda warstwa powinna być wyprofilowana i
Kompozyty Składają się z więcej niż jednego materiału, stanowią kombinację najlepszych parametrów
DSC07919 (5) ĘĘMSt0tó, zmieniają się więcej niż 2 razy w stosunku do najmniejszej mierzonej Mrteiti
63617 skanuj0006 (291) 96__Rysunek techniczny Gwinty zaleca się wymiarować w rzucie na płaszczyznę r
1. System plików Jeśli program podczas swojego działania posługuje się więcej niż jednym plikiem (np

więcej podobnych podstron