Page 12 - Microcontrolere - Indrumator de laborator
P. 12
Fig. 1.2. Circuitele folosite pentru accesarea memorie de programCircuitele folosite pentru accesarea memorie de program [2, p.15]
i
u
u
c
a
n
r
r
i
d
o
p
d
u
n
t
t
e
l
e
o
v
s
f
t
e
r
r
r
s
e
h
d
e
a
a
În figura de mai sus este indicată din punct de vedere hardware structura folosittă
w
d
c
c
d
n
p
a
e
i
r
e
l
3
r
p
1
i
a
i
r
e
e
r
a
u
p
u
pentru adresarea memoriei de program. În principiu, prin aplicarea unei adrese pe 13
,
n
n
i
p
r
t
a
i
e
e
p
c
g
r
o
r
m
a
d
a
r
m
p
o
i
r
e
i
m
e
e
d
n
s
a
Î
i
n
p
e
u
s
r
a
.
e
biți pe magistrala de adrese a memoriei program (lb. engl. address bus), se obține pe
u
s
d
b
s
a
s
e
r
d
c
magistrala de date a acestei memorii (lb. engl. program bus) o instrucțiune codată pe
o
t
n
i
)
u
r
s
o
a
r
n
m
r
p
l
i
r
o
d
i
i
u
g
14 biți. Adresa pentru accesarea unei locații din memoria program provine de la un
m
e
n
v
r
a
m
e
i
e
a
d
o
i
n
p
)
D
p
.
registru numărător de program PC (lb. engl. program counter). După resetarea sau
u
i
z
n
i
C
P
r
a
i
g
t
f
e
u
l
s
u
t
,
r
u
e
u
p
realimentarea microcontrolerului, conținutul registrului PC este zero, fapt ce
o
e
l
r
t
e
s
c
e
t
o
r
C
i
i
o
corespunde la accesarea primei locații a memoriei program. Conțținutul numărătorului
n
e
m
m
a
.
a
i
p
o
e
r
i
r
g
m
de program se actualizează prin mai multe modalități.
a
n
A. Conținutul PC se incrementează în mod automat, transparent față de
a
t
t
n
a
t
r
s
f
p
e
,
r
a
e
f
i
g
i
n
utilizator, cu o unitate după executarea unei instrucțiuni, fiind astfel pregătită
e
s
i
p
n
a
r
d
,
i
f
t
u
l
ț
e
e
t
s
o
z
d
a
m
d
b
u
l
accesarea instrucțiunii următoare. Se poate spune că acesta este modul de bază de
e
adresare a memoriei de program, linie după linie, sau instrucțiune după instrucțiune.
n
e
u
i
ț
u
u
Este și modul în care sunt scrise instrucțiunile în cadrul fișierului surssă. Un exemplu
i
u
e
s
i
r
l
r
ș
a
r
p
m
o
g
a
d
e
r
e
t
pentru cazul de față poate fi observat în secvența următoare de program.
r
.
o
...
BANKSEL(VAR1)
t
e
s
_
t
a
t
h
c
adr_1: MOVLW 10h ; se presupune că eticheta adr_1 este
1
i
e
a
e
e
d
r
ă
i
r
d
d
e
o
i
e
a
e
s
i
n
; atribuită de către link editor adresei cu
u
r
t
t
k
l
r
e
c
ă
nr. ; nr. 100 din memoria de program
p
0
r
o
0
r
n
1
.
m
i
r
a
e
m
;
o
d
m
e
a
g
d
r
n
i
c
ADDLW 5h ; codul acestei instrucțiuni se va găsi în
;
c
o
e
t
t
r
i
i
n
s
l
d
u
u
e
s
a
c
u
d
a
r
s
e
c
m
e
o
d
g
e
i
r
e
r
m
p
o
r
i
m
a
; locația de memorie program cu adresaa
a
; 101
MOVWF VAR1 ; instrucțiunea este plasatiunea este plasată în memoria
l
r
e
;
u
a
s
; program la adresa 102; rezultatul
r
a
g
l
m
a
d
p
r
a
o
t
;
t
e
a
0
r
2
u
1
z
l
e
î
i
i
n
e
t
s
; instrucțiunii anterioare este salvat înn
u
e
i
s
a
r
t
v
n
a
e
r
a
t
l
a
o
i
t
i
a
e
c
r
i
e
; locația de memorie de date cu etichetaa
e
t
t
m
m
d
h
e
e
c
d
u
e
o
e
a
i
d
; VAR1
...
9