Sunteți pe pagina 1din 21

1.

MICROCONTROLERE COMPATIBILE INTEL 8051

1.1. Caracteristici generale

Variante

- Intel 8051 clasic


- 8051 „extins”: Philips 80C51MX, Dallas 390 etc,
- Intel / Atmel WM 251

„SoC” – Sistem pe un singur cip

Microcontrolere - Capitolul 1 1
Corneliu BURILEANU
Schema bloc

- CPU
- Oscilator cu cuarţ
- 4 kB ROM
- 128 B RAM
- 4 porturi I/O pe câte 1 B
- 1 port serial
- 2 numărătoare (timer) pe 16 b
- Controler de întreruperi

Microcontrolere - Capitolul 1 2
Corneliu BURILEANU
1.2. Organizarea memoriei

Memoria de program şi date sunt fizic separate („Harvard”)

a) Memoria de program
- Este de tip ROM sau EPROM
- Harta memoriei are 64 kB
- Pe cip se află, de regulă, 4 kB, 8 kB sau 16kB. Restul memoriei este externă
- Există şi variante cu toată memoria de program externă
- Validarea cu PSEN (Program Store Enable)
- După RESET, (PC) ← 0000H
- Locaţii de memorie rezervate :
Iniţializare programe: 0000H ÷ 0002H
vector de întrerupere tip 0: 0003H ÷ 000AH
timer 0: 000BH
vector de întrerupere tip 1: 0013H ÷ 001AH
timer 1: 001BH

Microcontrolere - Capitolul 1 3
Corneliu BURILEANU
b) Memoria de date
- Memoria externă are 64 kB
- Memoria externă e accesată cu magistrala de date şi adrese prin intermediul Port 0
şi eventual Port 2
- Validarea se face cu RD, WR
- Magistrala de adrese poate avea numai 1 B sau 2 B

- Memoria internă este accesată cu adrese pe 1B


- Sunt 3 blocuri de câte 128 B:
“Lower 128”,
“Upper 128”,
“SFR Space”.

Microcontrolere - Capitolul 1 4
Corneliu BURILEANU
- “Upper 128” şi SFR Space sunt fizic separate şi adresate cu moduri de adresare diferite
- “Upper 128” nu e implementată în 8051 clasic
- “Upper 128” este adresabilă indirect la variantele la care e implementată
- “Lower 128”:
4 bancuri de câte 8 registre R0 ÷ R7
16 B – un bloc de memorie adresabil pe bit
restul – memorie de date
este adresabilă direct şi indirect
Microcontrolere - Capitolul 1 5
Corneliu BURILEANU
Memoria “Lower 128”

Microcontrolere - Capitolul 1 6
Corneliu BURILEANU
1.3. Registre

- 32 de registre fizice
- 8 registre logice – setul de lucru: R0, R1,…, R7
- SFR – setul de registre speciale:
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8
F8 FF
F0 B F7
E8 EF
E0 ACC E7
D8 DF
D0 PSW D7
C8 T2CON RCAP2L RCAP2H TL2 TH2 CF
C0 C7
B8 IP BF
B0 P3 B7
A8 IE AF
A0 P2 A7
98 SCON SBUF 9F
90 P1 97
88 TCON TMOD TL0 TL1 TH0 TH1 8F
80 P0 SP DPL DPH PCON 87

Adresabile şi pe bit
Disponibile numai pentru 8052

Microcontrolere - Capitolul 1 7
Corneliu BURILEANU
ACC Acumulator
B Registrul extensie acumulator
PSW „Program Status Word”
SP Indicator de stivă
DPTR Pointer date
DPL
DPH
P0 Port 0
P1 Port 1
P2 Port 2
P3 Port 3
IP Control priorităţi întreruperi
IE Control validare întreruperi
TMOD Control mod timer / counter
TCON Control timer / counter
T2CON Control 2 timer / counter
TH0 timer / counter 0 high byte
TL0 \timer / counter 0 low byte
TH1 timer / counter 1 high byte
TL1 timer / counter 1 low byte
TH2 timer / counter 2 high byte
TL2 timer / counter 2 low byte
RCAP2H timer / counter 2 registru captură high byte
RCAP2L timer / counter 2 registru captură high byte
SCON Control serial
SBUF Buffer date seriale
PCON Control alimentare

Microcontrolere - Capitolul 1 8
Corneliu BURILEANU
PSW „Program Status Word”:

CY transport
AC transport auxiliar
F0 disponibil utilizator
RS1 selecţie set de lucru registre
RS0 selecţie set de lucru registre
OV depăşire
- definibil de către utilizator
P paritate (în acumulator)

