background image

Opis mikrokontrolera 8051 

Lista rozkazowa 

Timery 

 

Warszawa, 2005-10-01 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -2-

Oznaczenia i skróty: 
A

-

akumulator  

C

-

wska nik przeniesienia 

DPTR - 

wska nik danych, rejestr 16-bitowy 

Rn 

rejestr R0-R7 z aktywnego banku rejestrów 

direct 

8-bitowy adres lokacji w wewn.trznej pami.ci danych 

 

(adresowanie bezpo0rednie) 

@Ri 

8-bitowa lokacja w wewn.trznej pami.ci danych dost.pna po0rednio 

 

poprzez zawarto03 rejestru R1 lub R0 (adresowanie  

 

rejestrowe po0rednie) 

#n - 

sta5a 8-bitowa (adresowanie natychmiastowe) 

#nn - 

sta5a 16-bitowa (adresowanie natychmiastowe) 

bit 

adres bitu dost.pnego bezpo0rednio (z obszaru 20H-2FH wewn.trznej 

 

pami.ci danych lub z niektórych rejestrów specjalnych) 

/bit - 

negacja 

zawarto0ci bitu o adresie "bit" 

rel - 

przesuni.cie 8-bitowe o warto0ciach zawartych  

 

w przedziale <-128, 127> 

etykieta 

adres 11-bitowy lub 16-bitowy 

 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -3-

1. Tryby adresowania wewn trznej pami ci danych: 
 

a) Adresowanie bezpo0rednie (mo=liwe dla ca5ego obszaru wewn.trznej pami.ci danych), np. 
instrukcja: 

 
mov A, 

32H 

(A) (32H)  

 
oznacza, =e do akumulatora wpisywana jest zawarto03 komórki pami.ci o adresie 32H. 
 
UWAGA! Je=eli trzeba zastosowa3 adresowanie bezpo0rednie w stosunku do akumulatora, to 
wówczas trzeba u=ywa3 symbolu ACC, np. instrukcje push ACC i pop ACC.

b) Adresowanie natychmiastowe, np. instrukcja: 
 

mov A, 

#32H 

(A) 32H

oznacza, =e do akumulatora wpisywana jest warto03 32H. 
 

c) Adresowanie rejestrowe; dotyczy tylko akumulatora, rejestru DPTR oraz rejestrów R0-R7 
z wybranego banku rejestrów, np. instrukcja: 
 

mov  A, R0 

(A) (R0) 

 

oznacza, =e do akumulatora jest podstawiana zawarto03 rejestru R0 – oba operandy, A i R0, 
sD w tej instrukcji adresowane rejestrowo. 
 
UWAGA! T. samD operacj. realizuje równie= instrukcja 
 

mov ACC, R0 

(A) (R0), 

 
ale w tym przypadku akumulator adresowany jest bezpo0rednio. 
 

d) Adresowanie rejestrowe po0rednie (dla obszaru 00H - 7FH wewn.trznej pami.ci danych), 
np. instrukcja 
 

mov A, 

@R0 

(A) ((R0)) 

 

oznacza, =e do akumulatora wpisywana jest zawarto03 komórki pami.ci, której adres znajduje 
si. w rejestrze R0. 
 

e) Adresowanie bezpo0rednie bitów (dla obszaru 20H - 2FH wewn.trznej pami.ci danych 
oraz adresowanych bitowo rejestrów specjalnych),  np. instrukcja: 
 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -4-

mov  CACC.7 

(C) (ACC.7) 

 

oznacza, =e do wska nika przeniesienia C (PSW.7) wpisywana jest warto03 najstarszego bitu 
akumulatora. 
 
Inne przyk5ady adresowania bezpo0redniego bitów: 

mov  TCON.5, C 
jb 

21H.3, skacz 

jnb 

P1.0, p.tla 

 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -5-

2. Lista rozkazowa 
 
2.1. Operacje arytmetyczne 
 
W przypadku dwuargumentowych operacji arytmetycznych jednym z argumentów jest 
zawsze akumulator. Wynik operacji jest równie= zawsze umieszczany w akumulatorze. 
 

Instrukcja D5ugo03 

(bajty) 

Czas 

(cykle) 

Opis 

ADD A, Rn 
ADD A, direct 
ADD A, @Ri 
ADD A, #n 

1
2
1
2

1
1
1
1

Dodawanie bez przeniesienia 

ADDC A,  Rn 
ADDC A,  direct 
ADDC A,  @Ri 
ADDC A,  #n 

1
2
1
2

