Sunteți pe pagina 1din 8

MINISTERUL EDUCATIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICA A MOLDOVEI


CATEDRA DE MICROELECTRONICA SI INGINERIE BIOMEDICALA

Raport
Lucrare de laborator Nr.1
La disciplina Microprocesoare
Tema : Initializarea in programarea assembler.
Modulul periferic GPIO.

A efectuat : st. gr. MN 131 Ignat Ion

A verificat: lector asistent Lazari Eugeniu

Chisinau 2014
Tema lucrrii: De a face cunotin cu limbajul de programare Assembler i modulul periferic
GPIO.

Obiective:
O1.Sa utilizeze cu success cunostintele capatate referitor la sintaxa in ASM;

O2.Sa propuna metode de formare a aplicatiei ce v-a satisfice conditia problemei;

O3.Sa execute in proteus aplicatia alcatuita in Atmel studio;

Definiia problemei: Sa se dezvolte o aplicatie care ar permite aprinderea si respectiv stingerea


unui LED prin intermediul actionarii unui buton.

Noiuni teoretice:
Microcontrolerul reprezinta un circuit electric digital care realizeaz orice funcie n
dependen de programul care este nregistrat n el.
Microcontrolerele din familia AVR prezinta o organizare de tipul RISC executnd o instuciune
/ ciclu maina. Prezena unor blocuri interne ca: oscilator intern, timere, unitate UART, SPI, rezistoare
pull-up, PWM (pulse widith modulation), ADC, comparatoare, determin utilizarea acestor
microcontrolere ntr-o gam foarte larg de aplicaii. Posibilitatea programrii memoriei FLASH i a
memoriei EEPROM, determin ca aceste microcontrolere s aib o larg utilizare datorit costului
mic de dezvoltare a unei aplicaii (timpul de proiectare scurt). O alt calitate remarcabil a acestor
microcontrollere este consumul foarte mic de energie. Domeniul tensiunilor de alimentare este cuprins
ntre 1.8 si 5V. Prezint 6 moduri diferite de stand-by ceea ce ne asigur c aceste microcontrolere nu
vor consuma energie dect atunci cnd este nevoie. Utilizarea acestor microcontrollere poate reduce
semnificativ timpul de dezvoltare a unei aplicaii datorit prezenei pe acestea a unui bloc de depanare
n timp real, circuitul aflndu-se chiar pe placa ce reprezint aplicaia. Se pot face n timp real operaii
de watch asupra unor regitri, operaii de rulare pas cu pas, operaii de oprire n breakpoint.
Printre cele mai utilizate microcontrollere de uz general putem specifica: ATMEGA 8,
ATMEGA 16, ATMEGA 32, ATMEGA 128, ATMEGA 162 etc.
ATmega 16 este un microcontroler CMOS de 8 bii de mic putere bazat pe arhitectura RISC
AVR mbuntit. Dispune de un set de 131 instruciuni i 32 de registre de uz general. Cele 32 de
registre sunt direct adresabile de Unitatea Logica Aritmetic (ALU), permind accesarea a dou
registre independente ntr-o singur instruciune. Se obine astfel o eficien sporit n execuie (de
pn la zece ori mai rapide dect microcontrolerele conveionale CISC). Caracteristicile principale ale
microcontrolerului ATmega16 sunt:
- 16KB de memorie Flash renscriptibil pentru stocarea programelor;
- 1KB de memorie RAM;
- 512B de memorie EEPROM;
- dou numrtoare/temporizatoare de 8 bii;
- un numrtor/temporizator de 16 bii;
- conine un convertor analog digital de 10 bii, cu intrri multiple;
- conine un comparator analogic;
- conine un modul USART pentru comunicaie serial (port serial);
- dispune de un cronometru cu oscilator intern;
-ofer 32 de linii I/O organizate n patru porturi (PortA, PortB, PortC, PortD).
ATmega16 conine 32 de registre de uz general si 64 de registre speciale pentru modulele I/O. Aceste
registre sunt mapate la adrese din memoria RAM cuprinse ntre 0000h si 005Fh.

