Download pdf - Microcontrolerul 8051

Transcript

LABORATOR SEP

Microcontrolerul 8051 ( I )

LUCRAREA 5MICROCONTROLERUL 8051 ( I )1. OBIECTUL LUCRRII Lucrarea i propune prezentarea microcontrolerului 8051 i nsuirea cunotinelor i elementelor legate de lucrul cu acesta. Sunt nfiate aspecte legate de arhitectura hardware: - semnificaia pinilor; - conectarea circuitelor de memorie la magistrale; - organizarea memoriei RAM interne; - setul de regitri. De asemenea, se prezint setul de instruciuni al microcontrolerului i sunt rezolvate aplicaii. 2. BREVIAR TEORETIC Un microcontroler (microcontroller unit - MCU) este un circuit integrat care conine n aceeai capsul, pe lng procesor i memorie (ROM, RAM) i circuite I/O specializate de tip porturi paralele, canale timer, ci seriale i, respectiv, circuite ce gestioneaz logica de ntreruperi. Pot exista variante ce conin periferice nestandardizate cum ar fi convertoare AD i, respectiv, DA, ieiri de tip PWM (pulse width modulation), circuite watch-dog, circuite dotate cu semnale pentru magistrale I2C. Au aprut i circuite ce sunt prevzute cu locaii de memorie EEPROM (cu tergere electric), pentru stocarea de informaii ce se menin i dup dispariia tensiunii de alimentare. Diversitatea i multitudinea de periferice incluse il fac apt pentru controlul diverselor aplicaii. Practic, cu un astfel de circuit este posibil realizarea unui ntreg microsistem de calcul. Printre firmele productoare de microcontroloare amintim: - ZILOG - INTEL - INTEL - MOTOROLA - MICROCHIP - TEXAS INSTRUMENTS - NEC - cu familia Z-8; - cu familia 8051 (8 bii); - cu familia 80196 (16 bii); - cu familia 68HC11, mai nou 68HC16; - cu familiile PIC 15CXX, PIC16CXX, PIC17CXX; - cu familia TMS370. - cu familia 70K

Firma INTEL a introdus familia de microcontroloare 8051 din anul 1980. Aceasta familie este continuatoarea altor familii de microcontroloare (8035, 8048), realizat de aceiai firm. Din 1989, firma PHILIPS (SIGNETICS) produce i ea acest tip de microcontroler, iar ulterior i alte firme au preluat producia de circuite aducndu-le diverse elemente suplimentare. Astfel, firma ATMEL a introdus memoria ROM de tip FLASH (cu tergere electric), iar firma DALLAS a realizat circuite care pot s lucreze cu semnal de ceas de pn la 30Mhz.

1

LABORATOR SEP

Microcontrolerul 8051 ( I )

Microcontrolerele sunt folosite n diverse aplicaii, acolo unde este nevoie de conducerea i gestionarea de procese n spaii mici, de economicitate, de portabilitate, att n mediu industrial ct i n electronica de larg consum. Prezentarea familiei 8051 Microcontrolerul standard 8051 este realizat ntr-o capsul cu 40 pini (DIL) sau 44 pini (PLCC). Pentru funcionare are nevoie de o singur surs de tensiune (+5V). Iniial a fost realizat n tehnologie NMOS (consum 125 150 mA), iar ulterior a aprut i variante CMOS (consum 15 30 mA). Denumirea versiunii CMOS este 80C51. Familia 8051 cuprinde diverse variante ale circuitului standard: - circuitul 8051 conine 4Ko memorie PROM (one time programming) i 128 octei RAM; - circuitul 8031 conine 128 octei RAM i nu are memorie ROM (ROMless); - circuitul 8751 conine 4 Ko memorie EPROM i 128 octei RAM; - circuitul 8052 conine 8 Ko PROM i 256 octei RAM; - circuitul 8032 conine 256 octei RAM i nu are memorie ROM; - circuitul 8752 conine 8 Ko EPROM i 256 octei RAM; - circuitul 8754 conine 16 Ko EPROM i 256 octei RAM; - circuitul 8758 conine 32 Ko EPROM i 256 octei RAM. Toate aceste versiuni prezint procesorul propriu-zis, 4 porturi paralele de cte 8 bii (3 avnd un caracter opional), un canal pentru comunicaii seriale, 2 canale timer, logic de ntreruperi ce gestioneaz 2 ntreruperi externe i 3 ntreruperi interne (2 de la canalul timer i una de la canalul serial). n familia microcontrolerului exist i alte variante care prezint urmtoarele nouti: - un canal timer suplimentar; - ieiri pentru generarea de impulsuri de tip PWM (pulse width modulation); - convertor analog-digital (pe 10 bii); Unele din aceste variante conin 8 Ko i chiar 16 sau 32 Ko memorie ROM. Memoria RAM poate avea pn la 512 octei. Numrul pinilor este cuprins ntre 40 68 , capsulele fiind de tipul DIL (Dual n Line), PLCC (Plastic Leaded Chip Carrier) sau CLCC (Ceramic Leaded Chip Carrier). Pentru circuitele ce posed memorie ROM exist posibilitatea secretizrii coninutului acesteia. Astfel, informaia poate fi criptat, folosind o secven de criptare aleas de utilizator, la programarea chip-ului. Exist i posibilitatea utilizrii mai multor bii de siguran n cadrul secvenei de programare, prin care se poate inhiba operaia de citire a coninutului memoriei ROM din microcontroler i, respectiv, a operaiei de programare. Aceste opiuni previn pirateria software. Caracteristica microcontroloarelor din familia 8051 o constituie faptul c arhitectura procesorului este de tip HARVARD. n general, procesoarele prezint dou tipuri de arhitecturi (PRINCETOWN i HARVARD). ntr-o arhitectura PRINCETOWN, instruciunile se plaseaz n acelai spaiu de memorie cu datele. ntr-o arhitectur HARVARD, spaiul de memorie ce conine instruciuni difer de spaiul de memorie ce conine date. De obicei, instruciunile se pstreaz n memoria ROM, iar datele n RAM. Exist instruciuni separate pentru accesarea celor dou spaii de memorie. Din punct de vedere hardware exist semnale (pini de ieire ai microcontrolerului) care selecteaz spaiul memoriei de programe separat de cel al memoriei de date. Spaiul de memorie rezervat programelor este de 64 Ko, iar cel rezervat datelor este tot de 64 Ko. Exist i posibilitatea suprapunerii celor dou zone de memorie cu micorarea spaiului total de adresare la 64 Ko.

