Sunteți pe pagina 1din 21

1.1. MICROCONTROLEREMICROCONTROLERE COMPATIBILECOMPATIBILE INTELINTEL 80518051

1.1.1.1. CaracteristiciCaracteristici generalegenerale

VarianteVariante

-- IntelIntel 80518051 clasicclasic -- 80518051 extinsextins:: PhilipsPhilips 80C51MX,80C51MX, DallasDallas 390390 etcetc,, -- IntelIntel // AtmelAtmel WMWM 251251

SoCSoCSistemSistem pepe unun singursingur cipcip

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

1

SchemaSchema blocbloc

-- CPUCPU

-- OscilatorOscilator cucu cuarcuarţţ

-- 44 kBkB ROMROM

-- 128128 BB RAMRAM

-- 44 porturiporturi I/OI/O pepe câtecâte 11 BB

-- 11 portport serialserial

-- 22 nnumărătoareumărătoare ((timertimer)) pepe 1616 bb

-- ControlerControler dede îîntreruperintreruperi

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

2

1.2.1.2. OrganizareaOrganizarea memorieimemoriei

MemoriaMemoria dede programprogram şşii datedate suntsunt fizicfizic separateseparate ((HarvardHarvard))

a)a) MemoriaMemoria dede programprogram

-- EsteEste dede tiptip ROMROM sausau EPROMEPROM

-- HartaHarta memorieimemoriei areare 6464 kBkB

-- PePe cipcip sese aflăaflă,, ddee regulăregulă,, 44 kBkB,, 88 kBkB sausau 16kB.16kB. RRestulestul memorieimemoriei esteeste externăexternă

-- ExistăExistă şşii variantevariante cucu toatătoată memoriamemoria dede programprogram externăexternă

-- ValidareaValidarea cucu

-- DupăDupă RESETRESET,, (PC)(PC) 0000H0000H

-- LocaLocaţţiiii dede memoriememorie rezervaterezervate ::

PSENPSEN (Program(Program StoreStore EnableEnable))

IniIniţţializareializare programe:programe:

vectorvector dede îîntreruperentrerupere tiptip 0:0:

timertimer 0:0:

vectorvector dede îîntreruperentrerupere tiptip 1:1:

timertimer 1:1:

0000H0000H 0002H0002H 0003H0003H 000AH000AH

000BH000BH

0013H0013H 001AH001AH

001BH001BH

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

3

b)b) MemoriaMemoria dede datedate

-- MemoriaMemoria externăexternă areare 6464 kBkB

-- MemoriaMemoria externăexternă ee accesatăaccesată cucu magistralamagistrala dede datedate şşii adreseadrese prinprin intermediulintermediul PortPort 00

şşii eventualeventual PortPort 22

-- ValidareaValidarea sese faceface cucu RDRD,, WRWR

-- MagistralaMagistrala dede adreseadrese poatepoate aveaavea numainumai 11 BB sausau 22 BB

-- MemoriaMemoria internăinternă esteeste accesatăaccesată cucu adreseadrese pepe 1B1B

-- SuntSunt 33 blocuriblocuri dede câtecâte 128128 B:B:

LowerLower 128128,,

UpperUpper 128128,,

SFRSFR SpaceSpace

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

4

- - “ “ Upper Upper 128 128 ” ” ş ş i i SFR

-- UpperUpper 128128şşii SFRSFR SpaceSpace suntsunt fizicfizic separateseparate şşii adresateadresate cucu modurimoduri dede adresareadresare diferitediferite -- UpperUpper 128128nunu ee implementatăimplementată îînn 80518051 clasicclasic -- UpperUpper 128128esteeste adresabilăadresabilă indirectindirect lala variantelevariantele lala carecare ee implementatăimplementată -- LowerLower 128128::

44 bancuribancuri dede câtecâte 88 registreregistre R0R0 R7R7 1616 BB unun blocbloc dede memoriememorie adresabiladresabil pepe bitbit restulrestul memoriememorie dede datedate esteeste adresabilăadresabilă directdirect şşii indirectindirect

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

5

MemoriaMemoria LowerLower 128128

