Sunteți pe pagina 1din 15

MINISTERUL EDUCATIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICA A MOLDOVEI

CATEDRA DE MICROELECTRONICĂ Ș I INGINERIE BIOMEDICALĂ

Raport
Lucrare de laborator Nr.4
La disciplina Microprocesoare
Tema :„Intreruperea externă . Prelucrarea tablourilor.”

A efectuat : st. gr. ISBM – 131 Iurevici Climentie

A verificat: lector asistent Lazari Eugeniu

Chișinău – 2016
Expunerea problemei: Să se realizeze o aplicație pe MCU care va calcula și va afișa suma
elementelor unui tablou de 10 elemente a câte 8biți. Calculul sumei și afișarea rezultatului se va
realiza la fiecare a 11-a apăsare a butonului, iar primele zece apăsări vor introduce pe rând în tablou
numărul citit de pe un PORTx al microcontroller-ului completând astfel tot tabloul cu elemente noi
de fiecare dată.

În acest scop se va realiza o subrutină care va realiza doar suma elementelor tabloului și va fi apelată
din cadrul subrutinei de prelucrare a întreruperii externe care, la rândul său, va realiza completarea
tabloului cu un element nou la fiecare apăsare nouă a butonului, dar și apelul subrutinei de sumare
atunci când tabloul este completat.

Intreruperi.

Întreruperea reprezintă suspendarea procesului normal de execuţie a programului pentru rezolvarea unei
probleme prioritare.
Întreruperea de regulă este generată ca răspuns la un efect fizic intern sau extern al unui modul
periferic. Efectul fizic în sine va reprezenta situaţia de întrerupere sau excepţie care necesită o
tratare neintârziată. Asemenea situaţii de întreruperi pot fi ca de exemplu: schimbarea nivelului
logic la un pin, sfârşitul unei perioade de timp sfârşitul unei operaţii de transmisie sau recepţie,
sfârşitul unei conversii etc.
Majoritatea modulelor periferice pot genera una sau mai multe întreruperi.
Tratarea situaţiei de întrerupere presupune existenţa unei subrutine definite în acest scop. Odată
cu apariţia situaţiei de întrerupere, microcontrollerul va seta într-un registru de stare a perifericului
un flag de întrerupere IF, care va fi pastrat pâna la prelucrarea intreruperii date. Pentru ca
întreruperea de la situaţia de întrerupere să fie generată va fi nevoie ca în registrul de control al
perifericului întreruperea în cauză să fie activată prin setarea unui bit de activare IE. Mecanismul de
chemare a subrutinei de prelucrare a întreruperii va fi iniţiat doar în cazul în care:

1. S-a detectat situaţia de întrerupere reprezentată de flagul acesteia IF==1


2. Întreruperea de la sursa dată este permisa IE ==1
3. Bitul de permisiune globală a întreruperilor este setat I==1 (in SREG)
mai simplu, subrutina va fi chemată când relaţia IF & IE & I va fi adevărată.
Sistemul de întreruperi, de exemplu, va permite un apel de subrutină automat la apăsarea unui
buton, luat ca sursă de întrerupere externă EXT_INT.

Vector de întreruperi

Odată ce o întrerupere a fost generată sistemul va executa un apel hardware a subrutinei de prelucrare a
întreruperii (ISR), care presupune un salt la o adresă unde este realizată această subrutină. Deoarece o
asemenea chemare nu este una explicită, ca şi în cazul unui apel clasic cu o instrucţiune de tip CALL unde
adresa de salt este parametru al comenzii, apelul hardware presupune existenţa în memoria de programe a
unei zone de memorie alocate pentru subrutinele de prelucrare a întreruperilor. Această zonă de memorie de
program este numită vector de întreruperi.
Deci vom spune că vectorul de întreruperi reprezintă o zonă de memorie de program rezervată adreselor
de referinţă a subrutinelor de prelucrare a întreruperilor.
Vectorul de întreruperi, pentru arhitectura AVR, este localizat la începutul memoriei de program, începând
cu adresa $0000. Pentru fiecare subrutină de prelucrare a întreruperilor de la o anumită sursă de întrerupere îi
este rezervat un spaţiu de 2 comenzi (pentru versiunile mai vechi a nucleului AVR o comanda).
În mod evident că acest spaţiu de cele mai deseori nu este destul pentru a implementa o subrutină de
prelucrare a întreruperii însă suficient pentru a executa o redirecţionare către implementarea subrutinei cu o
instrucţiune de salt necondiţionat de tip JUMP. În cazul în care am dori să protejăm programul de la apeluri
accidentale a unei ISR la locaţia respectivă se va înregistra o comandă de returnare din subrutină. Deoarece
avem la dispoziţie tocmai două locaţii de program am putea utiliza una din ele pentru tratarea apelurilor
nedorite a ISR prin setarea unui indicator, aprinderea unui beculeţ, sau chiar un apel de subrutină special
definită în acest scop.