2

LABORATOR SEP

Microcontrolerul 8051 ( I )

Microcontrolerele care au memorie ROM intern pot s inhibe acest spaiu i s utilizeze numai memorie ROM extern. Exist i posibilitatea lucrului simultan cu memorie ROM intern i memorie ROM extern.

SCHEMA BLOC A MICROCONTROLERULUI

2233pF

2233pF

X1

X2

OSC

ROM

RAM

Interfaa SERIAL

TxD RxD

CPU

TIMER 0ntreruperi externe INT0 INT1

T0 T1

TIMER 1

PORTURI PARALELE

BLOC NTRERUPERI

ntreruperi interne

P0 Descrierea pinilor circuitului 8051

P1

P2

P3

Circuitul standard realizat n capsul DIL prezint 40 pini. Dintre acetia, doi pini sunt rezervai tensiunii de alimentare (+5V i mas).

3

LABORATOR SEP

Microcontrolerul 8051 ( I )

Controlerul conine 4 porturi paralele de cte 8 bii fiecare, ce pot fi folosite pentru generarea i, respectiv, receptarea semnalelor digitale (notate P0, P1, P2, P3). Funcie de modul de lucru n care lucreaz, aceste porturi se pot configura i pot avea mai multe situaii de lucru. Astfel, dac se lucreaz cu memorie ROM extern, 2 dintre aceste porturi se constituie n linii ce formeaz magistralele de adrese i de date. Portul P0 genereaz, multiplexat n timp, partea cea mai puin semnificativ a informaiei de adres (A0-A7) i, respectiv, gestioneaz magistrala de date (D0D7). Pentru formarea magistralei de adrese va fi nevoie s se plaseze n exteriorul MCU-ului un circuit de tip latch (de exemplu 74HCT573), cu scopul de a memora informaia de adres. Acionarea acestui circuit se face utiliznd semnalul ALE. Portul P2, n aceleasi situaii, genereaz octetul cel mai semnificativ al informaiei de adrese (A8-A15). Cele 16 linii de adrese astfel formate permit adresarea a 64 Ko memorie. De fapt, se pot adresa 64Ko memorie de programe (ce conine instruciuni) i, respectiv, 64Ko memorie de date, deci n total 128 Ko. Notaiile liniilor porturilor sunt Pi.j, cu i = 0, .., 3, iar j = 0, ..., 7. Atunci cnd formeaz magistrala de adrese i date, liniile portului P0 mai sunt notate AD0AD7, iar liniile lui P2 au denumirea A8-A15. Cnd nu se lucreaz cu magistralele externe, cele 2 porturi P0 i P2 se pot folosi ca porturi de tip paralel. n aceast situaie se atrage atenia asupra faptului c liniile portului P0 sunt de tipul open drain, fiind necesar plasarea n exterior de rezistene ctre sursa de alimentare, n vederea asigurrii polarizrii. P1 este n orice situaie de lucru a microcontrolerului, port de tip paralel, biii acestuia fiind configurabili att ca ieiri, ct i ca intrri digitale. Liniile portului sunt notate P1.0, ..., P1.7. Ultimul port (P3) are un caracter multifuncional, funcie de modul de lucru al microcontrolerului. Pe de o parte, prin liniile acestui port, circuitele I/O existente n MCU (cele 2 canale timer, canalul de comunicaie serial, logic pentru gestionarea ntreruperilor) sunt accesibile utilizatorului. Dac nu se lucreaz cu circuitele I/O locale, acest port poate s lucreze ca un port de tip paralel, liniile asigurnd generarea i preluarea de semnale digitale. Corespondena liniilor portului 3 cu liniile circuitelor I/O interne este urmtoarea: - P30 - RXD -intrare pentru recepia serial a datelor la unitatea serial; - P31 -TXD - ieire pentru transmisia serial a datelor de la unitatea serial; ____ - P32 - INT0 - intrare pe care se poate aplica o cerere de ntrerupere extern; ____ - P33 - INT1 - intrare pe care se poate aplica o cerere de ntrerupere extern; - P34 - T0 - intrare pe care se pot aplica impulsuri externe cu numrare de ctre timerul 0;

