Documente Academic
Documente Profesional
Documente Cultură
Variante
- 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
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
Oct 18, 2022 Microcontrolere 3
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
Adresabile şi pe bit
Disponibile numai pentru 8052
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
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 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.
Adresare relativă:
- Se foloseşte doar pentru memoria de program!
- Aria de memorie pentru salt este de la -128B la + 127B relativ la primul octet
după instrucţiune.
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ă
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
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 ü
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.
Moduri de adresare
Sintaxă Semantică Dir. Indexată Reg. Im.
MOVC A, @A+DPTR (ACC) ¬ ((ACC)+(DPTR)) ü
MOVC A, @A+PC (ACC) ¬ ((ACC)+(PC)) ü
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 ü
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)
MOV 0x3F, C
Q: Adresa de început a unei tabele de căutare (look-up table) aflate la finalul memoriei de program a controlerului
8051 este 0xF800.
Primul parametru de intrare (s1) are 16 valori posibile, iar al doiea (s2) are 128.
Care este adresa la care se găsește rezultatul corespunzător codurilor s1 = 0x8 și s2 = 0x7A?
MOV A, #0xC1
MOV R1, #40h MOV R1, #5Eh MOV A, #C3H
SETB C INC R1 SETB C
SUBB A, R1 INC @R1 RLC A
l Fiecare sursă de întrerupere are asociată unul sau mai multe fanioane, localizate în SFR
l Toate întreruperile sunt dezactivate la reset și pot fi activate independent de către urilizator