Moduul periferic Intrerupere externa. EXT INT


Modulul periferic Intrerupere Externa - EXT INT permite detectarea schimbarilor de la unul din pinii
externi al microcontrollerului cu o eventuala generare a unei situatii de intrerupere, care ar putea fi
tratata de catre o subrutina de prelucrare a intreruperii EXT_INT_ISR. Totodata este unul din cele
mai simple si esentiale module periferic care pot genera intreruperi.
Întreruperile externe sunt atasate de pinii INT0, INT1, si INT2 ale microconrollerului. Pinii
destinati intreruperilor pot fi configuraţi si ca ca ieşiri. Această caracteristică oferă posibilitatea
crearii situatiilor de intreruperi chiar din cadrul programului prin modificarea valorilor pinilor
respectivi din programul din MCU.
In figura de mai jos se da un exemplu ce demonstreaza cum ar putea fi interpretata detectarea
unei intreruperi externe generate de apasarea unui buton atasat la pinul de intrerupere si prelucrat
de subrutina de prelucrare a situatiei de intreruperi:

Putem vedea ca pentru ca sa fie apelata subrutina de prelucrare a intreruperii este necesara
satisfactia urmatoarelor conditii:

 Bitul de permisiune globala a intreruperiolor este setat - I=1


 intreruperea de la pinul EXT INT0 este activata - INT0 = 1
 a fost detectata situatia de intrerupere si reprezentata de un flag indicator al acesteia - INTF0 =
1
Modulul periferic ar putea fi comparat cu un GPIO avansat, care reactioneaza in timp real la
oricare schimbare pe pinul fizic, si de fapt asta si este.
Aceasta proprietate a pinului inteligent reprezentata prin modulul periferic EXT INT poate fi
utilizata pentru detectarea schimbarilor asemeni unui sensor binar, adica aparitia unui efect fizic
extern. De exemplu :nivelul de tensiune, temperatura, luminozitate etc. a crescut/cazut peste
nivelul dorit.
Ca si orisicare modul periferic, modulului periferic EXT INT ii sunt rezevati un set de registri
periferici de stare si/sau control pentru configurare si lucru cu acest modul.
Registri periferici, din cei 64 pentru microcontrillerul din seria AVR, rezervati pentru modulul
periferic EXT INT, sunt: .

- GICR (GIMSK) - General Interrupt Control service pentru activarea unui modul de intrerupere
exetrna prin inscrierea valorii "1" logic in locatia specifca din acest registru. respectiv pentru
dezactivare se inregistreaza "0" logic

bit7 - INT1 - Activarea intreruperii INT1


bit6 - INT0 - Activarea intreruperii INT0
bit5 - INT2 - Activarea intreruperii INT2
Biti 4..0 - rezervati

de notat ca pentru ca ca intreruperea sa aiba loc este necesar ca bitul global de activare a
intreruperii sa fie activ.
de exemplu, pentru activarea intreruperii de la sursa INT0 se va executa urmatoarea secventa
de cod, de obicei plasata in secveta de inializare a progamului principal:
ldi R16, 1<<INT0 // incarcarea valorii 0b10000000 in R16
out GICR, R16 // Activarea intreruperii Int0

sei // Activarea globala a intreruperilor


pentru activarea intreruperii in timpul executiei programului se recomanda utilizarea comenzii de setare a bitului in
registrul periferic:

sbi GICR, INT0 // Activarea intreruperii Int0

- GIFR - reprezina colectia de flaguri indicatori de detectie a situatiilor de intreruperi de la diferite


surse externe. acet registru nu este diponibil pentru modificare. flagurile s e seteaza automat la
detectia intreruperii la pinul respectiv, si se reseteaza la deservirea acestei ntreruperi.

Bit 7 - INTF1 Flag de detectie a intreruperii de la sursa EXT INT1