- P35 - T1 - intrare pe care se pot aplica impulsuri externe cu numrare de ctre timerul 1; ___ - P36 - WR - semnal pentru scriere la lucrul cu memoria de date extern; ___ - P37 - RD - semnal pentru citire la lucrul cu memoria de date extern; __ EA - external address. Cnd se lucreaz cu magistrale externe, acest pin se conecteaz la ,,0logic. Cnd se folosete memoria ROM intern, pinul se leag la ,,1- logic. n aceast situaie, la adresarea ROM-ul intern de 4K, controlerul genereaz adrese din gama 0000h-0FFFh i nu se emit semnale pe magistralele externe (P0 i P2 putnd fi folosite ca porturi paralele). Exist posibilitatea folosirii n completare, a unei memorii ROM externe, dar care va fi selectat i adresat ncepnd cu adresa 1000h (P0 i P2 ncetnd s mai poat fi folosite ca porturi paralele).4

LABORATOR SEP

Microcontrolerul 8051 ( I )

ALE - address latch enable. Semnalul este folosit pentru demultiplexarea extern a informaiilor emise pe portul P0. Astfel, semnalul este folosit n vederea memorrii n latch-ul extern 74HCT573, a prii mai puin semnificative a adresei A0-A7 emis pe liniile acestuia. Semnalul este activ ,,1logic. _____ PSEL - program select. Este semnalul prin care se face activarea memoriei de programe atunci cnd controlerul realizeaz extragerea codurilor instruciunilor. Dac se lucreaz cu ROM-ul intern, acest semnal nu se genereaz. Pinul este folosit i n situaiile de programare ale ROMului intern. n acest caz, pinul este intrare avnd notai PROG (Programming). RESET - Semnal pentru iniializarea controlerului, activ 0- logic. XTAL1; XTAL2 - Pini pe care se conecteaz n exterior cristalul de cuar n ritmul cruia lucreaz oscilatorul local. Se poate lucra i cu oscilator extern, semnalul respectiv aplicndu-se pe XTAL1. n acest caz, XTAL2 amplific semnalul n vederea folosirii de ctre alte circuite din respectivul microsistem care au nevoie de un astfel de semnal. Varianta standard de C 8051 lucreaz cu un cristale de cuar de 12 MHz. Au aprut variante la 16 Mhz, ajungndu-se chiar de 30 Mhz. Modalitatea de conectare a circuitelor de memorie la magistralele controlerului 8051 1. Conectarea memoriei de programe (memoria ROM) memoreaz informaia la tranziia sus - jos a semnalului ALE 8 (A0A7) C LATCH 74573 ___ OE

C1

C2

X1 ROM int. ADR 0

X2

ALE

8

P0 (AD0 AD7)

}8(A8A15)

ADR

( )ROM ext. ADR 0K

8051EA P2 (A8 A15)

ROMD0D7BLOC DECODIFICARE

CE OE

RESET

PSEL

5

LABORATOR SEP

Microcontrolerul 8051 ( I )

2. Conectarea memoriei de date (memoria RAM)

8 (A0A7) ALE P0 (A0A7)

8

C

LATCH

74573___ OE8

}(A8A15)

0(H)

ADR RAM

80510(H) 80(H) P2 RAM INT. (A8A15)

RAM

D0D7BLOC DECODIFICARE

CE WR RD FFFF(H)

PSEL

RD WR

Intrarea EA nu are nici un efect asupra memoriei de date. Memoria RAM intern ocup adresele 00h 7Fh. RAM-ul extern se poate plasa n spaiul de adrese 0000h FFFFh. Nu apare nici o interferen ntre cele dou zone de memorie, deoarece fiecare este accesat din punct de vedere hardware prin semnale diferite, iar software se utilizeaz instruciuni specifice pentru adresare. Astfel, la adresarea memoriei de date externe se utilizeaz instruciunea MOVX, n timp ce pentru a extrage date din memoria de programe se folosete instruciunea MOVC. Exist i posibilitatea suprapunerii celor dou spaii de memorie, cu reducerea spaiului de adresare. n felul acesta, memoria RAM poate fi folosit pentru rularea programelor, dac n prealabil n ea s-au transferat instruciuni. Hardware, se procedeaz conform schemei urmtoare, pentru obinerea semnalului de accesare al memoriei RAM: ____ ___ PSEL RD

___ OE

6

LABORATOR SEP

Microcontrolerul 8051 ( I )