Fig.1 Schema generala a microcontrolerului

Program counter permite selectarea consecutiv a instruciunilor de memorie din program.


Instruction Decoder decodificator de comenzi care configureaz nucleul pentru execuia
instruciunii curente, lund n consideraie starea curent a nucleului.
ALU unitatea aritmetico-logic, permite realizarea operaiilor aritmetice i logice ntre 2 operanzi,
genernd un rezultat n dependen de funcia selectat.
Regitrii de uz general sunt considerate conteinere care particip nemijlocit la orice operaie, la oricare
operaie (cu excepii).
RAM este memoria ce permite pstrarea temporar a datelor pe parcursul executrii unui program.
i/o este sistemul de intrare/ieire, permite contactul nucleului cu mediul extern; contactul este
realizat n baza modulelor periferice (GPIO, ExtInt, TIMER, ADC, AC, UART, SPI, I2C, EEPROM).
Modulul periferic GPIO (General Purpose Input/Output) este un pin generic pe un cip al crui
comportament poate fi controlat (programat) prin soft. Pinii GPIO n-au nici un scop special definit i
sunt nefolosite n mod implicit.
Un microcontroler interfaaz nite pini care fac legtura cu mediul extern. Cea mai simpl
comunicare cu mediul extern poate fi transfer la nivelul logic, citirea niveluli logic de pe pin sau
setarea pinului la un anumit nivel. Fiecare pin a microcontrolerului, n afar de cele de alimentare i
unele specializate, poate fi utilizat ca pin de intrare sau ieire.
Descrierea pinilor:
- VCC Sursa de current ;
- GND Masa;
- Port A (PA7 ... PA0)
- XTAL 1: Intrare pentru amplificatorul inversor al Oscilatorului;
- XTAL 2: Ieire pentru amplificatorul inversor al Oscilatorului.
-AVCC: AVCC este pin de alimentare pentru Port-ul A si Convertorului A/D. Trebuie conectat
extern la VCC, chiar dac ADC nu este folosit. Dac ADC este folosit, ar trebui conectat la VCC
printr-un filtru trece-jos.
- AREF: AREF este pinul de referin analogic pentru Convertorul A/D.

Fig. 2 Schema unui port fizic

PINx - servete pentru citirea valorii logice de pe terminalul fizic, acest registru este
accesibil doar pentru citire. Operaia de scriere ctre acest registru nu va afecta valoarea fizic a
terminalului fizic.
PORTx - registru de setare a valorii portului pentru cazul cnd este setat catre ieire i activarea
rezistentei de pull-up n cazul cnd este setat ctre intrare.
DDRx - Registrul de setare a direciei portului, intrare sau ieire.
n cazul cnd o locaie a DDRx va conine "1", pinul respectiv va fi setat ctre ieire, iar valoarea
logic din PORTx de la aceeai locaie va fi tranferat ctre terminalul fizic.
n cazul n care o locaie a DDRx va conine "0" , terminalul fizic respectiv va fi setat ctre intrare.
n acest caz valoarea din registrul PORTx va conecta rezistena de pull-up cu valoarea logic "1",
valoarea logic "0" va seta pinul n starea de impedan nalt - "HiZ". Se recomand de a evita starea
de Hi-Z pe terminal, fapt ce are loc cnd terminalul nu este conectat la o sursa de semnal, pentru a
evita introducerea de zgomote n interiorul cipului microcontrollerului, ce ar putea n cazurile critice
duce pn la defectarea circuitului.
Toi pinii I/O au diode de protecie att la VCC ct i la mpmntare.
Locaia pinilor port intrare este read only, in timp ce Registru de Date i DDR sunt read i
write. In plus, bitul PUD (dezactivare pull-up) din SFIOR dezactiveaz funcia pull-up pentru toi
pinii din toate porturile cnd este setat.
Majoritatea pinilor au funcii alternative pentru caracteristicile periferice ale dispozitivului.
Este de remarcat faptul ca activarea funciilor alternante ale unor pini port nu afecteaz utilizarea altor
pini din port ca I/O general digital.