1
1
1
1

Dodawanie z przeniesieniem 

SUBB A, Rn 
SUBB A, direct 
SUBB A, @Ri 
SUBB A, #n 

1
2
1
2

1
1
1
1

Odejmowanie (zawsze z po=yczkD)

INC A 
INC Rn 

 

INC direct 
INC @Ri 
INC DPTR 

1
1
2
1
1

1
1
1
1
2

Inkrementacja (zwi.kszanie o 1) 

DEC A 
DEC Rn 

 

DEC direct 
DEC @Ri 

1
1
2
1

1
1
1
1

Dekrementacja (zmniejszanie o 1) 

MUL AB 

Mno=enie A B (m5odszy bajt wyniku zapisywany 
jest do A, starszy do rejestru B) 

DIV AB 

4  Dzielenie 

ca5kowite A/B (wynik dzielenia 

zapisywany jest do A, reszta dzielenia do rejestru B) 

DA A 

1  Korekcja 

dziesi.tna A (dla kodu BCD) 

2.2. Operacje logiczne 

Instrukcja D5ugo03 

(bajty) 

Czas 

(cykle) 

Opis 

ANL A, 

Rn 

ANL A, 

direct 

ANL A, 

@Ri 

ANL A, 

#n 

ANL direct, 

ANL direct, 

#n 

1
2
1
2
2
3

1
1
1
1
1
2

iloczyn logiczny (wynik w pierwszym argumencie) 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -6-

ORL A, 

Rn 

ORL A, 

direct 

ORL A, 

@Ri 

ORL A, 

#n 

ORL direct, 

ORL direct, 

#n 

1
2
1
2
2
3

1
1
1
1
1
2

suma logiczna (wynik w pierwszym argumencie) 

XRL A, 

Rn 

XRL A, 

direct 

XRL A, 

@Ri 

XRL A, 

#n 

XRL direct, 

XRL direct, 

#n 

1
2
1
2
2
3

1
1
1
1
1
2

suma roz5Dczna - exclusive-or (wynik w pierwszym 
argumencie) 

CLR A 

zerowanie 

akumulatora 

CPL  A 

negacja poszczególnych bitów akumulatora 
(negacja logiczna akumulatora) 

RL 

rotacja w lewo 

RLC  A 

rotacja w lewo poprzez bit przeniesienia 

RR 

rotacja akumulatora w prawo 

RRC  A  

rotacja akumulatora w prawo poprzez bit 
przeniesienia 

SWAP A  

zamiana miejscami po5ówek akumulatora 

2.3. Przes/ania danych 

Instrukcja D5ugo03 

(bajty) 

Czas 

(cykle)

Opis 

MOV A, Rn 
MOV A, direct 
MOV A,@Ri 
MOV A,#n 
MOV Rn, A 
MOV Rn, direct 
MOV Rn, #n 
MOV direct, A 
MOV direct, Rn 
MOV direct, direct 
MOV direct, @Ri 
MOV direct, #n 
MOV @Ri, A 
MOV @Ri, direct 
MOV @Ri, #n 
MOV DPTR, #nn 

1
2
1
2
1
2
2
2
2
3
2
3
1
2
2
3

1
1
1
1
1
2
1
1
2
2
2
2
1
2
1
2

przes5anie w obr.bie wewn.trznej pami.ci 
danych 
(pierwszy argument jest celem, drugi  ród5em 
 mov cel,  ród o)

MOVC  A,  @A+DPTR 
MOVC  A,  @A+PC 

1
1

2
2

przes5ania pomi.dzy pami.ciD programu i 
akumulatorem 

MOVX  A,  @DPTR 
MOVX  A,  @Ri 
MOVX  @DPTR, A  
MOVX  @Ri, A 

1
1
1
1

2
2
2
2

przes5ania z /do zewn.trznej pami.ci danych 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -7-

PUSH direct 
POP direct 

2
2

2
2

po5o=enie na stos 
zdj.cie ze stosu 

XCH A,Rn 
XCH A,direct 
XCH A,@Ri 

1
2
1

1
1
1

wymiana zawarto0ci mi.dzy rejestrami 

XCHD A, @Ri 

wymiana m5odszej cyfry 

2.4. Operacje na bitach 

Instrukcja D5ugo03 

(bajty) 

Czas 

(cykle) 

Opis 

CLR C 
CLR bit 

1
2

1
1

zerowanie wska nika przeniesienia C 
zerowanie bitu 

SETB C 
SETB bit 

1
2

1
1