Organizarea memoriei RAM interne a microcontrolerului Memoria RAM intern este mprit n 2 zone. O prim zon RAM ncepe cu adresa 00h, fiind destinat n principal folosirii de ctre utilizator. Ea conine un numr de locaii ce depinde de tipul respectivului controler. Dimensiunea standard este de 128 locaii (octei). Zona se adreseaz prin instruciuni specifice care nu acceseaz eventuala memorie RAM exterioar microcontrolerului conectat la adresele similare externe. Cele dou spaii de memorie RAM intern i extern sunt accesate diferit. Pentru fiecare spaiu exist instruciuni specifice cu care se poate lucra. Cnd se lucreaz cu spaiul de adrese interne, semnalele de adrese externe nu se activeaz. Zona de memorie RAM intern (la 8051, 128 de locaii notate 00h - 7Fh) este i locul n care se creeaz stiva procesorului. Registrul SP, pe 8 bii, adreseaz aceast stiv. La depunerile n stiv, SP-ul se incrementeaz, iar la extragerile din stiv acesta se decrementeaz, stiva fiind adresat printr-o tehnic de tip LIFO (last n first out). La iniializare (reset), SP-ul se ncarc cu adresa 07h i prima depunere n stiv se va face la adresa 08h. Stiva crete ctre sfritul memoriei (invers fa de microprocesorul Z80). Utilizatorul are posibilitatea s schimbe baza stivei prin ncrcarea registrului SP cu o nou adres, printr-o instruciune specific. O alt proprietate a RAM-ului local const n faptul c locaiile cu adresele de la 20h pn la 2Fh se constituie n zona adresabil pe bit. Cu cei 128 bii ai acestei zone se poate lucra n mod individual folosind instruciuni specifice. n al treilea rnd, n RAM-ul local se plaseaz i o serie de regitri ai unitii centrale (opional 4 bank-uri de 8 regitri generali). Pe lng aceast zon de memorie RAM local, exist o a doua zon de memorie RAM denumit zona regitrilor cu funcie special (SFR - special function registers), zon ce cuprinde locaii n care se afl sediul regitrilor ce gestioneaz circuitele I/O locale, precum i regitri ai unitii centrale. Din punct de vedere al adreselor, aceast zon se ntinde de la 80h la FFh. F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80 FF F7 EF E7 DF D7 CF C7 BF B7 AF A7 9F 97 8F 87

B ACC PSW

IP P3 IE P2 SCON P1 TCON P0

SBUF TMOD TL0 SP DPL TL1 DPH TH0 TH1 PCON

7

LABORATOR SEP

Microcontrolerul 8051 ( I )

Un asamblor specific familiei 8051 recunoate regitrii interni fie prin notaie, fie prin adresa ocupat n spaiul SFR. n tabloul SFR, regitrii aflai pe prima coloan din stnga (cei care se afl la adresa 80h, 88h, 90h, 98h, A0h, A8h, ..., F0h, F8h) sunt adresabili la nivel de bit, pentru ei acionnd instruciuni ce manevreaz zona de memorie RAM local adresabil la nivel de bit. Biii din cadrul regitrilor adresabili pe bit, din zona SFR, au denumiri specifice prin intermediul crora sunt manevrai de instruciuni n cadrul limbajului de asamblare. Revenind la prima zon de memorie RAM local, spaiul cuprins ntre adresele 00h i 1Fh este rezervat pentru patru seturi (bank-uri) de regitri ai unitii centrale, R0 R7. La un moment dat, utilizatorul are acces doar la informaiile din cadrul unui singur set de regitri. La iniializarea procesorului este activat primul bank de regitri, R0R7, aflat n locaiile de memorie 00h - 07h. Reamintim c la iniializare, registrul SP este ncrcat cu valoarea 07h. Cum n urma unei depuneri n stiva, SP-ul este incrementat, rezult c n astfel de situaii, stiva va ocupa n RAM-ul intern locaii ncepnd cu adresa 08h pn la sfritul memoriei. Dac se opteaz pentru astfel de organizare a stivei, utilizatorul nu va mai putea folosi celelalte trei seturi de regitri de tip R0 R7. Dup cum s-a amintit, zona de memorie RAM intern cuprins ntre adresele 20h i 2Fh formeaz aa numita zon de memorie RAM adresabil pe bit ce conine 16 x 8 = 128 bii. Cei 128 bii sunt notai de la 00h pn la 7Fh. Exist instruciuni n setul de instruciuni al microcontrolerului care lucreaz la nivel individual cu biii din cadrul acestei zone. n limbajul de asamblare, aceti bii sunt recunoscui fie prin notaia prezentat anterior, fie prin denumirea atribuit n program. Zona de memorie RAM cuprins ntre 30h i 7Fh nu are proprieti deosebite, putnd fi utilizat de ctre programator pentru stocarea variabilelor pe octet. 7F(H)

7F(H)

7E(H)

7D(H)

30(H) 7C(H)

7B(H)

7A(H)

79(H)

78(H)

2F(H)

17(H) 0F(H) 07(H)

16(H) 0E(H) 06(H)

15(H) 0D(H) 05(H)

14(H) 0C(H) 04(H) 1F(H)

13(H) 0B(H) 03(H)

12(H) 0A(H) 02(H)

11(H) 09(H) 01(H)

10(H) 08(H) 00(H)

22(H) 21(H) 20(H)

01(H) 00(H)

R1 R2

SETUL DE REGITRI AI UNITII CENTRALE DIN MICROCONTROLER

8

LABORATOR SEP

Microcontrolerul 8051 ( I )

