Click here to load reader

Intel 8051

  • View
    200

  • Download
    5

Embed Size (px)

Text of Intel 8051

3.1 Microcontrolerul 80C51 3.1.1 Caracteristici80C51 este un microcontroler foarte rspndit, fiind cel ce a pus bazele familiei de microcontrolere 80C51. Este realizat n tehnologie CMOS i se prezint ntr-o capsul DIL40 sau LCC44 sau QFP44. Principalele caracteristici ale acestui microcontroler sunt: - include 4 Ko memorie ROM i 128 octei memorie RAM, - include o unitate aritmetic i logic, - are 4 porturi de intrare/ ieire care pot fi utilizate ca porturi de uz general dar au i funciuni specifice, - poate adresa 64 Ko memorie extern de program i 64 Ko memorie extern de date, - are 2 contoare/ temporizatoare, independente, pe 16 bii, - include un port serial UART full duplex, - poate gestiona 5 surse de ntreruperi, cu 2 nivele de prioriti, - consum mic: 16 mA n modul normal, 3,7 mA n modul Idle i 50 A n modul Power Down.

3.1.2 Configuraia terminalelorFig. 3.1 prezint configuraia terminalelor la microcontrolerul 80C51, grupate din punct de vedere funcional. 39-32 10 (11) P3.0 / RXD P0.0-7 / AD0-7 (43-36) 11 (13 P3.1 / TXD 12 (14) P3.2 / INT0 13 (15) P3.4 / INT1 1-8 14 8 (16) P3.5 / T0 P1.0-7 (2-9) 15 0 (17) P3.6 / T1 16 C (18) P3.7 / /WR 17 5 24-31 (19) P3.8 / /RD 1 P2.0-7 / A8-15 (24-31) 19 (21) XTAL1 30 18 ALE (33) (20) XTAL2 29 40 /PSEN (32) (44) VCC 31 /EA (35) 20 9 (22) VSS RST (10) Fig. 3.1 Configuraia terminalelor la microcontrolerul 80C51 Semnificaiile lor sunt: P0.0-7/ AD0-7: port bidirecional de intrare/ ieire, pe 8 bii, cu dren n gol; o ieire suport 8 sarcini TTL LS; rangurile care au nscrise 1 pot funciona ca intrri de mare impedan; n ciclurile n care se face acces la memorie este o magistral multiplexat

ntre jumtatea mai puin semnificativ din magistrala de adrese i magistrala de date; n acest ultim caz emite 1 pe linie utiliznd rezistene interne la Vcc. P1.0-7: port bidirecional de intrare/ ieire, pe 8 bii, cu rezistene interne la Vcc; pentru a funciona ca intrri, trebuie ncrcat 1 n rangurile respective; o intrare comandat cu 0 va absorbi curent datorit rezistenei interne la Vcc. P2.0-7/ A8-15: port bidirecional de intrare/ ieire, pe 8 bii, cu rezistene interne la Vcc; n timpul acceselor la memoria extern genereaz jumtatea superioar din magistrala de adrese atunci cnd accesul memoriei externe se face cu adrese pe 16 bii. P3.0-7/ XXX: port bidirecional de intrare/ ieire, pe 8 bii, cu rezistene interne la Vcc; terminalele sale au i funciuni specifice: P3.0: RxD: intrare serial, P3.1: TxD: ieire serial, P3.2: /INT0: intrare pentru ntreruperea extern 0, P3.3: /INT1: intrare pentru ntreruperea extern 1, P3.4: T0: intrare extern pentru contorul 0, P3.5: T1: intrare extern pentru contorul 1, P3.6: /WR: semnal de comand pentru scriere n memoria de date extern, P3.7: /RD: semnal de comand pentru citire din memoria de date extern. RST (Reset): intrare pentru iniializare. ALE ("Address Latch Enable"): ieire folosit la demultiplexarea magistralei de adrese/ date; frecvena semnalului este egal cu 1/ 6 din frecvena tactului chiar dac nu se fac accese la memoria extern; ns n timpul unui acces la memoria extern de date se pierde o activare. /PSEN ("Program Store Enable"): este semnalul de comand pentru citirea din memoria extern de program; n ciclurile de citire din memoria extern se activeaz de 2 ori/ ciclu; nu se activeaz atunci cnd se execut program din memoria intern de program i nici n ciclurile n care se transfer date cu memoria extern de date. /EA ("External Address"): este o intrare care selecteaz memoria de program; dac este 0 atunci se va executa din memoria extern de program iar dac este 1 atunci se va executa din memoria intern de program, pn la valoarea 0FFFH din PC, dup care se va executa din memoria extern de program indiferent de nivelul logic care comand terminalul. XTAL1, XTAL2: terminale la care se conecteaz un cuar pentru a obine tactul intern; frecvena acestuia trebuie s fie de 0,5 - 12 MHz; se poate comanda terminalul XTAL1 cu semnal de tact extern, cu factor de umplere 1/2, iar terminalul XTAL2 rmne neconectat. Vcc: tensiune de alimentare, +5 V tensiune continu. Vss: mas electric.

3.1.3 Structura internFig. 3.2 prezint schema bloc a microcontrolerului 80C51. Resursele acestuia sunt: - memoria intern de program, de 4 Ko, - memoria intern RAM, de 128 octei, - registrele cu funciuni speciale, SFR ("Special Function Registers"), - 2 contoare/ temporizatoare, independente, - o interfa serial UART full duplex, - sistem de ntreruperi.

ntreruperi externe

Sistem de ntreruperi

4 ko ROM

1280 RAM

Registre cu funciuni speciale

CPU

Generator de tact

Logic de control a magistralei

Porturi de I/E

Port serial

Contor Contor 0 1

P0 P1 P2 P3

TxD RxD

T0

T1

3.1.3.1 Memoria internMemoria intern a microcontrolerului este de dou tipuri: fix i RAM. Memoria intern fix a fost implementat cu memorie ROM, are 4 Ko i ocup zona 0000 - 0FFFH din spaiul de adresare pentru memoria de program. Ea este adresat dac intrarea /EA = 1. Tot n aceast zon poate fi suprapus i memorie fix extern care va fi adresat dac /EA = 0. Pentru adrese superioare lui 0FFFH, va fi adresat memoria fix extern, indiferent de nivelul logic de la intrarea /EA. Memoria fix este folosit ca memorie de program. Memoria RAM intern are capacitatea de 128 octei i ocup zona 0000 - 00FFH din spaiul de adresare pentru memoria de date. Organizarea memoriei este dat n fig. 3.3. Fig. 3.2 Schema bloc a microcontrolerului 80C51

Fig. 3.3 Organizarea memoriei RAM interne la microcontrolerul 80C51 Zona 00 - 1FH este divizat n 4 blocuri de cte 8 octei, notate cu Blocul 0 - 3. Exist un grup de registre, R0-7 care se suprapune, la un moment dat, peste un singur bloc din cele 4. Blocul care se suprapune peste registrele R0-7 este selectat de programator prin intermediul rangurilor RS1 i RS0 din registrul de stare al programului, PSW ("Program Status Word"). Dup iniializare, unitatea central, CPU, ncepe execuia de la adresa 0000 iar registrele R0-7 se suprapun peste Blocul 0. Stiva va fi iniializat la adresa 07H, adic n indicatorul de stiv, SP, se va ncrca valoarea 07H. La depunerea n stiv, SP va fi incrementat, spre deosebire de microprocesoare unde la depunerea n stiv SP este decrementat. Se recomand ncrcarea n SP a unei valori care s corespund unei locaii din zona Data RAM. Zona 00 - 1FH poate fi accesat direct, prin intermediul unei adrese pe 8 bii sau prin adresare de registru. De exemplu instruciunea DEC R5 va avea urmtorul efect: prin intermediul rangurilor RS1 i RS0 se alege un bloc din 4, iar octetul din blocul astfel selectat care se suprapune peste registrul R5 va fi decrementat. Registrele R0 i R1 pot fi folosite pentru adresare indirect a memoriei de date. De exemplu instruciunea INC @R0 va avea urmtorul efect: prin intermediul rangurilor RS1 i RS0 se alege un bloc iar octetul din blocul astfel selectat care se suprapune peste R0 va fi interpretat ca adresa unei locaii din memoria RAM intern. Coninutul locaiei respective va fi incrementat. Avantajul adresrii memoriei prin intermediul registrelor R0-7 este acela c rezult instruciuni scurte. Astfel pentru adresare de registru sunt necesare doar 3 ranguri care se gsesc, mpreun cu codul instruciunii, n primul octet al acesteia. La adresarea indirect, prin intermediul registrelor R0 sau R1 este nevoie de un singur rang, aflat, de asemenea, n primul octet al instruciunii. Zona 20H - 2FH din RAM-ul intern este denumit Bit RAM, ntruct fiecare din cei 128 FF

Data RAM

30 2F Bit_RAM 20 1F 18 17 10 0F 08 07 00 Bloc 3 Bloc 2 Bloc 1 Bloc 0

bii poate fi adresat individual. Exist 2 modaliti de a adresa biii din aceast zon. Una folosete adresa lor: 00 - 7FH, cu 00 pentru bitul 0 de la locaia 20H i 7FH pentru bitul 7 de la locaia 2FH. Cealalt se refer la octeii 20H - 2FH. Astfel biii 00 - 07 pot fi adresai ca 20.0 - 20.7, biii 08 - 0FH ca 21.0 - 21.7 etc. De exemplu instruciunea CLR 20.0 va avea n al doilea octet al ei un cmp de 5 ranguri care specific octetul 20H i un cmp de 3 ranguri care specific bitul selectat. Fiecare octet din aceast zon poate fi adresat i ca octet distinct. Zona 30H - 7FH este denumit Data RAM i este o zon de memorie RAM de uz general. Se recomand plasarea stivei n aceast zon.

3.1.3.2 Registrele cu funciuni speciale, SFRMicrocontrolerul 80C51 conine un grup de registre interne, cu funciuni speciale. Ele sunt adresabile n mod direct iar registrele ale cror adrese se termin n 0 sau 8 pot fi adresate i la nivel de bit. Registrele i adresele lor sunt prezentate n tab. 3.3. n continuare vor fi prezentate, pe scurt, registrele. ACC: este registrul acumulator. Denumirea folosit n cadrul instruciunilor este A. B: este un registru cu rol predeterminat n instruciunile de nmulire i mprire. Pentru celelalte instruciuni, poate fi utilizat ca registru general. SP ("Stack Pointer"): este indicatorul de stiv. Este incrementat naintea unei depuneri n stiv prin intermediul instruciunilor CALL sau PUSH. Dup iniializare este ncrcat cu valoarea 07H deci stiva ncepe de la adresa 08H. Poate fi ncrcat, prin program, cu orice valoare. Registru B ACC PSW IP P3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL Adres de bit b7 b6 b5 F7 F6 F5 E7 E6 E5 D7 D6 D5 BF BE BD B7 B6 B5 AF AE AD A7 A6 A5 9F 97 9E 96 9D 95 Adres de registru F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H

b4 F4 E4 D4 BC B4 AC A4 9C 94

b3 F3 E3 D3 BB B3 AB A3 9B 93

b2 F2 E2 D2 BA B2 AA A2 9A 92

b1 F1 E1 D1 B9 B1 A9 A1 99 91

b0 F0 E0 D0 B8 B0 A8 A0 98 90

8F

8E

8D

8C

8B

8A

89

88

SP P0

81H 87 86 85 84 83 82 81 80 80H Tab. 3.3 Registrele cu funciuni speciale ale microcontrolerului 80C51

PSW ("Program Status Word"): este registrul de stare al programului. Conine indicatorii de condiii. Rangurile sale au urmtoarele semnif