Laboratorul 1 Microprocesoare [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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

Chişinǎu 2013

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

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

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ă.

Î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 codului main: init: ldi R16, 0b01000000 //Incarca in registrul R16 valoarea 0b01000000 out DDRA, R16 //Incarca in registrul DDRA din registrul R16 ldi R16, 0b11111111 //Incarca in Registru valoarea 0b10111111 out PORTA, R16 // Incarca in registrul PORTA din registrul R16 MainLoop: //Eticheta pentru inceputul programului L1: sbic PINA, 3 //Controleaza daca pinul 3 din portul A este 0 rjmp L1 //Salt la eticheta L1 sbic PORTA, 6 //Controleaza daca pinul 6 din portul A este 0 rjmp L2 //Salt la eticheta L2 sbi PORTA, 6 //Seteaza bitul 6 din portul A rjmp L3 //Salt la eticheta L3 L2: cbi PORTA, 6 // Sterge bitul 6 din portul A L3: sbis PINA, 3 //Sare daca pinul 3 a portului A e setat rjmp L3 //Salt la eticheta L3 ldi R16, 0xff //Încarca in registrul R16 valoarea 0xff L4: dec R16 //Decrementeaza registrul R16 cpi R16, 0 //Compara registrul R16 cu 0 brne L4 //Salt la L4 daca nu e egal endMainLoop: rjmp MainLoop //Salt la inceputul programului

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.