Registrul ACCUMULATOR (ACC sau A) - registru pe 8 bii ce este folosit la operaiile aritmetico-logice, pentru adresarea memoriei externe n vederea prelurii de informaii (att la memoria de date ct i la cea de programe) i stocrii de informaii (n memoria de date). Nu se recomand folosirea lui pentru memorri de lung durat a informaiilor. Registrul B - registru pe 8 bii ce este folosit pentru operaiile de nmulire i mprire. D7CY

Registrul PSW (Programm Status Word - cuvntul de stare program). Are structura: D6 D5 D4 D3 D2 D1 D0AC F0 RS1 RS0 OV __ P

Registrul conine indicatorii de condiii: CY - indicator carry; AC - auxiliar carry; F0 - Flag 0 - bit ce poate fi folosit de utilizator pentru scopuri generale de semnalizare; RS1, RS0 - register select - bii folosii pentru selectarea bancului de regitrii activi R0R7. Selecia se face conform tabelului: RS1 0 0 1 1 RS0 0 1 0 1 SELECIE - bancul activ n celulele 00(H) 07(H) . - bancul activ n celulele 08(H) 0F(H) . - bancul activ n celulele 10(H) 17(H) . - bancul activ n celulele 18(H) 1F(H) .

OV - overflow - indicator de depire a rezultatelor obinute la operaii aritmetice efectuate asupra operanzilor exprimai n cod complement fa de 2; P - parity - indic paritatea rezultatelor obinute n acumulator. Registrul SP (Stack Pointer - indicatorul vrfului stivei) - folosit pentru adresarea stivei. Registrul DPTR (Data Pointer) - registru pe 16 bii alctuit din 2 regitri DPH i DPL. Este folosit pentru adresarea memoriei externe de date i de programe. Registul PCON (Power Control) - registru pentru gestionarea energetic a microcontrolerului. Structura acestui registru este urmtoarea : D7 D6 D5__

D4__

D3GF1

D2GF0

D1PD

D0IDL

SMOD __

SMOD - (serial mode) - dac acest bit este pus 1- logic i dac canalul timer 1 este folosit pentru generarea semnalului pentru ceasul transmisiei i recepiei seriale, atunci rata comunicaiei este dublat. Dac SMOD este 0 - logic, rata de transmisiei/recepiei seriale este normal. GF1, GF0 - (general flag 1, 0) - indicatori generali ce pot fi utilizai de programator.

9

LABORATOR SEP

Microcontrolerul 8051 ( I )

PD - power down - poziionarea acestui bit n 1- logic atrage dup sine oprirea activitii microcontrolerului, cu intrarea acestuia ntr-un regim de lucru n care puterea absorbit de la sursa de tensiune este redus foarte mult, doar RAM-ul local meninndu-se alimentat. Opiunea este valabil doar pentru variantele CMOS. Din acest mod de funcionare se poate iei doar prin iniializarea hardware a MCU-ului. IDL - idle - dac este 1- logic se provoac intrarea n modul de operare idle. n acest mod activitatea procesorului este oprit, meninndu-se active circuitele locale I/O i logica pentru gestionarea ntreruperilor. Aceast stare este una de consum redus energetic din care se poate iei prin primirea unei ntreruperi sau prin iniializare hardware. Este valabil doar pentru versiunile realizate n tehnologie CMOS ale microcontrolerului.

SETUL DE INSTRUCIUNI AL MICROCONTROLERULUI 8051 Legenda pentru notaiile folosite: Rn - unul dintre regitrii R0 R7 ; direct - reprezint adresa unei locaii de memorie RAM intern microcontrolerului (numr pe 8 bii). Acest numr, 00h - 7Fh, definete chiar locaia RAM cutat. @Ri - specific coninutul locaiei de memorie intern, cu adresa este specificat prin unul din regitrii R0 i R1. Se atrage atenia ca doar regitrii R0 i R1 posed aceast proprietate. # data - specific o data imediat care apare n formatul unei instruciuni. Poate fi pe 8 bii sau n cazul registrului DPTR pe 16 bii. rel - reprezint un deplasament (numr cu semn exprimat n cod complement fa de 2 CC2) Operaii aritmetice 1.Adunarea a) Adunarea normal ADD A,Rn ADD A,direct ADD A,@Ri ADD A,# data A A + Rn A A + (direct) A A + (Ri) A A + # data

b) Adunare cu transport ADDC A,Rn A A + Rn + Cy ADDC A,direct A A + (direct) + Cy ADDC A,@Ri A A + (Ri) + Cy ADDC A,# data A A + # data + Cy 2.Scderea Scdere cu mprumut - borrow SUBB A,Rn A A - Rn - Cy

10

LABORATOR SEP

Microcontrolerul 8051 ( I )

SUBB A,direct SUBB A,@Ri SUBB A,# data 3.Incrementarea INC A INC direct INC @Ri INC Rn INC DPTR 4.Decrementarea DEC A DEC direct DEC @Ri DEC Rn 5. Multiplicarea

A A - (direct) - Cy A A - (Ri) - Cy A A - # data - Cy

AA+1 (direct) (direct) + 1 (Ri) (Ri) + 1 Rn Rn + 1 DPTR DPTR + 1 AA-1 (direct) (direct) - 1 (Ri) (Ri) - 1 Rn Rn - 1

