Sunteți pe pagina 1din 20

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

Schema bloc

- CPU
- Oscilator cu cuar
- 4 kB ROM
- 128 B RAM
- 4 porturi I/O pe cte 1 B
- 1 port serial
- 2 numrtoare (timer) pe 16 b
- Controler de ntreruperi

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


- Locaii de memorie rezervate :

Iniializare programe:
vector de ntrerupere tip 0:
timer 0:

0000H
0003H
000BH

0002H
000AH

vector de ntrerupere tip 1:


timer 1:

0013H 001AH
001BH

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,
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 cte 128 B:
Lower 128,
128,
Upper 128,
128, SFR
Space.

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:
128:
4 bancuri de cte 8 registre R0 R7
16 B un bloc de memorie adresabil pe bit restul memorie de
date
este adresabil direct i indirect
5

Memoria Lower 128

1.3. Registre
- 32 de registre fizice
- 8 registre logice setul de lucru: R0,
R0, R1,,
R1,, R7
- SFR setul de registre speciale:

Byte 1
F
8
F
0
E
8
E
0
D
8
D
0
C
C
B
8
B
0
A
8
A
09
8
9
0
8
8
0

Byte
2

Byte
3

Byte
4

Byte
5

Byte
6

Byte
7

Byte
8

FF
F7

EF
E7

ACC

DF
D7

PSW
T2CO
IP
P3
IE
P2
SCO
N P1
TCO
N P0

RCAP2
L

RCAP2
H

TL2

CF

TH2

C7
BF
B7
AF
A7

SBU
F
TMO
D SP

9F
97

TL0
DPL

Adresabile i pe bit
Disponibile numai pentru 8052

TL1
DPH

TH0

8F

TH1
PCO
N

87

ACC Acumulator
B
Registurl Extensie acumulator
PSW "Program Status Word"
SP
Indicator de stiva
DPTR Pointer date - DPL & DPH
P0
Port 0
P1
Port 1
P2
Port 2
P3
Port 3
IP
Control prioritati intreruperi
IE
Control validare intreruperi
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 captura high byte
RCAP2L timer/counter 2 registru captura low byte
SCONControl serial
SBUF Buffer date serial
PCON Control Alimentare
PSW Program Status Word:

CY
AC
F0
RS1
RS0
OV
P

CY

AC

transport
transport auxiliar
disponibil utilizator
selecie set de lucru registre
selecie set de lucru registre
depire
definibil de ctre utilizator
paritate (n acumulator)

F0

RS1

RS0

OV

1.4. Moduri de adresare

Adresare direct:
- Adresa complet are 8 b n formatul instruciunii curente
- Se poate utiliza pentru memoria de date intern (Lower
(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
(Lower 128
128 i Upper 128)
128) sau 64 kB de memorie extern
- Pentru adresele pe 8 b se pot folosi R0,
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,,
R0,, R7
- Selecia registrului vizat se face cu 3 bii n chiar codul instruciunii

- Anumite instruciuni se refer la anumite registre (acumulator, pointer de date etc.)


chiar codul instruciunii
Adresare imediat:
- O constant care se afl n formatul instruciunii curente, imediat dup cod
- Constanta poate fi pe 8 b sau 16 b
Adresare indexat:
- Se folosete doar pentru memoria de program !
- Pentru tabele de translatare cu DPTR sau PC ca baz i ACC intrare n tabel
- Pentru salturi ACC conine deplasamentul

Selecia registrului se face n

1.5. Setul de instruciuni

1)

Instruciuni aritmetice:

Moduri de adresare
Sintax
ADD A, s

Semantic
(ACC) (ACC) + (s)

Dir

Ind

Reg

Im

ADDC A, s

(ACC) (ACC) + (s) + (CY)

SUBB A, s
INC A

(ACC) (ACC) - (s) - (CY)


(ACC) (ACC) + 1

INC s

(s) (s) + 1

INC DPTR
DEC A

(DPTR) (DPTR) + 1
(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

(s)-sursa . Aceasta entitate joaca rol de accumulator, altul decat ACC. Aceasta facilitate suplimentara, vine cu un dezavantaj are mai putine moduri de adresare.
Inmultirea este cablata(?) se face intr-un ciclu masina, totusi cu restrictii(se pot folosi numai A si B).
12

2)