CY AC F0 RS1 RS0 OV - P

Microcontrolere - Capitolul 1 9
Corneliu BURILEANU
1.4. Moduri de adresare

Adresare directă:
- Adresa completă are 8 b în formatul instrucţiunii curente
- Se poate utiliza pentru memoria de date internă („Lower 128 ”)
- Se poate utiliza pentru SFR

Adresare indirectă:
- Poate fi pe 8 b sau pe 16 b
- Se pot accesa 256 B de memorie internă de date („Lower 128” şi „Upper 128”)
sau 64 kB de memorie externă
- Pentru adresele pe 8 b se pot folosi R0, R1 sau SP
- Pentru adresele pe 16 b se poate folosi doar DPTR – pentru memoria externă

Adresare implicită (în registru):


- Datele sunt accesate în unul dintre cel 8 registre din setul de lucru R0,…, R7
- Selecţia registrului vizat se face cu 3 biţi în chiar codul instrucţiunii
- Anumite instrucţiuni se referă la anumite registre (acumulator, pointer de date etc.)
Selecţia registrului se face în chiar codul instruc ţiunii

Microcontrolere - Capitolul 1 10
Corneliu BURILEANU
Adresare imediată:
- O constantă care se află în formatul instrucţiunii curente, imediat după cod
- Constanta poate fi pe 8 b sau 16 b

Adresare indexată:
- Se foloseşte doar pentru memoria de program !
- Pentru tabele de translatare cu DPTR sau PC ca bază şi ACC intrare în tabelă
- Pentru salturi – ACC conţine deplasamentul

Microcontrolere - Capitolul 1 11
Corneliu BURILEANU
1.5. Setul de instrucţiuni

1) Instrucţiuni aritmetice:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
ADD A, s (ACC) ← (ACC) + (s)    
ADDC A, s (ACC) ← (ACC) + (s) + (CY)    
SUBB A, s (ACC) ← (ACC) - (s) - (CY)    
INC A (ACC) ← (ACC) + 1
INC s (s) ← (s) + 1   
INC DPTR (DPTR) ← (DPTR) + 1
DEC A (ACC) ← (ACC) - 1
DEC s (s) ← (s) - 1   
MUL AB (B) ↑ (A) ← (B) * (A)
DIV AB (A) ← (A) div (B), (B) ← (A) mod (B)
DA A Ajustare zecimală

Microcontrolere - Capitolul 1 12
Corneliu BURILEANU
2) Instrucţiuni logice:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
ANL A, s (ACC) ← (ACC) & (s)    
ANL s, A (s) ← (s) & (ACC) 
ANL s, #data (s) ← (s) & ((PC)+1) 
ORL A, s (ACC) ← (ACC) ∀ (s)    
ORL s, A (s) ← (s) ∀ (ACC) 
ORL s, #data (s) ← (s) ∀ ((PC)+1) 
XRL A, s (ACC) ← (ACC) ⊕ (s)    
XRL s, A (s) ← (s) ⊕ (ACC) 
XRL s, #data (s) ← (s) ⊕ ((PC)+1) 
CRL A (ACC) ← 00H
CPL A (ACC) ← not (ACC)
RL A Roteşte ACC stânga cu 1 bit
RLC A Roteşte ACC cu CY stânga cu 1 bit
RR A Roteşte ACC dreapta cu 1 bit
RRC A Roteşte ACC cu CY dreapta 1 bit
SWAP A (ACC)h ↔ (ACC)l

Microcontrolere - Capitolul 1 13
Corneliu BURILEANU
3) Transferuri de date:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
MOV A, s (ACC) ← (s)    
MOV s, A (s) ← (ACC)   
MOV d, s (d) ← (s)    
MOV DPTR, #data16 (DPTR) ← ((PC)+2) ↑ ((PC)+1) 
PUSH s (SP) ← (SP) + 1, ((SP)) ← (s) 
POP d (d) ← ((SP)), (SP) ← (SP) - 1 
XCH A, s (ACC) ↔ (s)   
XCHD A, @Ri (ACC)l ↔ (Ri)l 

Microcontrolere - Capitolul 1 14
Corneliu BURILEANU
Observaţii

- Memoria externă este accesată cu MOVX


- Stiva creşte în sus!
PUSH s ; (SP) ← (SP) + 1
; ((SP)) ← (s)

POP d ; (d) ← ((SP))


; (SP) ← (SP) – 1

- Cum accesarea stivei se face de fapt cu adresare indirectă prin (SP),


rezultă că stiva poate ajunge numai în „Upper 128” (dacă există!) şi NU în SFR.