MUL AB B,A A x B Rezultatul (ocms-ul) se obine n registrul B, i, respectiv, n A(ocmps-ul). 6. mprirea DIV AB A,B A / B Rezultatul (ctul) se obine n A, iar n B restul. 7. Ajustarea zecimal a acumulatorului DA A Instruciunea actioneaz doar n urma unei operaii aritmetice de adunare, operanzii implicai fiind exprimai n cod BCD. n astfel de situaii rezultatul operaiei nu apare n cod BCD. Instruciunea DA A reajusteaz rezultatul obinut transformndu-l n cod BCD.

Operaii logice 1. i logic ANL A,Rn ANL A,direct ANL A,@Ri ANL A,# data ANL direct,A A A Rn A A (direct) A A (Ri) A A # data (direct) (direct) A11

LABORATOR SEP

Microcontrolerul 8051 ( I )

ANL direct,# data 2. Sau logic ORL A,Rn ORL A,direct ORL A,@Ri ORL A,# direct ORL direct,A ORL direct,# data 3. Sau exclusiv XRL A,Rn XRL A,direct XRL A,@Ri XRL A,# direct XRL direct,A XRL direct,# data 4. Alte operaii logice

(direct) (direct) # data

A A Rn A A (direct) A A (Ri) A A # direct (direct) (direct) A (direct) (direct) # data A A Rn A A (direct) A A (Ri) A A # direct (direct) (direct) A (direct) (direct) # data

CLR A A 00(H) CPL A AA RL A - rotaie a acumulatorului la stnga:

D7

D0

RLC A - rotaie a acumulatorului la stnga prin intermediul bitului carry:

Cy

D7

D0

RR A - rotaie a acumulatorului la dreapta:

D7

D0

RRC A - rotaie a acumulatorului la dreapta prin intermediul bitului carry:

D7

D0

Cy

SWAP A - opereaz asupra acumulatorului conform schemei:

D7

D4 D3

D012

LABORATOR SEP

Microcontrolerul 8051 ( I )

Operaii de transfer MOV A,Rn A Rn MOV A,direct A (direct) MOV A,@Ri A (Ri) MOV A,# dataA # data MOV Rn,A Rn A MOV Rn,direct Rn (direct) MOV Rn,# data Rn # data MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,@Ri MOV direct,# data MOV @Ri ,A MOV @Ri ,direct MOV @Ri ,# data (direct) A (direct) Rn (direct1) (direct2) (direct) (Ri) (direct) # data (Ri ) A (Ri ) (direct) (Ri ) # data (pe 16 bii)

MOV DPTR,# data16 DPTR # data16

Instruciuni pentru transfer din memoria de programe MOVC A,@A+DPTRA (A + DPTR) MOVC A,@A+PC A (A + PC) Instruciuni pentru adresarea memoriei de date MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A A (Ri) - aduce coninutul locaiei RAM externe adresat pe 8 bii A (DPTR) - aduce coninutul locaiei RAM externe adresat de DPTR (Ri ) A (DPTR) A

Instruciuni pentru lucrul cu stiva PUSH direct (SP + 1) (direct) ; SP SP + 1 ; POP direct (direct) (SP + 1) SP SP - 1

Instruciuni de schimb XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri A Rn A (direct) A (Ri) A30 (Ri) 30

Manipulri la nivel de bit CLR C Cy 0 bit reprezint un bit din zona de memorie RAM local adresabil la nivel de bit. Este vorba fie de zona de memorie 13 RAM cu adresa ntre 20h i 2Fh, fie un registru adresabil la nivel de bit din zona de memorie RAM corespunztoare regitrilor cu funciuni speciale

LABORATOR SEP

Microcontrolerul 8051 ( I )

CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/ bit ORL C,bit ORL C,/ bit MOV C,bit MOV C,/ bit JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel

bit 0 Cy 1 bit 1 Cy CY bit bit Cy Cy bit Cy Cy bit Cy Cy bit Cy Cy bit Cy bit Cy bit PC PC + rel - salt relativ dac bitul Cy este 1 PC PC + rel - salt relativ dac bitul Cy este 0 - salt relativ dac bitul testat este 1- logic - salt relativ dac bitul testat este 0- logic - salt relativ dac bitul testat este 1- logic, iar bitul Cy este resetat

Instruciuni pentru lucrul cu subrutinele ACALL n11 spaiu LCALL n16 RET RETI Instruciuni de salt AJMP n11 LJMP n16 SJMP rel JMP @A+DPTR JNZ rel JZ rel PC n11 - salt necondiionat ntr-un spaiu de memorie de sub 2 Ko PC n16 - salt necondiionat n toat memoria de 64 Ko PC PC + rel - salt relativ cu deplasament PC A + DPTR PC PC + rel - salt relativ dac A 00h PC PC + rel - salt relativ dac A = 00h - apelarea unei subrutine cu adresa precizat pe 11 bii (aflat ntr-un de memorie de sub 2 Ko) - apelarea unei subrutine (aflat oriunde ntr-un spaiu de mem. de 64 Ko) - revenire normal din subrutin - revenire dintr-o subrutin ce trateaz ntreruperi

Operaii de comparaie CJNE A,direct,rel

DA

