0% au considerat acest document util (0 voturi)
16 vizualizări8 pagini

MCU Lab2

Documentul prezintă rezultatele unei lucrări de laborator în care s-a implementat un algoritm cu ramificații și expresii aritmetico-logice pe un microcontroller. S-a elaborat codul ASM pentru a calcula o expresie matematică în funcție de valorile de la 3 porturi, iar rezultatul a fost afișat pe display-uri. S-a realizat și schema electrică în Proteus pentru testarea implementării.

Încărcat de

Petru G.
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
16 vizualizări8 pagini

MCU Lab2

Documentul prezintă rezultatele unei lucrări de laborator în care s-a implementat un algoritm cu ramificații și expresii aritmetico-logice pe un microcontroller. S-a elaborat codul ASM pentru a calcula o expresie matematică în funcție de valorile de la 3 porturi, iar rezultatul a fost afișat pe display-uri. S-a realizat și schema electrică în Proteus pentru testarea implementării.

Încărcat de

Petru G.
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Universitatea Tehnic a Moldovei

Facultatea Calculatoare, Informatic i Microelectronica


Catedra Microlectronica i Ingineria Biomedicala

Raport

Lucrarea de laborator 2
Microprocesoare
Disciplina:
Tema: Algoritmi cu ramificri n Assembler.
Expresii aritmetico-logice

A efectuat:
studentul grupei MN-141
Gurduza Petru

A verificat:
lector asistent
Lazari Eugeniu

Chiinu 2016
Obiectivul lucrarii:
De realizat un sistem, care colecteaz valori de pe 3 porturi i realizeaz calculul unei expresii
matematice n funcie de rezultatul analizeicondiiilor
Problema:

Notiuni teoretice:
Microcontrollerul AVR posed un set de 90-120 comenzi, care pot fi grupate n urmtoarele
categorii:
Comenzi pentru operaii logice;
Comenzi pentru operaii aritmetice si de deplasare;
Comenzi pentru operaii cu biii;
Comenzi pentru operaii de transfer de date;
Comenzi pentru operaii de transfer de control; (salt)
Comenzi pentru operaii de control al sistemului;

Operaiile aritmetice permit evaluarea operaiilor aritmetice de baz cum ar fi adunarea, scderea,
deplasare stnga i dreapta, ncementare i decrementare. Toate operaiile aritmetice se aplic doar
la regitrii de uz general. Evaluarea operaiilor aritmetice este posibil pentru operaii cu valori cu
semn i fr. Toate comenzile din aces set se execut intr-un singur tact cu excepia celor care
opereaz cu date pe 16 bii ( 2 baiti), care se vor executa n 2 tacturi main. Operatii logice permit
evaluarea operaiilor logice de tip AND, OR XOR, etc. tot n acest grup intr i comenzile de calcul
a valorilor inverse cum ar fi NEG i COM. Tot aici va intra comenzile de curare i setare a
regitrilor i de schimb a adoua tetrade intr-un registru de uz general. toate comenzile din acest set
se vor executa intr-un sigur tact de execuie.
Adunarea, scderea, deplasare stnga i dreapta, ncementare i decrementare. Toate operaiile
aritmetice se aplic doar la regitrii de uz general. Evaluarea operaiilor aritmetice este posibil
pentru operaii cu valori cu semn i fr. Toate comenzile din aces set se execut intr-un singur tact
cu excepia celor care opereaz cu date pe 16 bii ( 2 baiti), care se vor executa n 2 tacturi main.
Operaiile de transfer permit transferul valorii de la operandul drept ctre operandul stng.
Operanzii vor conine adrese ce se refer la memoria de Date. Aici vor intra Registrii de uz general,
Regitri Periferici i memoria RAM. Operaiile de transfer sunt posibile doar n anumite moduri,
dup cum urmeaz:
Registru Uz General <=> Registru Uz General
Registru Uz General <=> Registru Periferic
Registru Uz General <=> Memoria RAM
Tot n acest set de comenzi intr i comenzile de lucru cu stiva PUSH i POP. Pentru execuia
acestor comenzi vor fi necesare de la 1 pana 3 tacturi de execuie, n dependen de
[Link] de transfer de control permit realizarea salturilor conditionate i necondiionate.
Tot n acest set intr i comenzile pentru lucrul cu subrutinele de chemare a subrutinelor i returnare
din ele. Comenzile de salt conditionat vor fi de dou tipuri salt la o adresa dac se satisface condiia
i salt condiionat peste o comand numit i comand de ignorare a urmtoarei comenzi. tot n acest
set vor intra i comenzile de comparaie a operanzilor ce va permite setarea biilor din registrul de
stare SREG, i este utilizat ca o pre-comand pentru salturile condiionate.