Registrii porturilor ( DDR, PORT, PIN)


DDR=0 portul este setat intrare semnal
DDR=1 portul este setat iesire semnal
Daca DDR=0:
PORT=0 rezistenta deconectata
PORT=1 rezistenta conectata
Daca DDR=1
PORT=0 la iesire 0 logic
PORT=1 la iesire 1 logic
Mersul lucrrii:
AVRStudio este un mediu de software dezvoltat de Atmel pentru nscrierea n limbaj de asamblare,
compilarea i simularea de programe destinate microcontrolerelor produse de aceast companie.
Orice program scris n AVRStudio este coninut ntr-o structur de tip proiect. Paii care trebuie
urmai pentru a crea un proiect nou sunt:
1) Din fereastra initiala, selectam New Project
2) Apare fereastra New project unde alegem AVR Assembler si dam denumirea dorita
3) Alegem tipul microprocesorului din fereastra Device Selection
4) Scriem programul dupa care urmeaza a fi executat pentru depistarea eventuelelor erori
nainte de a scrie programul propriu-zis, se introduce urmtoarea linie: includem32def.inc.
Aceast linie este o directiv de compilare care indic numele fiierului ce conine descrierea
regitrilor i caracteristicilor microcontrolerului.
Pentru efectuarea lucrrii vom folosi microcontrolerul ATMega32, un buton si un LED ce
emite lumin de culoare roie. Cel mai comod este ca sa conectm butonul la un port al
microcontrolerului, iar LED-ul la altul. n acest caz programul pe care l voi scrie trebuie s seteze
portul la care conectm butonul, s fie de intrare, iar cel la care conectm LED-ul s fie de ieire. Vom
folosi portul B ca port de ieire, iar portul C ca port de intrare. Schema funcioneaz n felul urmtor:
cnd butonul nu este acionat, la ieire avem cadere de tensiune care corespunde 1 logic, iar cand
acionm butonul, la ieire tensiunea scade pn la zero (0 logic), i astfel se formeaz o diferen
de potenial ntre port i surs i se aprinde LED-ul. Rezistena R1 are rol de a limita curentul care
trece prin diod. Schema o vom testa folosind softul Proteus.

START
Commented [G1]: Aici avem skema bloc

Main_loop: rjmp

L1:

F T
PortA 0=0

PortC 3=0 PortC,3=0

Finis
Listing-ul programului :
.include "m32def.inc"
.org 0
.cseg

main:
init:
ldi R16,0b00000000
out DDRB,R16
ldi R16,0b00001000
out PORTB,R16

ldi R16,0b11111111
out DDRC,R16
ldi R16,0b00000000
out PORTC,R16
end_init:

main_loop:
L1: sbic PINB,3 ; Sare dac bitul din registrul I/O este ters
rjmp L3
L2:
SBI PORTC,5 ; Setarea bitului n registrul I/O
rjmp end_main_loop
L3:
CBI PORTC,5 ; tergerea bitului din registru I/O

end_main_loop:
rjmp main_loop
end_main:
Schemele electrice:

Fig.8 Schema electrica principiala


Fig.9 Schema la simulare dupa actionarea butonului

Concluzie: Efectuand aceasta lucrare de laborator, am insusit cum se programeaza un


microcontroler cu ajutorul softurilor AVR Studio 5 si Proteus. Astfel, am scris un program in
limbajul Assembler si cu ajutorul programului Proteus am programat virtual microprocesorul
ATMEGA32. De asemenea, am studiat arhitectura acestui microprocesor si a modulului sau
periferic GPIO.

Bibliografie :
http://www.microlab.club/

reteua Internet

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