Microcontrolere - Capitolul 1 15
Corneliu BURILEANU
4) Transferuri de date cu memoria externă:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
MOVX A, @Ri (ACC) ← ((R0)) sau (ACC) ← ((R1)) 
MOVX @Ri, A ((R0)) ← (ACC) sau ((R1)) ← (ACC) 
MOVX A, @DPTR (ACC) ← ((DPTR)) 
MOVX @DPTR, A ((DPTR)) ← (ACC) 
Observaţii

- Acumulatorul este folosit întotdeauna.


- Folosirea lui DPTR impune utilizarea tuturor celor 8 biţi ai Port 2 ca magistrală de adrese.

5) Citire din tabele de translatare în memoria de program („lookup tables”):

Moduri de adresare
Sintaxă Semantică Dir. Indexată Reg. Im.
MOVC A, @A+DPTR (ACC) ← ((ACC)+(DPTR)) 
MOVC A, @A+PC (ACC) ← ((ACC)+(PC)) 
Microcontrolere - Capitolul 1 16
Corneliu BURILEANU
6) Instrucţiuni pe bit:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
ANL C, bit (CY) ← (CY) & bit 
ANL C, /bit (CY) ← (CY) & not bit 
ORL C, bit (CY) ← (CY) ∀ bit 
ORL C, /bit (CY) ← (CY) ∀ not bit 
MOV C, bit (CY) ← bit 
MOV bit, C bit ← (CY) 
CLR C (CY) ← 0 
CLR bit bit ← 0 
SETB C (CY) ← 1 
SETB bit bit ← 1 
CPL C (CY) ← not (CY) 
CPL bit bit ← not bit 
JC disp (PC) ← (PC)+disp dacă (CY) = 1 
JNC disp (PC) ← (PC)+disp dacă (CY) = 0 
JB bit, disp (PC) ← (PC)+disp dacă bit = 1 
JNB bit, disp (PC) ← (PC)+disp dacă bit = 0 
JBC bit, disp (PC) ← (PC)+disp dacă bit = 1; bit ← 0 
Microcontrolere - Capitolul 1 17
Corneliu BURILEANU
Observaţii

- Biţii sunt adresaţi în „Lower 128” şi în SFR.


- CY face parte din PSW.
- Salturile se fac cu adresare relativă –128 la +127 B în memoria de program faţă de poziţia
instrucţiunii curente.

Microcontrolere - Capitolul 1 18
Corneliu BURILEANU
7) Salturi:

Moduri de adresare
Sintaxă Semantică Dir. Ind. Reg. Im.
JMP adr (PC) ← adr 
JMP @a+DPTR (PC) ← ((A)+(DPTR)) 
CALL adr (SP) ← (SP) + 1, ((SP)) ← (PC) 
(PC) ← adr
RET (PC) ← ((SP)), (SP) ← (SP) - 1 
RETI (PC) ← ((SP)), (SP) ← (SP) - 1 
NOP
JZ disp (PC) ← (PC)+disp dacă (ACC) = 0
JNZ disp (PC) ← (PC)+disp dacă (ACC) ≠ 0
DJNZ s, disp (s) ← (s) – 1; dacă (s) ≠ 0  
(PC) ← (PC)+disp
CJNE A, s, disp (PC) ← (PC)+disp dacă (ACC) ≠ (s)  
CJNE s,#data,disp (PC) ← (PC)+disp dacă  
(s) ≠ ((PC)+1)

Microcontrolere - Capitolul 1 19
Corneliu BURILEANU
Observaţii

- JMP este un mnemonic general pentru:


SJMP salt cu adresare relativă – format 2B.
LJMP salt cu adresare directă – format 3B.
AJMP salt cu adresare directă co constantă pe 11b – format 2B.

- Identic pentru CALL.

- Toate salturile condiţionate folosesc adresare relativă.

- DJNZ este ciclu cu contor; s se foloseşte drept contor.

Microcontrolere - Capitolul 1 20
Corneliu BURILEANU
1.6. Desfăşurarea în timp a instrucţiunilor

- Un ciclu maşină are 6 stări S1,…, S6.

- Fiecare stare are 2 perioade tact

- Aşadar, fiecare ciclu maşină are 12 perioade de tact

- În general, instrucţiunile durează 1 ciclu maşină.

- Se face „fetch” în S1 şi în S4.

- MOVX necesită 2 cicluri maşină.


În acest caz nu există „fetch” în cadrul celui de-al 2-lea ciclu maşină.

Microcontrolere - Capitolul 1 21
Corneliu BURILEANU

S-ar putea să vă placă și