ustawianie wska nika przeniesienia C 
ustawianie bitu 

CPL C 
CPL bit 

1
2

1
1

negacja wska nika przeniesienia C 
negacja bitu 

ANL C,bit 
ANL C, 

/bit 

2
2

2
2

iloczyn logiczny 

ORL C,bit 
ORL C, 

/bit 

2
2

2
2

suma logiczna 

MOV C, bit 
MOV bit, C 

2
2

1
2

przes5anie 

JC rel 
JNC rel 

2
2

2
2

skacz, je=eli C=1 
skacz, je=eli C=0 

JB bit, 

rel 

JNB bit, 

rel 

3
3

2
2

skacz, je=eli bit=1 
skacz, je=eli bit=0 

JBC  bit, rel 

skacz, je=eli bit=1i wyzeruj bit 

2.5. Skoki w programie 

Instrukcja D5ugo03 

(bajty) 

Czas 

(cykle) 

Opis 

*)CALL  etykieta 

-

-

wywo5anie procedury etykieta 

RET 
RETI 

1
1

´2 

2

powrót z procedury 
powrót z procedury obs5ugi przerwania 

*) JMP  etykieta 

-

-

skok bezwarunkowy 

JZ rel 
JNZ rel 

2
2

2
2

skok warunkowy, je=eli A=0 
skok warunkowy, je=eli A 0

CJNE  A, direct, rel 
CJNE  A, #n, rel 
CJNE  Rn, #n, rel 
CJNE  @Ri, #n, rel 

3
3
3
3

2
2
2
2

porównaj dwa pierwsze argumenty i skocz 
je=eli nie sD sobie równe 

DJNZ Rn, rel 
DJNZ direct, rel 

2
3

2
2

zdekrementuj pierwszy argument i skocz, 
je=eli wynik ró=ny od zera 

NOP 

nic nie rób 

*)

 

W rzeczywisto0ci istnieje wi.cej wariantów tej instrukcji. W zale=no0ci od sytuacji asembler przet5umaczy form. podanD w tabeli na odpowiedni wariant. 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -8-

Uk/ady czasowo-licznikowe mikrokontrolera 8051   

Mikrokomputer 8051 zawiera dwa 16-bitowe liczniki T0 i T1 spe5niajDce rol. uk5adów 
czasowo-licznikowych. MogD one spe5nia3 funkcj. licznika zliczajDcego impulsy zewn.trzne 
doprowadzone odpowiednio do wej03 P3.4 (licznik T0) lub P3.5 (licznik T1). MogD te= pe5ni3
funkcj. czasomierza zliczajDcego wewn.trzne impulsy zegarowe w celu generowania 
opó nieU i/lub generowania przerwaU zegarowych o zaprogramowanej cz.stotliwo0ci. Ka=dy
z tych liczników mo=e pracowa3 w jednym z czterech trybów (modów) pracy. 

 

Do programowania pracy liczników T0 i T1 s5u=D dwa rejestry specjalne (SFR): rejestr trybu 
pracy TMOD (SFR o adresie 89H) oraz rejestr sterujDcy TCON (SFR o adresie 88H z 
mo=liwo0ciD adresowania bitowego). Rejestr TMOD (Rys. 1) s5u=y do ustawiania trybu pracy 
i funkcji realizowanych  przez liczniki. 
 

Rys. 1. Rejestr trybu pracy TMOD 

 

Poszczególne bity rejestru TMOD majD nast.pujDce znaczenie: 
 
Bity M 1, M0 s5u=D do ustawienia trybu (modu) pracy: 
 
Tabela 1: 

M0 M1 Tryb  Opis 
0

0

0

timer 13-bitowy  

0

1

1

timer 16-bitowy 

1

0

2

timer 8-bitowy z automatycznym prze5adowaniem (autoreload) 

1

1

3

timer dzielony (split timer) 
W tym trybie timer TR1 nie jest programowany w TMOD, natomiast 
licznik T0 dzia5a jak dwa niezale=ne timery 8-bitowe: TL0 
programowany jest bitami Timera 0, natomiast TH0 programowany 
jest bitami timera T1 

C/T - okre0lenie realizowanej funkcji (okre0lenie  ród5a zegara dla liczników):  
 

C/T = 0 - czasomierz (zegar wewn.trzny),  

 

C/T = 1 - licznik impulsów zewn.trznych (zegar zewn.trzny odpowiednio z lini P3.4 

 

(dla T0) i P3.5 (dla T1)). 

 
GATE - bramkowanie zewn.trznym sygna5em sygna5u zegarowego liczników:  
 