Instruciuni logice:
Moduri de adresare

Sintax
ANL A,
s

Semantic
(ACC) (ACC) & (s)

Dir.

ANL s,

(s) (s) & (ACC)

ANL s,

#data

(s) (s) & ((PC)+1)

ORL A,

(ACC) (ACC) (s)

ORL s,

(s) (s) (ACC)

ORL s,

#data

(s) (s) ((PC)+1)

XRL A,

(ACC) (ACC) (s)

XRL s,

(s) (s) (ACC)

XRL s,

#data

(s) (s) ((PC)+1)

CRL A

(ACC) 00H

CPL A

(ACC) not (ACC)

RL A
RLC A
RR A
RRC A
SWAP A

Ind.

Reg.

Im.

Rotete ACC stnga cu 1 bit


Rotete ACC cu CY stnga cu 1 bit
Rotete ACC dreapta cu 1 bit
Rotete ACC cu CY dreapta 1 bit

(ACC)h (ACC)l
Chiar si aici se regaseste limitarea: s-ul se poate accesa printr-o singura metoda, astfel nu se pierde operandul.

13

3)

Transferuri de date:

Moduri de adresare
MO
V
MO
V
MO
V
MO
V
PUSH

Sintax
A
s
,
s
A
,
d
s
,
DPTR
#data16
,
s

(ACC) (s)

Semantic

Di

In

Reg

(s) (ACC)

(d) (s)

POP d

(d) ((SP)), (SP) (SP) - 1

XCH A, s

(ACC) (s)

(ACC)l (Ri)l

(DPTR) ((PC)+2) ((PC)+1)


(SP) (SP) + 1, ((SP)) (s)

XCHD A, @Ri

Este o masina de clasa B(vezi AMP). Faptul ca exista MOV-ul pe 16biti, aduce complicatii suplimentare.

14

Observaii

- Memoria extern este accesat cu MOVX

Stiva crete n sus nu in jos!


PUSH

; (SP) (SP) + 1
; ((SP)) (s)

POP d

; (d) ((SP))
; (SP) (SP) 1

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


(SP), rezult c stiva poate ajunge n
Upper 128 (dac exist!) i NU n SFR (i, desigur, n Lower 128).
128).
Stiva last in first out.

Registrele dedicate sunt adresate direct, deci nu se poate folosi adresarea indirecta deorece nu se poate suprapune stiva peste registrele dedicate.

15

4)

MOV
X
MOV
X
MOV
X
MOV
X

Sintax
A, @Ri
@Ri, A
A,
@DPTR
@DPTR,
A

Transferuri de date cu memoria extern:

Semantic
(ACC) ((R0)) sau (ACC) ((R1))
((R0)) (ACC) sau ((R1)) (ACC)
(ACC) ((DPTR))
((DPTR)) (ACC)

Moduri de adresare
Dir. Ind. Reg. I
m

Observaii

- Acumulatorul este folosit ntotdeauna.


- Folosirea lui DPTR impune utilizarea tuturor celor 8 bii ai Port 2 ca magistral de adrese.

Se foloseste MOV(X) deoarece avem aceeasi adresa pentru memorii distincte, si trb sa precizam uP ce memories a foloseasca.

5)

MOV
C
MOV
Lookup tablesC

Semnul @-adresare indirecta

Citire din tabele de translatare n memoria de program (lookup tables):

Sintax
A @A+DPTR
,
A @A+PC
,

Semantic
(ACC) ((ACC)+(DPTR))
(ACC) ((ACC)+(PC))

Moduri de adresare
Dir. Indexat
Reg. Im.

Presupunem ca trb sa implementam functia sinus. O dezvoltam in serie si folosim inmultiri si adunari. Sau am o tabela in care sunt calculate toate gradele, aceasta tabela se numeste
lookup table, si de aici se transfera direct valoarea. O chestie tipic uC, mai bine se uita intr-o tabela decat sa calculeze.
16

6)