A (direct)

NU

Se trece la instruciunea imediat urmtoare

PC PC + rel

14

LABORATOR SEP

Microcontrolerul 8051 ( I )

CJNE A,#data,rel

DA

A (#data)

NU

Se trece la instruciunea imediat urmtoare

PC PC + rel

CJNE Rn,#data,rel

DA

Rn (#data)

NU

Se trece la instruciunea imediat urmtoare

PC PC + rel

CJNE @Ri,#data,rel

DA

(Ri) (#data)

NU

Se trece la instruciunea imediat urmtoare

PC PC + rel

- decrementarea registru Rn i salt relativ dac rezultatul obinut este nenul, DJNZ Rn,rel altfel se continu cu instruciunea imediat urmtoare DJNZ direct,rel - decrememntarea coninutului locaiei de memorie RAM adresat direct i salt relativ dac rezultatul obinut este nenul, altfel se continu cu instruciunea imediat urmtoare NOP - (no operaion) - nici o operaie 3. PROBLEME REZOLVATE1. Un MCU 8051 prezint n spaiul memoriei de programe, la adresa 100h, un ir de 100 octei, ce trebuie translatat n spaiul memoriei de date (RAM ), de la adresa 2000h. Realizai un program ce permite transferul celor 100 de octei succesivi din memoria ROM n memoria RAM.15

LABORATOR SEP

Microcontrolerul 8051 ( I )

Soluie Pentru realizarea transferurilor cerute este necesar folosirea registrului DPTR, att la adresarea memoriei de programe, ct i la adresarea memoriei de date. Pentru ca acest lucru s fie posibil este nevoie de salvarea adreselor termenilor din cele dou iruri de date. Vom folosi n acest sens regitrii R6 i R7 pentru salvarea adresei sursei (a termenilor din memoria ROM), respectiv, regitrii R4 i R5 pentru salvarea adresei destinaie (a termenilor din memoria RAM). Registrul DPTR se salveaz prin cele 2 componente ale sale DPH i DPL. Registrul R0 va fi folosit pe post de contor al numrului de transferuri care se efectueaz. Organigrama i, respectiv, forma surs a programului n limbaj de asamblare sunt prezentate n continuare:

START

DPTR #ADRROM DPTR#ADRRAM R0 #NR_OCTETI R4, R5 DPTR R6, R7 DPTR

START:

ett1: ett2:

DA

R0=00h

NU

STOP

A @A + DPTR

DPTR R6, R7

DPTR DPTR + 1 R6, R7 DPTR DPTR R4,R5 @DPTR A DPTR DPTR +1 R4, R5 DPTR R0 R0 - 1 ett3:

ORG 0h ADRROM EQU 100h ADRRAM EQU 2000h NR_OCTETI EQU 100 MOV DPTR, #ADRROM MOV R6, DPH MOV R7, DPL MOV DPTR, #ADRRAM MOV R4, DPH MOV R5, DPL MOV R0, #NR_OCTETI CJNE R0, #00h, ett2 SJMP ett3 MOV DPH, R6 MOV DPL, R7 MOV A,#00h MOVC A, @A+DPTR INC DPTR MOV R6, DPH MOV R7, DPL MOV DPH, R4 MOV DPL, R5 MOVX @DPTR, A INC DPTR MOV R4, DPH MOV R5, DPL DEC R0 SJMP ett1 SJMP ett3 .END

2. Un MCU 8051 primete pe liniile P1.0 i P1.1 dou semnale digitale TTL, ce formeaz un numr binar pe 2 bii. Acelai 8051 primete pe liniile P1.2 i P1.3 alte dou semnale TTL ce formeaz un al doilea numr binar pe doi bii. Realizai programul ce ofer n mod permanent, pe liniile P1.4, P1.5, P1.6 i P1.7 semnalele TTL ce reprezint produsul aritmetic al primelor dou

16

LABORATOR SEP

Microcontrolerul 8051 ( I )

numere. Pentru cei doi operanzi, P1.0 i, respectiv, P1.2 reprezint biii cei mai puini semnificativi, iar pentru produs P1.4 este bitul cel mai puin semnificativ. Soluie Rezolvarea problemei presupune preluarea operanzilor i izolarea acestora. Astfel, primul operand, izolat dup o operaie de mascare, este transferat n registrul B. Cel de-al doilea operand este izolat n registrul A, dup ce a suferit o operaie de mascare logic i dou rotaii simple la dreapta. Rezultatul nmulirii se obine tot n acumulator. n vederea generrii pe liniile portului P1 se realizeaz o operaie de rotaie la nivel de nibble. n final, dup o operaie de mascare logic se obine octetul ce va fi tranmis portului P1. Ultima mascare este necesar pentru a nu afecta operanzii aplicai din exterior pe liniile P1.0 - P1.3. Mai jos sunt prezentate organigrama i, respectiv, programul surs. Ataat organigramei se prezint i evoluia operanzilor i a rezultatului n urma prelucrrilor efectuate. START AP1 A B X 0 X 0 X 0 X 0 Y2 0 Y1 0 X2 X2 X1 X1

AA00000011 AR0 BA

R0A

AA00001100 RR A RR A B,AA*B SWAP A A

A A A

0 0 0

0 0 0

0 0 0

0 0 0

Y2 0 Z4

Y1 0 Z3

0 Y2 Z2

0 Y1 Z1

P1 A

A # 0Fh P1 Z4 Z3 Z2 Z1 1 1 1 1

START:

ORG 0h MOV R0, A ANL A, #03h MOV B, A MOV A, R0 ANL A, #0Ch RR A

RR A MUL AB SWAP A ORL A,#0Fh MOV P1, A JMP START END

3. Un MCU 8051 primete din exterior pe liniile P1.0, P1.1 i P1.2, trei semnale digitale. Realizai un program prin intermediul cruia pe linia P1.7 se obine un semnal ce respect permanent urmtoarea ecuaie logic:

17

LABORATOR SEP

Microcontrolerul 8051 ( I )

P1.7 = P1.0 P1.1 P1.2 Soluie Propunem o soluie care utilizeaz instruciuni logice ce opereaz pe octet. Operanzii sunt preluati i sufer mascri logice. Prin operaii de rotaie dreapta, succesive, se obine forma final a acestora sub care va avea loc procesarea. Primii doi operanzi sunt salvai n regitrii R1 i R2, iar ultimul n acumulator. Rezultatul operaiei logice sufer o mascare logic, dup care este emis pe portul P1. Mascarea este necesar pentru a nu afecta operanzii aplicai la intrri. n continuare, se prezint organigrama i forma surs a programului n limbaj de asamblare:

START AP1 R0A AA00000001 ( 2 ) AR0 AA00000010 RR A R2A AA00000100 ( 2 ) RR A RR A AAR2 A A RR A AAR1 AR0 R1A

START:

ORG 0h MOV A,P1 MOV R0,AA ANL A,#01h MOV R1,A MOV A,R0 ANL A,#02h RR A MOV R2,A MOV A,R0 ANL A,#04h RR A RR A ANL A,R2 ANL A,R1 CPL A RR A ORL A,#7Fh MOV P1,A JMP START .END

AA # 7Fh P1A

4. DESFURAREA LUCRRII 1. Se va citi i conspecta breviarul teoretic. Se atrage atenia asupra faptului c noiunile cptate n lucrare vor fi folosite i la derularea lucrrilor urmtoare.18

LABORATOR SEP

Microcontrolerul 8051 ( I )

2. Se vor studia problemele rezolvate, urmrind i alte posibiliti de rezolvare. 3. Se vor rezolva urmtoarele probleme propuse: a). n memoria de programe a unui microcontroler 8051 se afl plasat un ir succesiv de date ce conine 50 de octei, ncepnd cu adresa 2000h. Se cere transferul acestor date n memoria RAM local a microcontrolerului, n locaii succesive ncepnd cu adresa 70h, n sens descresctor. b). n memoria de programe a unui microcontroler 8051 se afl plasat un ir de 80 date succesive, diferite, ncepnd cu adresa 3000h. Se cerea aflarea maximului acestora i plasarea lui la adresa de RAM intern 40h. c). Pe liniile P1.0, P1.1, P1.2 i P1.3 ale unui microcontroler 8051, se aplic semnale digitale TTL. Se cere realizarea unui program prin intermediul cruia pe linia P1.7 se obine n mod permanent un semnal ce reprezint funcia logic SAU-EXCLUSIV a celor 4 semnale de intrare. d). Dou numere reprezentate pe cte 2 octei fiecare sunt plasate n memoria RAM local a unui microcontroler 8051 la adresele 40h i 50h ncepnd cu o.c.m.p.s. Se cere obinerea produsului celor dou numere i plasarea rezultatului n memoria RAM local ncepnd cu adresa 60h i cu octetul cel mai pu.s. 4. Se va rspunde la urmtoarele ntrebri: a). Pentru situaia primei probleme, este posibil salvarea registrului DPTR n stiva, pentru cele dou situaii de adresare a memoriei (de date i de programe)? Justificai. b). Pentru situaia primei probleme rezolvate, indicai o alt posibilitate de salvare a coninutului regitrilor DPH i DPL, diferit de cea prezentat n rezolvare. c). n cazul celei de-a doua probleme rezolvate, pentru izolarea celui de-al doilea operand se putea folosi operaia RRC A, n locul operaiei RR A ? Justificai. d). Cum putea fi nlocuit operaia SWAP A n soluia prezentat la rezolvarea celei de-a doua probleme ? e). Instruciunea MUL AB afecteaz i registrul B al microcontrolerului 8051. De ce rezultatul obinut n acest registru nu este folosit n rezolvarea problemei a doua ? n urma operaiei de nmulire, care este rezultatul obinut n registrul B ? f). Pentru cazul celei de-a treia probleme rezolvate dai o explicaie legat de mascarea final (ce folosete instruciunea ORL). De ce credeti c este nevoie ca biii utilizai ca intrri s fie pozitionai la emisie de ctre microcontroler, n starea 1- logic ? g). Indicai metoda de rezolvare a celei de-a treia probleme care s utilizeze operaii logice pe bit n locul celor pe octet prezentate n rezolvare. h). Prezentai o metod prin care se poate realiza o temporizare software n limbajul de asamblare a controlerului 8051.

19