Bit 6 - INTF0 Flag de detectie a intreruperii de la sursa EXT INT0
Bit 5 - INTF2 Flag de detectie a intreruperii de la sursa EXT INT2
Biti 4..0 - rezervati

- MCUCR - reprezinta registrul de configurare a modului de detectare a situatii de intrrupere.


situatia de intrrupere poate fi detectata pe nivel logic cat si pe schimbare a nivelului logic.

pentru intreruperea INT0 vom avea:

| ISC01 | ISC00 | mod de generare a intreruperii


-------------------------------------------------
| 0 | 0 | pe nivel jos la pinul INT0 0-logic
| 0 | 1 | orice schimbare la pinul INT0
| 1 | 0 | caderea nivelului de la 0 la 1 la pinul INT0
| 1 | 1 | ridicarea nivelului de la 1 la 0 la pinul INT0
similar pentru intreruperea INT1 vom avea:

| ISC11 | ISC10 | mod de generare a intreruperii


-------------------------------------------------
| 0 | 0 | pe nivel jos la pinul INT1 0-logic
| 0 | 1 | orice schimbare la pinul INT1
| 1 | 0 | caderea nivelului de la 0 la 1 la pinul INT1
| 1 | 1 | ridicarea nivelului de la 1 la 0 la pinul INT01

pentru configurarea modului de detectie a intreruperii INT2 se va utiliza registrul EMCUCR(extensia


registrului MCUCR). in acest scop este rezervat doar un bit situat pe pozitia bit0..

| ISC2 | mod de generare a intreruperii


-------------------------------------------------
| 0 | caderea nivelului de la 0 la 1 la pinul INT2
| 1 | ridicarea nivelului de la 1 la 0 la pinul INT2

Mecanismul de apel a subrutinei de prelucrare a întreruperii (ISR)

După cum am spus mai sus, generarea unei întreruperi va implica un apel hardware a unei ISR.
Mecanismul de chemare a unei ISR este identic cu cel de chemare a unei subrutine obişnuite cu
excepţia ca pe durata executării ISR bitul global de permisiune a întreruperilor va fi resetat, I=0,
fapt care va interzice chemarea unei alte ISR pe durata executării ISR. Deci mecanismul de
chemare a unei ISR va fi realizat în mai multe etape.
 La detectarea situaţiei de întrerupere se va evalua o relaţie de tip IF & IE & I (vezi mai sus).
Dacă această relaţie va fi adevărată se va declanşa mecanismul de apel hardware al ISR. În
cazul în care Întreruperea a fost detectată în timpul execuţiei unei comenzi, se va aştepta pînă
la terminarea execuţiei comenzii curente, după care se va declanşa mecanismul de chemare a
ISR.
 Se va executa apelul hardware al ISR echivalent cu o comandă de forma CALL ISR_Addr
unde ISR_Addr va fi adresa de referinţă din Vectorul de întreruperi pentru Întreruperea dată. În aşa
mod se va realiza un salt necondiţionat la adresa ISR_Addr, localizată în vectorul de întreruperi,
însoţit de o salvare a Contorului de Program (PC) în stiva (Stack), PC+1->Stack.
 Concomitent cu saltul la vectorul de întreruperi se va reseta bitul global de permisiune a
întrerulerilor, I = 0, un echivalent a comenzii CLI, fapt ce va interzice întreruperea execuţiei ISR de o
altă ISR detectate în acest timp.
 Execuţia secvenţei de instrucţiuni din cadrul ISR. Pentru ISR sunt valide recomandările pentru
subrutinele obişnuite referitor la păstrarea stării globale a regiştrilor de uz general utilizaţi în cadrul ISR,
ce se realizează prin salvarea lor în stivă la începutul subrutinei şi restabilirea acestora înainte de
returnarea din subrutină.
 Returnarea din ISR realizată cu comanda RETI. Această comandă este echivalentă cu comanda de
returnare din subrutina obişnuită RET, cu excepţia ca concomitent se va seta bitul de permisiune globală
a întreruperilor, I = 1. Putem spune ca RETI este echivalent cu RET+SEI. Deci, returnarea din ISR va
implica restabilirea adresei Contorului de Program din stivă, care fusese salvat în procesul de chemare a
ISR, PC->Stack şi execuţia programului va continua exact din locul unde a fost suspendat de către
întrerupere.