GATE = 0  - bramkowanie zewn.trzne nieaktywne 

 

GATE = 1  - dzia5anie liczników mo=liwe je=eli odpowiednio: 

 

sygna5 P3.2 = 1 (dla licznika T0) 

 

sygna5 P3.3 = 1 (dla licznika T1) 

 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -9-

Rys. 2. Rejestr sterujDcy TCON. 

 

Rejestr TCON (Rys.2) s5u=y do kontroli (status) i sterowania pracD liczników T0 i T1. Rejestr 
TCON  mo=e by3 adresowany bitowo. Poszczególne bity tego rejestru s5u=D do:

TCON.6 (TR1) i TCON.4 (TR0) - sterujD zliczaniem liczników T0 i T1; 
 

TRi = 0 (i = 0, 1) powoduje zatrzymanie licznika Ti, 

 

TRi = 1 (i = 0, 1) powoduje prac. licznika Ti. 

 
TCON.7 (TFl) i TCON.5 (TF0) – to wska niki przepe5nienia liczników. Ustawiane 
 

sprz.towo po przepe5nieniu licznika. Kasowane  

 

sprz.towo po wej0ciu w obs5ug. przerwania licznika. 

 
Pozosta5e bity rejestru TCON zwiDzane sD z pracD systemu przerwaU i tak: 
TCON.3 (IE1) - wska nik zg5oszenia przerwania na wej0ciu INT1, 
TCON.1 (IE0) - wska nik zg5oszenia przerwania na wej0ciu INT0, 
TCON.0 (IT0) - sterowanie sposobem  zg5oszenia przerwania na wej0ciu INT0 
 

IT0 = 0 – przerwanie zg5aszane opadajDcym zboczem sygna5u INT0 

 

IT0 = 1 – przerwanie zg5aszane niskim poziomem sygna5u INT0 

TCON.2 (IT1) - sterowanie sposobem  zg5oszenia przerwania na wej0ciu INT1 
 

IT1 = 0 – przerwanie zg5aszane opadajDcym zboczem sygna5u INT1 

 

IT1 = 1 – przerwanie zg5aszane niskim poziomem sygna5u INT1 

 

16-bitowe liczniki uk5adu czasowo-licznikowego dost.pne sD programowo jako rejestry 
specjalne (SFR), odpowiednio: 

 
TH0 (SFR o adresie 8CH) - bardziej znaczDcy bajt licznika T0,  
TL0 (SFR o adresie 8AH) - mniej znaczDcy bajt licznika T0,  
TH1 (SFR o adresie 8DH) - bardziej znaczDcy bajt licznika T1,  
TL1 (SFR o adresie 8BH) - mniej znaczDcy bajt licznika T1. 
 

Je=eli jest realizowana funkcja czasomierza (tzn. w s5owie TMOD odpowiedni bit C/T jest 
równy 0), to zawarto03 licznika jest zwi.kszana o 1 w ka=dym cyklu maszynowym. Cykl 
maszynowy trwa 12 taktów zegara. Cz.stotliwo03 sygna5u zegarowego liczników wynosi 
zatem f

C

= fosc /12, gdzie fosc jest cz.stotliwo0ciD oscylatora mikrokontrolera (typowo  fosc 

jest równe 11,0582 MHz). 
 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -10-

System przerwa4 mikrokontrolera 8051 
 
System przerwaU mikrokotrolera 8051 mo=e przyjmowa3 zg5oszenia nast.pujDcych przerwaU:

- zewn.trznych: 

- z wej0cia INT0 (IE0 - TCON.1) 
- z wej0cia INT1 (IE1 - TCON.3) 

- z uk5adów czasowo-licznikowych: 

- przepe5nienie licznika T0 (TF0 - TCON.5) 
- przepe5nienie licznika Tl (TF1 - TCON.7) 

- z portu szeregowego: 

-