Memoria Memoria “ “ Lower Lower 128 128 ” ” Microcontrolere - Capitolul 1 Corneliu BURILEANU

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

6

1.3.1.3. RegistreRegistre -- 3232 dede registreregistre fizicefizice -- 88 registreregistre logicelogice ––
1.3.1.3. RegistreRegistre
-- 3232 dede registreregistre fizicefizice
-- 88 registreregistre logicelogice –– setulsetul dede lucru:lucru: R0R0,, R1R1,,……,, R7R7
-- SFRSFR –– setulsetul dede registreregistre speciale:speciale:
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
FF
F8
F0
B
F7
EF
E8
E0
ACC
E7
DF
D8
D7
D0
PSW
C8
T2CON
RCAP2L
RCAP2H
TL2
TH2
CF
C7
C0
IP
BF
B8
B0
P3
B7
A8
IE
AF
A0
P2
A7
SCON
SBUF
9F
98
90
P1
97
88
TCON
TMOD
TL0
TL1
TH0
TH1
8F
P0
SP
DPL
DPH
PCON
87
80
Adresabile şi pe bit
Disponibile numai pentru 8052
Microcontrolere - Capitolul 1
Corneliu BURILEANU ©
7

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 Corneliu BURILEANU ©

8

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 Corneliu BURILEANU ©

9

1.4.1.4. ModuriModuri dede adresareadresare

AdresareAdresare directădirectă::

-- AdresaAdresa completăcompletă areare 88 bb îînn formatulformatul instrucinstrucţţiuniiiunii curentecurente -- SeSe poatepoate utilizautiliza pentrupentru memoriamemoria dede datedate internăinternă ((LowerLower 128128 )) -- SeSe poatepoate utilizautiliza pentrupentru SFRSFR

AdresareAdresare indirectăindirectă::

-- PoatePoate fifi pepe 88 bb sausau pepe 1616 bb -- SeSe potpot accesaaccesa 252566 BB dede memoriememorie internăinternă dede datedate ((LowerLower 128128şşii UpperUpper 128128)) sausau 6464 kBkB dede memoriememorie externăexternă -- PentruPentru adreseleadresele pepe 88 bb sese potpot folosifolosi R0R0,, R1R1 sausau SPSP -- PentruPentru adreseleadresele pepe 1616 bb sese poatepoate folosifolosi doardoar DPTRDPTR pentrupentru memoriamemoria externăexternă

AdresareAdresare implicităimplicită ((îînn registru)registru)::

-- DateleDatele suntsunt accesateaccesate îînn unulunul dintredintre celcel 88 registreregistre dindin setulsetul dede lucrulucru R0R0,,,, R7R7 -- SelecSelecţţiaia registruluiregistrului vizatvizat sese faceface cucu 33 bibiţţii îînn chiarchiar codulcodul instrucinstrucţţiuniiiunii -- AnumiteAnumite instrucinstrucţţiuniiuni sese referăreferă lala anumiteanumite registreregistre (acumulator,(acumulator, pointerpointer dede datedate etc.)etc.) SelecSelecţţiaia registruluiregistrului sese faceface îînn chiarchiar codulcodul instrucinstrucţţiuniiiunii

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

10

AdresareAdresare imediatăimediată::

-- OO constantăconstantă carecare sese aflăaflă îînn formatulformatul instrucinstrucţţiuniiiunii curentecurente,, imediatimediat dupădupă codcod -- ConstantaConstanta poatepoate fifi pepe 88 bb sausau 1616 bb

AdresareAdresare indexatăindexată::

-- SeSe folosefoloseşştete doardoar pentrupentru memoriamemoria dede programprogram !! -- PentruPentru tabeletabele dede translataretranslatare cucu DPTRDPTR sausau PCPC caca bazăbază şşii ACCACC intrareintrare îînn tabelătabelă -- PentruPentru salturisalturi ACCACC conconţţineine deplasamentuldeplasamentul

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

11

1.5.1.5. SetulSetul dede instrucinstrucţţiuniiuni

1)1) InstrucInstrucţţiuniiuni aritmetice: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 Corneliu BURILEANU ©

12

2)2) InstrucInstrucţţiuniiuni logice: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 Corneliu BURILEANU ©

