Documente Academic
Documente Profesional
Documente Cultură
=
=
=
c
c
f TH
f
Dac am dori:
cuartului schimbarea impune se
biti/sec. 10416 250 1
biti/sec. 8928 249 1
5 , 249 1
0 (SMOD)
MHz 12 f
biti/sec. 9600
1
1
0
= => =
= => =
=
=
=
=
TH
TH
c
f TH
f TH
TH
f
n modul 2 de lucru al portului serial valoarea frecvenei de comunicaie este:
= =
= =
=
= =
=
0 9 bitul dac 0 Ri
1 9 bitul dac 1 Ri
1 2 SM
cuvnt pt. 1 Ri 0 2 SM
f
64
2
f
0
) SMOD (
c
.
Comand 8 bii date +1+stop (SM2=1) rec.adr.
Date 8 bii date +0+stop (SM2=0) rec.date cel cu adr.01C
(SM2=1) pt. adr. BAD
Sistemul de ntreruperi al C8051
Sursele de cereri de ntreruperi pentru 8051 C sunt externe i interne. Sursele externe
transmit cererile de ntrerupere prin pinii ) 3 . 3 P ( INT1 i ) 2 . 3 P ( 0 INT ai microcontrolerului.
Sursele interne de ntrerupere sunt circuite de numrare/temporizare
1 0
/ , / T N T N i portul serial.
Cererile de ntrerupere generate de sursele de ntrerupere poziioneaz la nivel 1 biii
corespunztori din registrele interne TCON i SCON dup cum urmeaz:
- IE0 (TCON.1) si IE1 (TCON.3) pentru ntreruperi externe
- TF0 (TCON.5) i TF1 (TCON.7) pentru ntreruperi de la circuitele de
numrare/temporizare.
- Ri (SCON.0) i Ti (SCON.1) pentru ntreruperi de la portul serial.
Strile acestor bii indicatori de cereri de ntrerupere sunt testate de logica de control a
ntreruperilor microcontrolerului n faza S5P2 a fiecrui ciclu main. Astfel logica de control a
ntreruperilor identific sursele care solicit ntrerupere i asigur apelul subrutinei de ntrerupere
corespunztoare unei surse, n concordan cu condiiile de validare i prioritile stabilite pentru
surse prin programare. Strile biilor indicatori de cereri de ntrerupere pot fi stabilite prin
programare.
O surs extern poate solicita o cerere de ntrerupere prin comanda pinului
` 1 INT sau 0 INT cu nivel logic 0 sau cu un front de cdere, n funcie de nivelul logic
programat n bitul IT0 sau IT1. n cazul variantei de cerere de ntrerupere extern prin nivel,
bitul IEi urmrete n permanen nivelul logic de comand a intrrii i INT .
Astfel, o cerere de ntrerupere indicat prin nivel logic 1 al bitului IEi corespunde
nivelului logic 0 de comand a pinului i INT , avnd n vedere prezena circuitului inversor.
Nivelul logic 0 corespunztor unei cereri de ntrerupere extern prin nivel trebuie meninut
pn la apelul de ctre microcontroler a subrutinei de ntrerupere corespunztoare. Comanda
liniei i INT la nivel 1 trebuie s se efectueze nainte de sfritul execuiei subrutinei de
ntrerupere corespunztoare, pentru a se evita apelul repetat al acesteia. n cazul variantei de
cerere de ntrerupere prin front de cdere, bitul IEi este poziionat la nivel 1 de un front de
cdere prezent la intrarea i INT . Detecia fronturilor de cdere se realizeaz prin eantionarea
strii intrrii i INT cu frecvena ciclurilor main. Rezult c pentru detecia corect a unui front
de cdere este necesar comanda intrrii i INT cu nivel 1, apoi cu nivel 0, fiecare nivel logic
trebuind s fie meninut pe o durat cel putin egal cu durata unui ciclu main. Nivelul logic1
din bitul IEi, rezultat ca urmare a deteciei unui front de cdere, se menine pn la apelul de
ctre microcontroler a subrutinei de ntrerupere corespunzatoare, cnd bitul IEi este poziionat la
nivel 0 de ctre logica de control a microcontrolerului.
Cererile de ntrerupere de la un circuit de numrare/temporizare N/Ti0, i=0, 1, sunt
generate la depirea valorii maxime corespunztoare capacitii numrtorului, cnd bitul
indicator de depire TFi se poziioneaz la nivel logic 1. La apelul subrutinei de ntrerupere
corespunztoare, bitul TFi este poziionat la nivel logic 0 de ctre logica de control a
ntreruperilor microntrolerului.
Cererile de ntrerupere de la portul serial sunt generate de la sfritul transmisiei sau recepiei
unui cuvnt, cnd biii indicatori de cereri de ntrerupere Ti respectiv Ri se poziioneaz la
nivelul logic 1. La apelul subrutinei de ntrerupere corespunztoare, strile biilor Ti i Ri nu
sunt modificate de ctre logica de control a ntreruperilor microcontrolerului, astfel subrutina de
ntrerupere se testeaz biii Ri i Ti pentru determinarea tipului de ntrerupere (recepie respectiv
transmisie) i apoi se programeaz nivelul logic n biii Ri i Ti. Sursele de cereri de ntreruperi
pentru microcontrolerul 8051 sunt mascabile. Astfel validarea sau invalidarea acceptrii de ctre
microcontroler a cererilor de ntreruperi corespunztoare diferitelor surse se pot stabili prin
programarea registrului de validare ntrerupere IE. Invalidarea tuturor surselor de cereri de
ntrerupere se realizeaz prin programarea bitului EA (IE.7). La nivel logic 0. Dac bitul EA
este programat la nivel 1 validarea sau invalidarea surselor de cereri de ntrerupere se
DETECTOR DE FRONT
DE CDERE
IT0
TCON.0
IE0
TCON.1
K1
0
1
TF0
TCON.5
INT0
PIN P3.2
N/T0
PORT
SERIAL
Ti
SCON.1
Ri
SCON.0
DETECTOR DE FRONT
DE CDERE
IT1
TCON.2
IE1
TCON.3
K2
0
1
TF1
TCON.7
INT1
PIN P3.3
N/T0
programeaz independent pentru fiecare surs utiliznd biii de validare a ntreruperilor din
registrul IE, dup cum urmeaz:
- EX0 (IE.0) pentru INT0
- ET0 (IE.1) pentru N/T0
- EX1 (IE.2) pentru INT1
- ET1 (IE.3) pentru N/T1
- ES (IE.4) pentru portul serial
Programarea nivelului logic 1 n bitul IE.i conduce la validarea sursei de cereri de
ntrerupere corespunztoare.
Sistemul de prioriti al ntreruperilor
Sistemul de prioriti pentru deservirea cererilor de ntrerupere cuprinde dou nivele de
prioritate. Fiecare surs de cerere de ntrerupere poate fi plasat n unul din cele dou niveluri de
prioritate, prin programarea corespunztoare a biilor registrului de control a prioritii
ntreruperilor IP dup cum urmeaz:
- PX0 (IP.0) pentru INT0
- PT0 (IP.1) pentru N/T0
- PX1 (IP.2) pentru INT1
- PT1 (IP.3) pentru N/T1
- PS (IP.4) pentru portul serial.
Programarea nivelului 1 in bitul IPi conduce la starea sursei de cereri de ntreruperi
corespunztoare la nivelul de prioritate ridicat.
Execuia unei subrutine de ntrerupere corespunztoare unei surse de ntrerupere programat
la nivel ridicat de prioritate nu poate fi ntrerupt.
n cazul a dou cereri de ntrerupere de la dou surse din niveluri de prioritate diferite ce apar
simultan, microcontrolerul servete prima cerere de ntrerupere corespunztoare sursei de
ntrerupere cu un nivel de prioritate ridicat. n cazul cererilor de ntrerupere simultane de la surse
de acelai nivel de prioritate se utilizeaz un al doilea criteriu de prioritate stabilit prin structura
microcontrolerului . Acest al doilea criteriu este stabilit pentru ambele niveluri de prioritate i
plaseaz sursele de cereri de ntreruperi n ordinea scderii prioritii, dup cum urmeaz:
INT0, NIT0, INT1, NIT1, i portul serial. Logica de control a ntreruperilor
microcontrolerului 8051 eantioneaz starea biilor indicatori de cereri de ntrerupere n faza
S5P2 a fiecrui ciclu main i analizeaz rezultatele fiecrei eantionri n ciclul main
urmtor. Aceast analiz const n identificarea sursei de prioritate maxim care solicit
ntrerupere. Dup ciclul de analiz, microcontrolerul execut intern ciclurile corespunztoare
unei instruciuni:
LCALL addr., unde addr este funcie de surs de cerere de ntrerupere servit dac sunt
ndeplinite condiiile urmtoare:
- Ciclul de analiz este ultimul din execuia unei instruciuni.
- Ciclul de analiz nu corespunde execuiei unei instruciuni din subrutina de ntrerupere
corespunztoare unei surse de acelai nivel de prioritate sau de nivel de prioritate mai
ridicat
- Ciclul de analiz nu corespunde execuiei unei instruciuni RETI sau a unei instruciuni
de acces la registrele IE i IP.
La execuia unei instruciuni LCALL addr., pentru apelul unei subrutine de ntrerupere se
salveaz n memoria stiv coninutul numrtorului de adrese PC i se ncarc n aceasta adresa
de nceput a subrutinei de ntrerupere. Aceast adres este funcie de sursa de cerere de
ntrerupere servit i este stabilit prin structura microcontrolerului dup cum urmeaz:
- INT0 03h
- NIT0 0Bh
- INT1 13h
- N/T1 1Bh
- Port serial 23h
Subrutina de ntrerupere se termin cu o instruciune RETI prin care se realizeaz ncrcarea
PC din memoria stiva cu adresa de revenire n programul ntrerupt. Deasemenea, prin execuia
instruciunii RETI se informeaz logica de control a ntreruperilor cu privire la terminarea
subrutinei de ntrerupere.