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) świeci się jeśli na linii P1.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 argument.adres
Decrement and Jump relative
Warunek:
Dziabnie: PC c= F*C + 2, Rn cr Rn - 1 Jeśli Rn * 0 to PC c= PC + rei
PC c= PC + 3, (adr) c= (adr) -1 Jeśli (adr) * 0 to PC c= IKT + rei
Adresowanie: |
Mnemonik: |
Struktura bajtów: |
Cykle maszynowe: | |
rejestrowe: |
DJNZ Rn,rel |
| 1 1 0 |
>1' |
r r r | |
1_ |
rei |
1 | ||
bezpośrednie: |
DJNZ adr,rei |
| 1 1 0 |
1 |o |
i o i | : |
1 |
adr |
i | ||
•' - 1 ■ |
rei- |
:_1 |
Znacz
niki:
Dziabnie:
Zmniejszenie zawartości:
• rejestru Rn, Rn « R7..K0,
• 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ęcią RAM, a także pobierania argumentów z pamięd kodu programu.
Tabela 4-1. Instrukcje wymiany danych
Mnemonik instrukcji |
Operacje |
Tryby adresowania |
Liczba cykli maszyn. |
Instrukcje dotyczące wewnętrznej pamięd 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 Kn,<bajt> |
Rn c= <bajt> |
R B N P |
1 lub 2 |
MOV <bajt>,Rn |
<bajt> c= Rn |
RB P |
1 lub 2 |
MOV QRi,<bajt> |
(Ri) c= <bajt> |
B N P |
1 lub 2 |
MOV <bajt>,@Ri |
<bajt> c= (Ri) |
B P |
1 lub 2 |
MOV <adr>,<adrl> |
<adr> c= <adrl> |
R B N P |
2 |
MOV DPTR.ffdana 16 |
DPTR c= #dana 16 |
N |
2 |
PUSH adr |
stos c= (adr) |
B |
2 |
I*OP adr |
(adr) <= stos |
B |
“i |
XCH A,<bajt> |
A o <bajt> |
RB P |
1 |
XCHD A.GRi |
a3..0 ° ®R»3..0 |
P |
1 |
Instrukcje dotyczące zewnętrznej pamięd RAM (XDATA) | |||
MOVX A,6Ri |
A <= (256*P2+Ri) |
P |
2 |
MOVX ®Ri.A |
(256*P2+Ri) c= A |
P |
2 |
MOVX A,©DPTR |
A c= (DPTR) |
P |
2 |
MOVX @DPTR,A |
(DPTR) <= A |
P |
2 |
Instrukcje dotyczące pamięd kodu programu (CODĘ) | |||
MOVC A,@A+DPTR |
A c= (A+DPTR) |
1 |
2 |
MOVC A.0A+PC |
A c= (A+PC) |
1 |
2 |
Instrukcje MOV A,<bajt>,.. ,MOV <adi>,<adrl> umożliwiają przesyłanie danych między dwoma komórkami wewnętrznej pamię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ęd 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 nim drugi lub trzeć bajt instrukcji (w instrukcji MOV <adr>,<adrl>):
MOV A,R5 ;adrcsowanie rejestrowe, A R5
Mll-r-l-