Instruciuni pe bit:

Moduri de adresare
Sintax
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
JNC disp
JB bit, disp
JNB bit, disp
JBC bit, disp

Semantic

(PC) (PC)+disp dac (CY) = 1


(PC) (PC)+disp dac (CY) = 0
(PC) (PC)+disp dac bit = 1
(PC) (PC)+disp dac bit = 0
(PC) (PC)+disp dac bit = 1; bit 0

Dir.

Ind.

Reg.

Im.

17

Observaii

- Biii sunt adresai n Lower


Lower 128
128 i n SFR.
SFR.
- CY face parte din PSW.
PSW.
- Salturile se fac cu adresare relativ 128 la +127 B n memoria de program fa de poziia instruciunii curente.
7)

Salturi:

Moduri de adresare
Sintax

Semantic

Dir.

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

Ind.

Reg.

Im.

NOP
JZ disp
JNZ disp
DJNZ s, disp

CJNE A, s, disp
CJNE s,#data,disp

(PC) (PC)+disp dac (ACC) = 0


(PC) (PC)+disp dac (ACC) ! = 0
(s) (s) 1; dac (s) ! = 0
(PC) (PC)+disp
(PC) (PC)+disp dac (ACC) ! = (s)

(PC) (PC)+disp dac


(s) ! = ((PC)+1)

Instructiuni de utilizare a uP:salturi cond/necond + apeluri de program.

Observaii
- 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.
CALL.
- Toate salturile condiionate folosesc adresare relativ.
- DJNZ este ciclu cu contor; s se folosete drept contor(orice registru)

20

1.6. Desfurarea n timp a instruciunilor

- Un ciclu main are 6 stri S1,,


S1,, S6.
S6.
- Fiecare stare are 2 perioade tact
- Aadar, fiecare ciclu main are 12 perioade de tact
- n general, instruciunile dureaz 1 ciclu main.
- Se face fetch n S1 i n S4.
S4.

- MOVX necesit 2 cicluri main.


n acest caz nu exist fetch n cadrul celui de-al 2-lea ciclu main.
In afara de MOVX restul instructiunilor dureaza 12 cicli( se observa astfel uniformitatea in timp a instructiunilor tipic RISC)

Intrebari LABORATOR:
Pentru un uC tip 8051: Sa se descrie formal semantica instrutiunii: PUSH s
Ce mod de adresare poate fi folosit pentru operandul s si unde se afla acesta?
Unde se poate forma stiva?
Sa se descrie formal semnatica instructiunii: POP d
Ce mod de adresare poate fi folosit pentru operandul d si unde se afla acesta?
Unde se poate forma stiva?

Sa se descrie formal semantica instructiunii XRL s, A


Ce mod de adresare poate fi folosit pentru operandul s?
IN ce zona de memorie se afla operandul s in cazul fiecarui mod de adresare indicat la punctual precedent?
Ce reprinta si unde se gaseste
Sa se descrie formal semantica instrictiunii: MOV DPTR, #s
Ce mod d adresare poate fi folosit pentru operandul s?
in ce zona de memorie se afla operandul s?
Ce reprezinta si unde se gaseste primul operand DPTR?
Sa se descrie formal semantica instruct.; ANL s, #data
Ce moduri de adresare pot fi folosite pentru operandul s?
IN ce zona de memorie se afla operandul s in cazul fiecarui mod de adresare indicat la punctual precedent?
Ce reprezinta si unde se gaseste cle de-al doilea operand(data)
Sa se descrie formal semantica instrictiunii: MOV A, @DPTR
Ce mod de adresar epoate fi folosit pt. sursa acestui transfer?
in ce zona de memorie se afla sursa acestui transfer?
Ce repreizinta si unde se gaseste primul operand (A)?
Ce reprezinta si unde se gaseste DPTR?
Sa se descrie formal smenatica instructiunii: CJNE s,#data,disp?
Ce moduri de adresare pot fifolosite pent. Operandul s?
In ce zona de mmeorie se afla operandul s in cazul fiecariu mod de adresa indicat la punctual precedent?

2. Gestionarea Memoriei
2.1 Memoria virtuala