Principiul ca o ISR nu poate fi întreruptă de o altă Întrerupere se datorează faptului că pe durata execuţiei
acesteia bitul global de permisiune al întreruperilor I este resetat (I=0). Însă această regulă poate fi anulată
odată cu setarea în cadrul ISR a bitului de permisiune a Întreruperilor cu comanda SEI (I=1). Această acţiune
va permite ca o ISR sa fie întreruptă de o altă întrerupere.

Intreruperea Reset

Majoritatea sistemelor digitale, printre care se enumeră şi Microcontrollerul, presupun existenţa unui
semnal RESET prin intermediul căruia sistemul se readuce o stare iniţială. Semnalul de RESET ca regulă este
aplicat la regiştrii interni, readucînd sistemul la o stare predefinită. În modul normal de funcţionare a
dispozitivului semnalul se menţine într-o stare predefinită fie 0 sau 1 menţinută din interiorul sistemului sau
din exterior. Îniţierea unui RESET presupune generarea unui puls de o durată anumită de valoare inversă
celei din starea normală de funcţionare pe semnalul de Reset.
Microcontrollerul din seria AVR are în interior un modul specializat pentru generarea semnalului intern de
RESET. Acest modul permite generarea pulsului intern de reset în mai multe situaţii cum ar fi aplicarea
alimentării circuitului POWERON RESET, căderea nivelului sursei de alimentare a circuitului, expirarea
timpului de time-out de la modulul WATCHDOG (Timer de veghe), sau aplicarea unui puls negativ la pinul
extern RESET al microcontrollerului.
Pe lîngă faptul ca semnalul de RESET intern iniţializează toţi regiştrii interni al microcontrollerului, se
generează o situaţie de întrerupere RESET, care va implica prelucrarea acestei întreruperi.
Întreruperea RESET are cea mai mare prioritate şi deci adresa de referintă a ISR se va plasa în capul
Vectorului de Întreruperi, adică la adresa $0000.
Mai mult decât atât Intreruperea RESET este o întrerupere nemascată, fapt ce îi dă posibilitatea să fie
prelucrată chiar dacă întreruperile sunt interzise prin bitul de permisune a întreruperilor (I=0). Deci această
întrerupere va putea suspenda o alta întrerupere.
Mersul lucrării :
1. Realizez schema bloc a programului :

INT0_ISR SumTab
Start

NU DA PUSH R22
R21!
reset =TAB__SI
ZE
INT0_ISR YL=LOW(TabA) YL=LOW(TabA)
YH=HIGH(TabA) YH=HIGH(TabA)

PortInit
NU DA CLR R22
StackInit R22=0
INT0_Init
TabInit
IN R18, PINA R21<-TAB_SIZE
R21<-TAB_SIZE ST Y+, R18
Counter->R21
Activarea PUSH R18<-Y+
Intreruperii Call SumTab Dec R21 ADD R19,R18
Externe POP ADC R20,R22
R19<-result
R20<-result+1
OUT PORTB POP R21 R22--
OUT PORTC POP R20
SBI PORTD,0 POP R19 NU DA
Delay1 POP R18
CBI PORTD,0 R21==0
Delay2

reti R19<-result
R20<-result+1

reti
2. Pentru a scrie programul, folosesc programa Atmel Studio 6,
-creez noul proiect folosind shablonul pentru limbajul de programare assembler,
-selectez microcontrolerul în memoria căruia va fi înregistrat programul, în acest caz noi folosim
microcontroller ATMEGA 32.

După îndeplinirea acestor cerințe încerc să scriu programul necesar.


După realizarea programului îl compilez și văd dacă el nu conține erori.

#include "m32def.inc" ; includem fisierul de adrese periferice pentru ATmega32

.EQU TAB_SIZE=10 ;definim numarul de elemente in tablou

.dseg ;liniile care urmeaza vor fi scrise in segment de date

TabA:.byte TAB_SIZE ;declar tabloul:


counter:.byte 1 ;declararea variabilei pentru numararea apasarilor de buton
result:.byte 2 ;spatiu de memorie de 2 bytes

.cseg ;urmatoarele rinduri de cod se inscriu in segmentul de date

.org 0 ;programul va fi inregistrat la adresa 0x00

rjmp reset ;sare la subrutina reset

.org INT0addr ;programul se va incepe de la adresa intreruperii INT0addr

rjmp INT0_ISR ;sare la subrutina de intrerupere INT0

.org 100 ;urmatoarele rinduri de cod vor fi scrise incepind cu adresa 0x100
;in afara vectorului de intreruperi

