Sunteți pe pagina 1din 9

Ministerul Educaţiei și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

PSM

Lucrare de laborator nr.4


Tema : Proiectarea unui sistem cu microcontroler de afişaj dinamic pe indicatoare 7-segmente.

St. gr. Preguza Cristian, CR-201

A verificat- I.Calmîcov

2023
Codul Programului:
.include "m32def.inc"

; Redefinirea registrilor

.def flags = r2

.def temp = r16

.def itmp = r17

.def cnt = r18

.def pos = r19

.cseg ; Segmentul de cod

.org 0x0000

rjmp RESET ; Salt necondiționat

.org INT0addr ; Adresa vectorului de întrerupere External Interrupt0

reti

.org INT1addr ; Adresa vectorului de întrerupere External Interrupt1

reti

.org INT2addr ; Adresa vectorului de întrerupere External Interrupt2

reti
.org OC2addr ; Adresa vectorului de întrerupere Output Compare2

reti

.org OVF2addr ; Adresa vectorului de întrerupere Overflow2

reti

.org ICP1addr ; Adresa vectorului de întrerupere Input Capture1

reti

.org OC1Aaddr ; Adresa vectorului de întrerupere Output Compare1A

reti

.org OC1Baddr ; Adresa vectorului de întrerupere Output Compare1B

reti

.org OVF1addr ; Adresa vectorului de întrerupere Overflow1

reti

.org OC0addr ; Adresa vectorului de întrerupere Output Compare0

rjmp DisplayNext

.org OVF0addr ; Adresa vectorului de întrerupere Overflow0

reti

.org SPIaddr ; Adresa vectorului de întrerupere SPI

reti

.org URXCaddr ; Adresa vectorului de întrerupere USART Receive Complete

reti

.org UDREaddr ; Adresa vectorului de întrerupere USART Data Register Empty

reti

.org UTXCaddr ; Adresa vectorului de întrerupere USART Transmit Complete

reti

.org ADCCaddr ; Adresa vectorului de întrerupere ADC

reti

.org ERDYaddr ; Adresa vectorului de întrerupere EEPROM Ready

reti

.org ACIaddr ; Adresa vectorului de întrerupere Analog Comparator

reti

.org TWIaddr ; Adresa vectorului de întrerupere Two-Wire Interface

reti
.org SPMRaddr ; Adresa vectorului de întrerupere Store Program Memory Ready

reti

;---------------------------------------------------------------

DisplayNext: ; Subrutina de prelucrare a întreruperii

; Comenzi pentru subrutina dată

in flags, SREG

ser itmp

out PORTB, itmp ; Stingem toate indicatoarele

LPM itmp, Z+

out PORTC, itmp ; Afișăm noul cod

out PORTB, pos ; Aprindem indicatorul

clc

rol pos ; Rotim stânga

sbrc pos, 7

rjmp end_display

; Reinitializăm (începem din nou)

movw ZH:ZL, XH:XL

ldi pos, ~(1<<PB0)

dec cnt

brne end_display

ldi cnt, 30

adiw XH:XL, -1 ; Deplasare spre stânga

cpi XL, Low((Message+5)*2)+1

ldi itmp, High((Message+5)*2)

cpc XH, itmp

brne end_display

ldi XL, low((Message)*2) ; Adresa de început a mesajului (în memoria


Flash)

ldi XH, High((Message)*2)

end_display:
out SREG, flags

reti

; Programul principal

;--------------------------------------------------------------

RESET:

ldi temp, Low(RAMEND) ; Inițializăm stiva

out SPL, temp

ldi temp, High(RAMEND)

out SPH, temp

CLR temp ; Resetăm temp

; Setăm ca intrare PORTC

out DDRC, temp ; Setăm ca intrare PORTB

out DDRD, temp ; Setăm ca intrare PORTD

SER temp

out DDRA, temp

out DDRB, temp ; Setăm ca ieșire PORTA

ldi temp, 77

out OCR0, temp

ldi temp, (1<<WGM01) | (1<<CS02) | (0<<CS01) | (0<<CS00) ; CTC, prescaler 64

out TCCR0, temp

ldi temp, (1<<OCIE0) ; Permitem întreruperea Output Compare

out TIMSK, temp

ldi ZL, low((Message)*2) ; Adresa de început a mesajului (în memoria


Flash)

ldi ZH, High((Message)*2)

ldi pos, ~(1<<PB0)

ldi cnt, 30
ldi XL, low((Message)*2) ; Adresa de început a mesajului (în memoria
Flash)

ldi XH, High((Message)*2)

SEI

MAIN: ; Programul principal

rjmp MAIN

Rezultatul programului:
Concluzii:
In urma efectuarii lucrarii de laborator nr.4 am concretizat cunostiintele de lucru
cu afisare dinamica pe un dispaly de 7 segmente impreuna cu ajutorul ATmega32.
In urma rularii programului si observarii corectitudinii a acestuia a fost
implementata si schema in proteus unde a fost observat modul de lucru a
acestuia si corectitudinea de conectarea a displayului si a codului elaborat.

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