Mersul lucrarii:
[Link] un proiect nou n AtmelStudio (fig. 1 i alegem modelul Atmega32 din bibliotec (fig. 2).

fig. 1

fig. 2
[Link] solutia problemei formind shema-bloc (fig. 3)

fig. 3
3. Conform algoritmului obtinut scriem codul in ASM.

.include "[Link]";includem fisierul de descriere a MCU-lui


.cseg ;alegem segmentul codului de program
.org 0 ;stabilim adresa curent la pozitia 0
.def APORT=R16
.def BPORT=R17
.def CPORT=R18
.def DPORT=R19

Init: ;Initializarea portului


LDI R16,0x00 ;ncrcm n 2 regi?tri val. ox00 ?i 0xFF
LDI R17, 0xFF ;pentru a micsora volumul textului
OUT DDRA,R16 ;Ini?im PORTA, PORTB, PORTC de intrare
OUT PORTA,R17 ;(activnd rezisten?a de pull-up)
OUT DDRB,R16
OUT PORTB,R17
OUT DDRC,R16
OUT PORTC,R17
OUT DDRD,R17 ;PORTD setat ca port de iesire
OUT PORTD,R16
Main_Loop:

IN APORT,PINA ;ncrcm valoare din porturi n registri


IN BPORT,PINB ;pentru a putea lucra n continuare cu valorile
IN CPORT,PINC ;introduse
Expr1: ;Expresia 0xEF-A|B
LDI R20,0xEF ;Incarcam in registrul R20 constanta 0xEF pentru a
SUB R20,APORT ;putea scdea valoarea introdusa la portul A.
OR R20,BPORT ;Operatia logica "sau" intre rezultatul scad. si val. port B
Expr2: ;Expresia C+12
MOV R21,CPORT ;Copiem valoarea portului C in registrul R21 pentru a nu afecta
LDI R19,12 ;valoarea registrului in calculele urmatoare
ADD R21,R19 ;

SUB R20,R21 ;Efectuam scaderea valorilor R20 si R21


BRPL Cond1 ;Salt la Cond1 daca rezultatul e pozitiv
SUB R21,R20 ;Efectuam scaderea valorilor R20 si R21
BRPL Cond2 ;Salt la Cond 2 daca rezultatul e negativ
CP R20,R21 ;Efectuam compararea valorilor R20 si R21
BREQ Cond3 ;Dac e egalitate, salt la Cond3
Cond1: ;Cond1: n caz c Expr1 > Expr2 => D=(B[xor]0x19)|A
MOV R19,BPORT ;
LDI R22,0x19 ;
EOR R19,R22 ;
OR R19,APORT ;
RJMP end ;

Cond2: ;Cond2: n caz c Expr1 < Expr2 => D=(C<<1)&B


MOV R19,CPORT ;
LSL R19 ;
AND R19,BPORT ;
RJMP end ;

Cond3: ;Cond3: n cazul n care Expr1 = Expr2 => D=(C-A)+(C|A)


MOV R19,CPORT ;
SUB R19,APORT ;
MOV R20,CPORT ;
OR R20,APORT ;
ADD R19,R20 ;
RJMP end ;

end:
OUT PORTD,DPORT ;
RJMP Main_Loop ;

[Link] de erori sintaxice codul obtinut (fig. 4).

fig. 4
[Link] schema electric a circuitului n Proteus (fig. 5).

fig. 5

Descrierea schemei electrice:


Pentru efectuarea lucrarii am folosit microcontroller-ul ATMega 32, display pe 7 segmente (7SEG-
BCD), i switch-ul (DIPSWC_8). Am conectat la fiecare intrare (PORTA,PORTB, PORTC) cte un
switch, iar la ieire am conectat 2 dispay-uri. Cu switch-ul alegem combinaia ce dorim s o
introducem. Pentru a vizualiza valorile hexazecimane ce corespund combinaiei introdus la intrri
de asemenea conectam display-uri. Schema funcioneaza astfel: introducem cte o combinaie la
fiecare din 3 intrari. Conform codului ncrcat n microcontroller, se va efectua compararea ntre
0xEF-PORTA|PORTB i PORTC+12. Rezultatul comparaiei definete ce expresie aritmeric se va
implimenta (una din cele 3). Soluia expresiei va fi transmis la ieirea PORTD i vizualizat.

D=( 3 0 x 19 )|0 x 27=0 x 1 A| 0 x 27=3 F

D=( 0 xCC 0 x 19 )|0 x 37=0 xD 5|0 x 37=F 7


D=( 0 xF 1 1 )0 xA 1=0 xE 20 xA 1= A 0

D=( 0 xAA 1 )0 x 7 C=0 x 540 x 7 C=54

D=( 0 x 9 F0 x 6 F )+ ( 0 x 9 F|0 x 6 F )=0 x 30+ FF


Concluzie:
Elabornd lucrarea data de laborator am cercetat implementarea algoritmilor cu ramificare, a
operaiilor aritmetico-logice i a celor de transfer n ASM. Am determinat c avem comenzi ce ne
permit s efectum operaii logice direct, iar pentru algoritmii cu ramificri folosim comenzile de
transfer a controlului execuiei.

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