Microprocesoare

Imagine preview
(9/10 din 1 vot)

Acest laborator prezinta Microprocesoare.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 7 fisiere docx de 61 de pagini (in total).

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domeniu: Calculatoare

Extras din document

1)initiarea in programare ASM.

2)stodierea modului periferic GPIO.

Problema:

Sa se dezvolte o aplicatie care ar permite trecerea starii unui led din starea curenta in opusa la detectarea apasarii unui buton.

Notiuni teoretice:

Programarea in limbajul ASM reprezinta accesul la memorie si modificarea volorilor la aceste adrese utilizand setul de comenzi. Limbajul permite gruparea secventelor de comenzi in subrutine, executia conditionata a secventelor de program realizata in baza salturilor conditionate si neconditionate.

Un microcontroller in orice moment de timp trebuie sa execute o instructiune definita de programator. Atunci cand microcontrollerul executa o comanda definita de programator vom spune ca controllerul se afla sub controlul programului.Si invers, in cazul in care se executa o comanda care nu a fost definita de catre programator vom spune ca microcontrollerul a iesit de sub control.

Un program ce ruleaza pe microcontroller trebuie sa mentina microcontrollerul intotdeauna sub control ceia ce presupune existenta unei bucle infinite in program.

Vom defini doua parti componente principale a unui program:

Partea de initializare - o secventa de cod la inceputul programului ce serveste pentru initializarea microcontrollerului pentru lucru.

Partea de procesare - rezolvarea problemei si mentinerea sub control a Microcontrollerului cu o bucla infinita.

Pentru evidentierea zonelor de initializare si procesare a programului se recomanda utilizarea etichetelor (label).

Directive de preprocesare a compilatorului sunt comenzi catre compilator care sunt executate de catre compilator inaintea generarii codului binar. Rolul lor este de a configura compilatorul si a indica compilatorului modul in care trebuie sa fie tratate liniile de program care le urmeaza.

Orice Microcontroller are un set de pini, majoritatea dintre care care pot fi configurați ca pini generici de intrare sau ieșire (GPIO), astfel încât să i se poată atribui o valoare logică către terminalul pinului sau sa fie citită aceasta valoare logică de pe el, în cazul când pinul este configurat către intrare.

Fiecare modul GPIO a microcontrollerului cu arhitectura AVR va avea la dispoziție trei registri periferici PINx, DDRx si PORTx.

Fig.1Modulul GPIO

Mersul lucrarii:

1.Creem in proiect nou in Avr Studio:

2.Elaboram solutia problemei formind shema-bloc. Conform algoritmului obtinut scriem listingul in assembler.

3.Controlam de erori sintaxice codul obtinut:

4.Cream schema electrica a circuitului in Proteus verificind daca avem erori logice.

5.Facem concluzii.

Schema-bloc:

Init:

main_loop:

L3:

Listingul programului:

.include "m32def.inc" ;includem fisierul de descrierea a controlerului

.cseg ;alegem segmentul codului din program

.org 0 ;stabilim adresa curenta la pozitia 0

;initializarea porturilor

init:

ldi R16,0b00000100 ;itializan portul A ca port de iesire.

out DDRA,R16

ldi R16,0b11111011

out PORTA,R16

ldi R16,0b00000000 ;initializam portul D ca port de intrare si acrivam rezistenta de pull-up

out DDRD,R16

ldi R16,0b11111111

out PORTD,R16

main_loop:

L1:

sbic PIND,2 ;verificam daca butonul a fost apasat

rjmp L1 ;daca butonul nu e apasat are loc intoarcerea verificarea reperata

sbic PORTA,2 ;daca butonul e apasat verificam daca ledul e aprins

rjmp L2 ;daca ledul e aprins sarim la eticheta L2

rjmp L3 ;daca ledul e stins sare la eticheta L3

L2:

cbi PORTA,2 ;stingem ledul

rjmp L4

L3:

sbi PORTA,2 ;aprindem ledul

rjmp L4

L4:

sbis PIND,2 ;verificam daca butonul e apasat

rjmp L4 ;daca nu e apasat mai verifica o data

ldi R16,0b11111111 ;daca e apasat introducem un ciclu de intirziere

delay:

dec R16 ;operatia aleasa e decrementarea unui reg.in care e incarcata val.0xFF

cpi R16,0 ;verificam daca am ajuns la 0

brne delay ;daca nu e 0 continuam decrimentarea

rjmp main_loop ;daca e 0 ne intoarcem la inceput(bucla)

Fisiere in arhiva (7):

  • mc7.1.docx
  • mc6.docx
  • mc2.docx
  • mc5.docx
  • mc1.docx
  • mc4.docx
  • mc3.docx