reset: ;eticehta de initializare a intreruperiii reset

init: ;eticheta de initializarea a porturilor

LDI R21,TAB_SIZE;incarcam constanta TAB_SIZE in registrul R21

STS Counter,R21;Stocheaza in RAM constanta Counter in registrul R21

PortInit: ;eticehta de initializare a porturilor

LDI R16,0b00000000 ;Setam portul A ca port de intrare


OUT DDRA,R16 ;atribuirea la regisrtul de stare pt setarea

LDI R16,0b11111111 ;Setam portul B ca port de iesire


OUT DDRB,R16 ;prin atribuirea constantei 0b11111111

LDI R16,0b11111111;Setam portul C ca port de iesire


OUT DDRC,R16 ;prin atribuirea constantei 0b11111111

LDI R16,0b00000001 ;Setam portul D ca port de intrare


OUT DDRD,R16
LDI R16,0b11111111 ;Se activeaza resistenta de pull-up pentru evitarea
; scurtcircuitelor și zgomotelor nedorite
OUT PORTA,R16 ;este necesar de conectat porturile de intrare la R-pull-up

LDI R16,0b00000000 ;portul B,C nu se conecteaza la R-pull-up de aceea ii putem


OUT PORTB,R16

LDI R16,0b00000000
OUT PORTC,R16 ; de aceea ii putem ;atribui orice valoare in cazul dat 0x00

LDI R16,0b11111110
OUT PORTD,R16 ; setam spre intrare pull-up si spre iesire 0 logic

end_PortInit: ;sfirsitul initializarii porturilor

StackInit: ; Se initializeaza stiva

ldi R25, low(ramend) ;initializam la ultima adresa din RAM

out spl,R25 ; initializare byte inferior SP

ldi R25, high(ramend) ;initializam la ultima adresa din RAM

out sph,R25 ; initializare byte inferior SP

end_StackInit: ;sfirsitul initializarii stivei

INT0_Init: ;Se initializeaza configuratia pentru MCUCR , GICR si GIFR


LDI R16, (1<<INTF0)
OUT GIFR, R16
LDI R16,(1<<ISC01) | (0<<ISC00) ;detectarea intreruperii
;la trecerea de la 1 la 0 logic

OUT MCUCR,R16
LDI R16,(1<<INT0) ;activarea modulului de intrerupere externa
OUT GICR,R16
end_INT0_Init: ;sfirsitul intreruperii externe

SEI ;Setarea bitului de intrerupere, toate intreruperile sunt permise

main_loop: ;inceputul buclei infinite


;la inceput aprindem ledul setind portul D la 1

SBI PORTD,0 ;are loc stingerea si aprinderea concomitenta


;a leedului,pt aceasta avem nevoie de incarcat

LDI R16,0b11111111 ;In registrul R16 se inscrie constanta 0b11111111

Delay1:
Dec R16 ;Se decrementeaza registrul R16 pina cind nu devine 0*
BRNE Delay1 ;Daca nu este egalitate la eticheta Delay1

CBI PORTD,0 ;Se reseteaza pinul 0 din portul D


LDI R16,0b11111111 ;In registrul R16 se inscrie constanta 0b11111111
Delay2:
Dec R16
BRNE Delay2

rjmp main_loop ;Sare la eticheta main_loop


reti ;Returnare din subrutina reset

INT0_ISR: ;Se securizeaza parametrii subrutinei de prelucrare a intreruperii INT0


;si salvarea in stiva a registrilor utilizati ca parametri

PUSH R18
PUSH R19
PUSH R20
PUSH R21

LDS R21,Counter ;*Lui R21 se da valoarea numarului de elemente in tablou


CPI R21,TAB_SIZE ;Se compara R21 cu TAB_SIZE
BRNE L1 ;Daca nu sint egale sare la eticheta L1

LDI YL,LOW(TabA) ;Se indica inceputul tabloului


LDI YH,HIGH(TabA) ;Se indica sfirsitul tabloului tabA
L1:
CPI R21,0 ;se compara counter cu 0
BRNE L2 ;are loc salt la L2
LDI R21,TAB_SIZE ;incarcam constanta TAB_SIZE in registru R21
STS Counter,R21 ;Stocheaza in RAM constanta Counter din R21

PUSH R23 ;Se securizeaza parametrii subrutinei SumTab


PUSH R24 ; saltavrea in stiva a registrilor R22,R23,R24,YL,YH
PUSH YL ;utilizati ca parametrii
PUSH YH

