7 Instrukcje skoków i wywołań podprogramów 77
Przykład 2:
Lcd .On:
Dalej:
Jeśli do wyjścia portu PI.7 dołączona jest dioda elektroluminescencyjna (LED) jak na rysunku, to testując linię portu PI.7 można włączyć diodę wykonując instrukcję:
JBC Pl.7,Dalej
;jeśli bit Pl.7-1 to zeruj bit ;i wykonaj skok do etykiety ;{adresu) Dalej
Dioda elektroluminescencyjna (LED) świcd się jeśli na linii Pl.7 wystąpi stan zera logicznego (przepływ prądu) l jest zgaszona jeśli linia PI.7*1 (brak przepływu prądu). Dla włączonej diody testowany w instrukcji JBC warunek nie jest spełniony co i tak nic ma znaczenia, ponieważ dioda jest zapalona. Jeżeli dioda jest zgaszona to instrukacja JBC spowoduje jej włączenie.
DJNZ argumentadres
Decrement and Jump relative
Warunek:
Dziabnie: PC <= PC + 2, Rn cr Rn - 1 Jeśli Rn * 0 to PC c= PC + rei
PC <= PC + 3, (adr) <= (adr) -1 Jeśli (adr) * 0 to PC c= PC + rei
Adresowanie: Mnemonik: Struktura bajtów: Cykle Znacz-
_.___maszynowe: nfla:
rejestrowe: |
DJNZ |
Rn,rel |
| 1 1 0 1 | 1 r r r | 2 |
- |
1_E£l_1 | ||||
bezpośrednie: |
DJNZ |
adr,rei |
1 1 0 1 | 0 1 0 1 | 2 |
- |
adr | ||||
,.-v^s • |
rei- |
Dziabnie:
Zmniejszenie zawartości:
• rejestru Rn, Rn « R7..R0,
• komórki wewnętrznej pamięci RAM adresowanej bezpośrednio adresem adr.
Instrukcje zaliczane do grupy bajtowej wymiany danych przedstawiono w tabeli 4-1. Dotyczą one przesyłania danych między rejestrami procesora i wewnętrzną oraz zewnętrzną pamiędą RAM, a także pobierania argumentów z pamięci kodu programu.
Tabela 4-1. Instrukcje wymiany danych
Mnemonik instrukcji |
Operaqe |
Tryby adresowania |
Liczba cykli maszyn. |
Instrukcje dotyczące wewnętrznej pamięa RAM (IDATA) | |||
MOV A,<bajt> |
A <= <bajt> |
R B N P |
1 lub 2 |
MOV <bajt>,A |
<bajt> <= A |
RB P |
1 lub 2 |
MOV Rn,<bajt> |
Rn <= <bajt> |
R B N P |
1 lub 2 |
MOV <bajt>,Rn |
<bajt> c= Rn |
RB P |
1 lub 2 |
MOV QRi,<bajo |
(Ri) c= <bajt> |
B N P |
1 lub 2 |
MOV <bajt>,@Ri |
<bajt> c= (Ri) |
B P |
1 lub 2 |
MOV <adr>,*cadrl> |
<adr> c= <adr1> |
R B N P |
2 |
MOV DPTR.#dana 16 |
DPTR c= rłdana 16 |
N |
2 |
PUSH adr |
stos c= (adr) |
B |
2 |
IKDP adr |
(adr) <= stos |
B |
2 |
XCłl A,<bajt> |
A <bajt> |
RB 1* |
1 |
XCHD A,0Ri |
a3..0 ° ®r*3..0 |
P |
1 |
Instrukcje dotyczące zewnętrznej parni ęd RAM (XDATA) | |||
MOVX A,0Ri |
A c= (256*P2+Ri) |
P |
2 |
MOVX @Ri.A |
(256*P2+Ri) <= A |
P |
2 |
MOVX A,©DPTR |
A c= (DPTR) |
P |
2 |
MOVX 0DPTRA- |
(DPTR) ć= A |
P |
2 |
Instrukcje dotyczące pamięd kodu programu (CODĘ) | |||
MOVC A,@A+DPTR |
A c= (A+DPTR) |
1 |
2 |
MOVC A,@A+PC |
A c= (A+PC) |
1 |
2 |
Instrukcje MOV A,<bajt>,.. ,MOV <adr>,<adrl> umożliwiają przesyłanie danych między dwoma komórkami wewnętrznej parnięd RAM, rejestrów specjalnych (SFR) i akumulatorem oraz stosowane są do wpisywania lub odczytywania 8-bitowych argumentów. Należy pamiętać, że rejestry specjalne (SFR) można adresować tylko bezpośrednio, a segment wewnętrznej pamięa RAM o adresach 80H..UFFH (w procesorach 8052 i nowszych) tylko pośrednio. Wyjaśniają to poniższe przykłady, w których podany tryb adresowania dotyczy drugiego argumentu. Najczęściej jest mm drugi lub trzed bajt instrukcji (w instrukcji MOV <adr>,<adrl>):
MOV A,R5 ;adresowanie rejestrowe, A cr R5
qn/r,\c 1