laboratorul 1 microprocesoare

7
MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA UNIVERSITATEA TEHNICĂ A MOLDOVEI Facultatea Calculatoare, Informatică și Microelectronică Catedra Microelectronică și Ingineria Biomedicală Raport Lucrare de laborator nr.1 La disciplina Microprocesoare Tema:Inițiere în programarea ASM,modulul periferic GPIO. A efectuat: st.gr. ISBM-111 Arpentii Nicolae A verificat: lector asistent Eugeniu Lazari

Upload: marin-cerlat

Post on 09-Dec-2015

7 views

Category:

Documents


2 download

DESCRIPTION

Inițiere în programarea ASM,modulul periferic GPIOScopul lucrării:1. Inițiere în programare ASM.2. Studiul instrumentelor de proiectare a aplicațiilor cu MCU (AVR Studio, Proteus). 3. Lucrul cu modulul periferic GPIO.Sarcina: Să se proiecteze un sistem care ar permite schimbarea stării unui led, din aprins în stinns și invers, la apăsarea unui buton. Starea inițială se va considera led aprins.

TRANSCRIPT

Page 1: Laboratorul 1 microprocesoare

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVAUNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea Calculatoare, Informatică și Microelectronică

Catedra Microelectronică și Ingineria Biomedicală

RaportLucrare de laborator nr.1

La disciplinaMicroprocesoare

Tema:Inițiere în programarea ASM,modulul periferic GPIO.

A efectuat: st.gr. ISBM-111 Arpentii Nicolae

A verificat: lector asistent Eugeniu Lazari

Chişinǎu 2013

Page 2: Laboratorul 1 microprocesoare

Scopul lucrării:

1. Inițiere în programare ASM.

2. Studiul instrumentelor de proiectare a aplicațiilor cu MCU (AVR Studio, Proteus).

3. Lucrul cu modulul periferic GPIO.

Sarcina:

Să se proiecteze un sistem care ar permite schimbarea stării unui led, din aprins în stinns și invers, la

apăsarea unui buton. Starea inițială se va considera led aprins.

Noțiuni teoretice:

Un microcontroller, privit în ansamblu, reprezintă o structură formată dintr-un microprocesor și un set

de module periferice.

- GPIO permite setarea sau colectarea nivelului logic de pe un pin al Microcontrollerului

Fig. 1 Modulele periferice

Fiecare modul GPIO are rezervat un set de 3 registri numiti PORT, PIN si DDR. Orice Microcontroller

are un set de pini, majoritatea dintre care care pot fi configuraţi ca pini generici de intrare sau ieşire

(GPIO).

Fig. 2 Regiștrii periferici

Page 3: Laboratorul 1 microprocesoare

Fiecare modul GPIO a microcontrollerului cu arhitectura AVR va avea la dispozitie trei registri de

periferici PINx, DDRx si PORTx.

Fig. 3 Regiștrii periferici

PINx - serveste pentru citirea valorii logice de pe terminalul fizic, acest registru este accesibil doar

pentru citire. Operatia de scriere catre acest registru nu va afecta valoarea fizica a terminalului fizic.

PORTx - registru de setare a valorii portului pentru cazul cand este setat catre iesire si activarea

rezistentei de pull-up in cazul cand este setat catre intrare.

DDRx - Registrul de setare a directiei portului, intrare sau iesire

Mersul lucrării:

Am scris programul în ASM și l-am compilat în AVR, în programa Proteus am proiectat schema

electrica a dispozitivului și am realizat simularea, am folosit microcontrolerul ATmega 16, un led și un

buton. Am facut legaturile conform portului si pinilor activati si întrind in proprietatile

microcontrolerului am incarcat fișierul hex.

Comenzile folosite pentru realizarea sarcinei.

Tabelul 1.

Comenzile în ASM

Page 4: Laboratorul 1 microprocesoare

Schema bloc

În Figura 4 este reprezentată schema bloc a programului realizat în ASM, descrisă logica rulării

programului, comutarea led-ului se realizează cu ajutorul unui buton, în dependență de starea butonului

se conectează ledul.

Fig. 4 Schema bloc.

Schema electrică în Proteus pentru simulare.

În Figura 5, reprezintă starea inițială a ledului este aprinsă pîna la apasarea butonului.

Fig. 5 Schema electrică.

Page 5: Laboratorul 1 microprocesoare

În Figura 6, reprezintă starea ledului cînd este stins după apasarea butonului.

Fig. 6 Schema electrică.

Codul programului:

.include "m16def.inc" //Directiva pentru compilator

.cseg //Segment de cod

.org 0 //Adresa de inceput a coduluimain:init:

ldi R16, 0b01000000 //Incarca in registrul R16 valoarea 0b01000000out DDRA, R16 //Incarca in registrul DDRA din registrul R16ldi R16, 0b11111111 //Incarca in Registru valoarea 0b10111111out PORTA, R16 // Incarca in registrul PORTA din registrul R16

MainLoop: //Eticheta pentru inceputul programuluiL1: sbic PINA, 3 //Controleaza daca pinul 3 din portul A este 0

rjmp L1 //Salt la eticheta L1sbic PORTA, 6 //Controleaza daca pinul 6 din portul A este 0rjmp L2 //Salt la eticheta L2sbi PORTA, 6 //Seteaza bitul 6 din portul Arjmp L3 //Salt la eticheta L3

L2: cbi PORTA, 6 // Sterge bitul 6 din portul AL3: sbis PINA, 3 //Sare daca pinul 3 a portului A e setat

rjmp L3 //Salt la eticheta L3ldi R16, 0xff //Încarca in registrul R16 valoarea 0xff

L4: dec R16 //Decrementeaza registrul R16cpi R16, 0 //Compara registrul R16 cu 0brne L4 //Salt la L4 daca nu e egal

endMainLoop:rjmp MainLoop //Salt la inceputul programului

Page 6: Laboratorul 1 microprocesoare

Concluzie:

In urma lucrarii de laborator am luat cunostință cu principiul de programare în ASM, etapele de

oformare a unui program si principiul de functionare a unui microprocessor, am realizat sarcina propusă

și am obținut relultatul dorit.

Bibliografie:

1. Conspectul de bază.

2. www.mcu-labs.com.