koniec nadawania znaku (TI - SCON.1) lub koniec odbierania znaku (RI - SCON.0). 

 
Z ka=dD z przyczyn przerwania jest zwiDzany odpowiedni wska nik. Wpisanie jedynki do 
wska nika powoduje zg5oszenie przerwania. Wyzerowanie wska nika powoduje skasowanie 
zg5oszenia. Odbywa si. to automatycznie - odpowiednio przy wystDpieniu przyczyny 
przerwania i przy jego przyj.ciu (jedynie wska niki TI i RI nie sD zerowane automatycznie). 
Wszystkie wymienione wska niki mogD by3 te= ustawiane i zerowane programowo.  
System przerwaU mo=e by3 w5Dczany i wy5Dczany globalnie oraz ka=de ze  róde5 przerwania 
mo=e by3 indywidualnie maskowane przez ustawienie odpowiedniego bitu w rejestrze 
sterujDcym IE (SFR o adresie 0ABH z mo=liwo0ciD adresowania bitowego). Wyzerowanie 
danego bitu w rejestrze IE oznacza zablokowanie zg5aszania odpowiadajDcego mu 
przerwania, wpisanie jedynki - odblokowanie zg5oszenia przerwania odpowiadajDcego temu 
bitowi. Po zainicjowaniu mikrokomputera (po RESET-cie) s5owo sterujDce IE jest 
wyzerowane, tzn. system przerwaU jest wy5Dczony, a wszystkie  ród5a przerwaU
zamaskowane. 
 

Rys. 3. Rejestr sterujDcy systemem przerwaU IE. 

 
Poszczególne bity rejestru IE majD nast.pujDce znaczenie: 
 
Tabela 2: 

Bit Nazwa Opis 

IE.7 EA W5Dczenie/Wy5Dczenie systemu przerwaU

0 - system przerwaU nieaktywny 

 

1 -  system przerwaU aktywny 

IE.6 - Zarezerwowane 
IE.5 ET2 W5Dczenie/Wy5Dczenie przerwania Timera 2 (tylko w 8052) 
IE.4 ES W5Dczenie/Wy5Dczenie przerwania Portu Szeregowego  
IE.3 ET1 W5Dczenie/Wy5Dczenie przerwania Timera 1 (TF1) 
IE.2 EX1 W5Dczenie/Wy5Dczenie przerwania zewn.trznego 1 (IE1) 
IE.1 ET0 W5Dczenie/Wy5Dczenie przerwania Timera 0 (TF0) 
IE.0 EX0 W5Dczenie/Wy5Dczenie przerwania zewn.trznego 0 (IE0) 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -11-

Ka=demu z przerwaU, mo=e zosta3 przypisany wy=szy (po ustawieniu bitu) lub ni=szy (po 
wyzerowaniu bitu) priorytet przez ustawienie lub wyzerowanie w5a0ciwego bitu w rejestrze 
sterujDcym priorytetem  IP (SFR o adresie 0B8H  mo=liwo0ciD adresowania bitowego). 
 

Rys. 4. Rejestr priorytetów przerwaU IP 

 
Poszczególne bity rejestru IP majD nast.pujDce znaczenie: 
 

Tabela 3: 

Bit Nazwa Przerwanie Opis  

Priorytet  

IP.7 - 

-  Zarezerwowane 

 

IP.6 - 

-  Zarezerwowane 

 

IP.5 

PT2 

ET2 

Priorytet przerwania Timera 2 (tylko w 8052) 

najni=szy 

IP.4 

PS 

ES 

Priorytet przerwania Portu Szeregowego  

 

IP.3 

PT1 

ET1 

Priorytet przerwania Timera 1 (TF1) 

 

IP.2 

PX1 

EX1 

Priorytet przerwania zewn.trznego 1 (IE1) 

 

IP.1 

PT0 

ET0 

Priorytet przerwania Timera 0 (TF0) 

 

IP.0 

PX0 

EX0 

Priorytet przerwania zewn.trznego 0 (IE0) 

najwy=szy 

W przypadku jednoczesnego zg5oszenia dwóch przerwaU, jako pierwsze przyjmowane jest 
przerwanie majDce wy=szy priorytet. Natomiast, przy jednoczesnym zg5oszeniu kilku 
przerwaU o tym samym priorytecie, o kolejno0ci przyj.cia zadecyduje ustalony priorytet 
zg5oszeU, przedstawiony w Tabeli 3. 
W czasie wykonywania programu obs5ugi przerwania o ni=szym priorytecie b.dzie przyj.te 
zg5oszenie przerwania o wy=szym priorytecie (je=eli nie jest zablokowane), a nie b.dzie 
przyj.te zg5oszenie przerwania o tym samym (tj. ni=szym) priorytecie. W czasie 
wykonywania programu obs5ugi przerwania o wy=szym priorytecie b.dzie przyj.te  =adne 
zg5oszenie przerwania.  
 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -12-

Troch u5ytecznych informacji o 8051 

background image

IMiO PW, LPTM, Lista rozkazowa 8051                                                                                                         -13-


Document Outline