13

3)3) TransferuriTransferuri dede date: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 Corneliu BURILEANU ©

14

ObservaObservaţţiiii

-- MemoriaMemoria externăexternă esteeste accesatăaccesată cucu MOVXMOVX

-- StivaStiva crecreşştete îînn sus!sus! PUSHPUSH

ss ;; (SP)(SP) ((SPSP)) ++ 11 ;; ((SP))((SP)) (s)(s)

POPPOP dd

;; (d)(d) ((SP))((SP)) ;; (SP)(SP) ((SPSP)) 11

-- CumCum accesareaaccesarea stiveistivei sese faceface dede faptfapt cucu adresareadresare indirectăindirectă prinprin (SP)(SP),,

rezultărezultă stivastiva poatepoate ajungeajunge îînn UpperUpper 128128((dacădacă existăexistă!)!) şşii NUNU îînn SFRSFR

((şşi,i, desigur,desigur, îînn LowerLower 128128).).

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

15

4)4) TransferuriTransferuri dede datedate cucu memoriamemoria externă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)

   

   

ObservaObservaţţiiii

-- AcumulatorulAcumulatorul esteeste folositfolosit îîntotdeauna.ntotdeauna.

 

-- FolosireaFolosirea luilui DPTRDPTR impuneimpune utilizareautilizarea tuturortuturor celorcelor 88 bibiţţii aiai PortPort 22 caca magistralămagistrală dede adreseadrese

 

5)5) CitireCitire dindin tabeletabele dede translataretranslatare îînn memoriamemoria dede programprogram ((lookuplookup tablestables):):

     

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 Corneliu BURILEANU ©

16

6)6) InstrucInstrucţţiuniiuni pepe bit: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 Corneliu BURILEANU ©

17

ObservaObservaţţiiii

-- BiBiţţiiii suntsunt adresaadresaţţii îînn LowerLower 128128şşii îînn SFRSFR

-- CYCY faceface parteparte dindin PSWPSW

-- SalturileSalturile sese facfac cucu adresareadresare relativărelativă 128128 lala +127+127 BB îînn memoriamemoria dede programprogram fafaţţăă dede pozipoziţţiaia

instrucinstrucţţiuniiiunii curente.curente.

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

18

7)7) Salturi: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 Corneliu BURILEANU ©

19

ObservaObservaţţiiii

-- JMPJMP esteeste unun mnemonicmnemonic generalgeneral pentru:pentru:

SJMPSJMP saltsalt cucu adresareadresare relativărelativă formatformat 2B.2B.

LJMPLJMP saltsalt cucu adresareadresare directădirectă formatformat 3B.3B.

AJMPAJMP saltsalt cucu adresareadresare directădirectă coco constantăconstantă pepe 11b11b formatformat 2B.2B.

-- IdenticIdentic pentrupentru CALLCALL

-- ToateToate salturilesalturile condicondiţţionateionate folosescfolosesc adresareadresare relativărelativă

-- DJNZDJNZ esteeste cicluciclu cucu contor;contor; ss sese folosefoloseşştete dreptdrept contor.contor.

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

20

1.6.1.6. DesfăDesfăşşurareaurarea îînn timptimp aa instrucinstrucţţiuniloriunilor

-- UnUn cicluciclu mamaşşinăină areare 66 sstăritări S1S1,,,, S6S6

-- FiecareFiecare starestare areare 22 perioadeperioade tacttact

-- AAşşadar,adar, fiecarefiecare cicluciclu mamaşşinăină areare 1212 perioadeperioade dede tacttact

-- ÎÎnn general,general, instrucinstrucţţiunileiunile dureazădurează 11 cicluciclu mamaşşinăină

-- SeSe faceface fetchfetchîînn S1S1 şşii îînn S4S4

-- MOVXMOVX necesitănecesită 22 cicluricicluri mamaşşinăină

ÎÎnn acestacest cazcaz nunu existăexistă fetchfetchîînn cadrulcadrul celuicelui dede--alal 22--lealea cicluciclu mamaşşinăină

Microcontrolere - Capitolul 1 Corneliu BURILEANU ©

21