Documente Academic
Documente Profesional
Documente Cultură
Catedra MDS
RAPORT
La lucrarea de laborator nr. 2
La microprocesoare
Branişte Tudor
Bragarenco Andrei
Chişinău 2009
Scopul: Deprinderea lucrului cu operatorii de decizie (condiţionali).
Sarcina: Să se scrie un program care va reacţiona la apăsarea unui buton schimbînd starea
unui LED în opus (dacă luminează să îl stingă, dacă nu sa îl aprindă).
Noţiuni teoretice:
Pe lîngă instrucţiunile liniare, microcontrlerele permit crearea ramificaţiilor programului cu
ajutorul unor operatori condiţionali.
Ramificarea în assembler presupune schimbarea valorii din Program Counter în dependenţă
de o anumită condiţie (biţii din SREG) astfel că se execută un salt la o altă adresă din Program
Memory şi se îndeplinesc instrucţiunile de la ea.
Sunt operatori de comparaţie, cu ajutorul cărora putem compara doi regiştri (CP) sau un
registru cu o constantă (CPI) sau chiar compararea a doi regiştri luînd în seamă şi bitul de
transport (CPC). În urma acestori operaţii, cît şi a celor aritmetice, sunt setaţi sau „curăţiţi”
anumiţi biţi în registrul de satus SREG, pe care mai apoi îi putem utiliza pentru a crea ramificări.
Iniţializarea MCU
.cseg
.org 0
setare porturi de
intrare/ieşire
delay
NU Buton =
apăsat
DA
DA LED = NU
aprins
LED=0
(stinge) LED=1
(aprinde)
*stinge
delay
NU Buton
=1
DA
Listingul programului:
;partea de iniţiere
.include"m16def.inc"; se include fisierul de descriere a controlerului
.def temp=R16 ; deffinirea registrului cu care vom lucra
.cseg ; se alege segmentul codului de program
.org 0
reset:
main:
;functia de intirziere(retinere)
LDI R16, 0X08
L1: Dec R16 ;decrementeaza valuarea din registru R16
CPI R16, 0x00 ;compara valuarea 0 cu valuarea din registru
BRNE L1 ;salt neconditional la L1 daca valuorile comparate nu sunt egale
L2:
SBIC PINB,3 ;omite urmatoarea comanda daca pinul 3 din portul B va avea valuarea 0
rjmp L2 ;revine la executarea comenzii L2
;delay
L4:LDI R16, 0X08
L5: Dec R16
CPI R16, 0x00
BRNE L5
L6:SBIS PINB,3
rjmp L6
rjmp main
Concluzii:
Operatorii condiţionali şi ramificările de program permit crearea de programe mai
complexe, făcînd dispozitivele mai universale.