Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Raport
Lucrare de laborator Nr.1
La disciplina Microprocesoare
Tema : Initializarea in programarea assembler.
Modulul periferic GPIO.
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;
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.
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.
START
Commented [G1]: Aici avem skema bloc
Main_loop: rjmp
L1:
F T
PortA 0=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:
Bibliografie :
http://www.microlab.club/
reteua Internet