call SumTab ;Chemarea subrutinei de sumare

POP YH ;Se restabilesc registrii utilizati ca parametri in subrutina de sumare


POP YL
POP R24 ;restabilirea are loc dupa principiul LIFO(LAST IN FIRT OUT)
POP R23

LDS R19,result ;Se scoate valoare Low din R19 a rezultatului


OUT PORTB,R19 ;Se scoate prin portul B valoarea Low a rezultatului
LDS R20,result+1 ;Se scoate din R20 valoarea high a rezultatului
out PORTC,R20 ;Se scoate prin portul C valoarea high a rezultatului
L2:
IN R18,PINA ;Se copie datele din PINA in registrul R18
ST Y+,R18 ;Se copie valoare din registrul R18 in tablou
Dec R21 ;Se decrementeaza R21
STS Counter,R21 ;Se stocheaza valoarea counterului din R21 in RAM

endINT0_ISR: ;Se restabilesc registrii utilizati ca parametri in subrutina de

POP R21
POP R20 ;prelucrare a intreruperii INT0
POP R19
POP R18 ;restabilirea are loc dupa principiul LIFO(LAST IN FIRT OUT)

reti ;Returnare din subrutina pentru prelucrarea intreruperii


SumTab: ;subrutina de sumare a elementelor tabloului

PUSH R22 ;saltavrea in stiva a registrului utilizat ca parametru

LDI YL, LOW(TabA) ;indicarea inceputului tabloului


LDI YH, HIGH(TabA) ;indicarea sfirsitului de tablou
CLR R22 ;Curatare R22
CLR R23 ;Curatare R23
CLR R24 ;Curatare R24
LDI R21,TAB_SIZE ;incarcarea in R21 a numarului de elemente in tablou

VerCounter:
LD R18,Y+ ;Se selecteaza datele din tablou
ADD R19,R18 ;Se aduna elementul la suma totala(baitul Low)
ADC R20,R22 ;Se aduna elementul la suma totala(baitul high)
Dec R21 ;Se decrementeaza counterul
BRNE VerCounter ;Daca counterul este 0 atunci sare la VerCounter
STS result,R19 ;Incarca in R19 valoarea Low a rezultatului
STS result+1,R20 ;Incarca in R20 valoarea High a rezultatului

end_Sum_Tab:

POP R22 ;are loc restabilirea parametrului/registurlui

ret ;Returnare din subrutina de sumare a elementelor tabloului

3.Dupa realizarea părții de programare, realizez partea elecronică și anume schema circuitului.
Schema o realizam in Proteus,penru aceasta creem noul proiect in ISIS Sample desigh template.

Butoanele din schemă le unesc la portul de intrare A


Indicatoarele cu 7 segmente le unesc la portul de intrare A si la port de ieșire B,C
Ledul și Butonul îl unesc la portul D.
Dupa realizarea schemei înscriu în memoria microcontrolerului programul necesar și pornesc
aplicația. Introduc concomitent cîte un număr la portul A și apăs butonul de activare a întreruperii.
Rezultatele obținute :

Fig.1 Schema electrică a circuitului


Fig.2a Introducerea elementului îm tablou și apăsarea butonului de x5 ori

Fig.2b Introducerea elementului îm tablou și apăsarea butonului de x9 ori


Fig.3.a Aparitia întruperii 11 și calculul sumei elementelor tabloului

Fig.3.b Aparitia întruperii 11 și calculul sumei elementelor tabloului

Concluzie :
Realizînd schemei bloc, programul,circuitul electronic și verificarea rezultatelor, am constatat ca la
aparitia intreruperii are loc stoparea executiei normale a programului pentru executarea unei
probleme prioritare(inscrierea elementelor in tablou,si suma lor).In cazul cind avem o intrerupere
experna alte intreruperi sunt interzise deoareace are loc resetarea bitului global de permesiune a
inreruperilor I=0.

Realizînd schemei bloc, programul,circuitul electronic și verificarea rezultatelor, am făcut cunosută


cu principiul de funcționare și aplicare a a întreruperii Reset precum și cu modul de definire a unui
tablou la fel și cu instrucțiunile MCUCR,GICR, GIFR. Am constatat că la apariția întreruperii are
loc stoparea execuției normale a programului pentru executarea unei probleme prioritare
(înscrierea elementelor in tablou,si suma lor).

S-ar putea să vă placă și