Professional Documents
Culture Documents
02 Lap Trinh Hop Ngu 8051 9982
02 Lap Trinh Hop Ngu 8051 9982
Lp trnh hp ng 8051
2.1 Bn trong 8051.
Trong phn ny chng ta nghin cu cc thanh ghi chnh ca 8051 v trnh by cch
s dng vi cc lnh n gin MOV v ADD.
2.1.1
Cc thanh ghi.
Trong CPU cc thanh ghi c dng lu ct thng tin tm thi, nhng thng tin
ny c th l mt byte d liu cn c s l hoc l mt a ch n d liu cn
c np. Phn ln cc thanh ghi ca 8051 l cc thanh ghi 8 bit. Trong 8051 ch c
mt kiu d liu: Loi 8 bit, 8 bit ca mt thanh ghi c trnh by nh sau:
D7
D6
D5
D4
D3
D2
D1
D0
vi MSB l bit c gi tr cao nht D7 cho n LSB l bit c gi tr thp nht D0.
(MSB - Most Sigfican bit v LSB - Leart Significant Bit). Vi mt kiu d liu 8 bit
th bt k d liu no ln hn 8 bit u phi c chia thnh cc khc 8 bit trc khi
c x l. V c mt s lng ln cc thanh ghi trong 8051 ta s tp trung vo mt
s thanh ghi cng dng chung c bit trong cc chng k tip. Hy tham kho ph
lc Appendix A.3 bit y v cc thanh ghi ca 8051.
Hnh 2.1: a) Mt s thanh ghi 8 bit ca 8051
b) Mt s thanh ghi 16 bit ca 8051
A
B
R0
R1
R2
DPTR
PC
DPH
DPL
PC (program counter)
R3
R4
R5
R6
R7
Cc thanh ghi c s dng rng ri nht ca 8051 l A (thanh ghi tch lu), B, R0 R7, DPTR (con tr d liu) v PC (b m chng trnh). Tt c cc d liu trn u
l thanh g hi 8 bit tr DPTR v PC l 16 bit. Thanh ghi tch lu A c s dng cho
tt c mi php ton s hc v l-gc. hiu s dng cc thanh ghi ny ta s gii
thiu chng trong cc v d vi cc lnh n gin l ADD v MOV.
2.1.2
Lnh ny ni CPU chuyn (trong thc t l sao chp) ton hng ngun vo ton hng
ch. V d lnh MOV A, R0 sao chp ni dung thanh ghi R0 vo thanh ghi A.
Sau khi lnh ny c thc hin th thanh ghi A s c gi tr ging nh thanh ghi R0.
Lnh MOV khng tc ng ton hng ngun. on chng trnh di y u tin
l np thanh ghi A ti gi tr 55H 9l gi tr 55 dng s Hex) v sau chuyn gi
tr ny qua cc thanh ghi khc nhau bn trong CPU. Lu rng du # trong lnh
bo rng l mt gi tr. Tm quan trng ca n s c trnh by ngay sau v d
ny.
MOV A, #55H;
; Np tr tr 55H vo thanh ghi A (A = 55H)
MOV R0, A
; Sao chp ni dung A vo R0 (by gi R0=A)
MOV R1, A
; Sao chp ni dung A v R1 (by gi R1=R0=A)
MOV R2, A
; Sao chp ni dung A v R2 (by gi R2=R1=R0=A)
MOV R3, #95H
; Np gi tr 95H vo thanh ghi R3 (R3 = 95H)
MOV A, R3
; So chp ni dung R3 vo A (by gi A = 95H)
Khi lp trnh b vi iu khin 8051 cn lu cc im sau:
1. Cc gi tr c th c np vo trc tip bt k thanh ghi no A, B, R0 - R7. Tuy
nhin, thng bo l gi tr tc thi th phi t trc n mt k hiu # nh
ch ra di y.
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
A, #23H
R0, #12H
R1, #1FH
R2, #2BH
B, # 3CH
R7, #9DH
R5, #0F9H
R6, #12
; Np gi tr 23H vo A (A = 23H)
; Np gi tr 12H vo R0 (R0 = 2BH)
; Np gi tr 1FH vo R1 (R1 = 1FH)
; Np gi tr 2BH vo R2 (R2 = 2BH)
; Np gi tr 3CH vo B (B = 3CH)
; Np gi tr 9DH vo R7 (R7 = 9DH)
; Np gi tr F9H vo R5 (R5 = F9H)
;Np gi tr thp phn 12 = 0CH vo R6
(trong R6 c gi tr 0CH).
MOV A, #7F2H
MOV R2, 456
2.1.3
y s l
Cu trc ca hp ng.
ADD A, B
MOV A, #67H
th ADD v MOV l nhng t gi nh to ra m lnh, cn A, B v A,
#67H l nhng ton hng th hai trng c th cha cc lnh gi hoc ch
lnh ca hp ng. Hy nh rng cc ch lnh khng to ra m lnh no (m
my) v chng ch dng bi hp ng, ngc li i vi cc lnh l chng
c dch ra m my (m lnh) cho CPU thc hin. Trong chng trnh 2.1
cc lnh ORG v END l cc ch lnh (mt s hp ng ca 8051 s dng
dng .ORG v .END). Hy c quy nh c th ca hp ng ta s dng.
3. Chng ch gii lun phi bt u bng du chm phy (;). Cc ch gii c th bt
u u dng hoc gia dng. Hp ng
b qua (lm ng) cc ch gii nhng chng
li rt cn thit i vi lp trnh vin. Mc
EDITOR
d cc ch gii l tu chn, khng bt buc
PRAGRAM
nhng ta nn dng chng m t chng
trnh gip cho ngi khc c v hiu
myfile.asm
chng trnh d dng hn.
4. Lu n nhn HERE trong trng nhn
ASSEMBLER
PRAGRAM
ca chng trnh 2.1. Mt nhn bt k
tham chiu n mt lnh phi c du hai
myfile.lst
chm (:) ng sau. Trong cu lnh nhy
other obj file
ngn SJMP th 8051 c ra lnh li
myfile.obj
trong vng lp ny v hn. Nu h thng
ca chng ta c mt chng trnh gim st
LINKER
th takhng cn dng lnh ny v n c th
PRAGRAM
c xo i ra khi chng trnh.
myfile.abs
OH
PRAGRAM
myfile.hex
2.3.2
Tp lit k .lst.
; li vng lp ny
; Kt thc tp .asm
2.4.1
2.4.2
2.4.3
Mt thanh ghi quan trng khc trong 8051 l b m chng trnh . B m chng
trnh ch m a ch ca lnh k tip cn c thc hin. Khi CPU np m lnh t
b nh ROM chng trnh th b m chng trnh tng ln ch m lnh kt tip.
B m chng trnh trong 8051 c th truy cp cc a ch chng trnh trong 8051
rng 16 bit. iu ny c ngha l 8051 c th truy cp cc a cha chng trnh t
0000 n FFFFH tng cng l 64k byte m lnh. Tuy nhin, khng phi tt c mi
thnh vin ca 8051 u c tt c 64k byte ROM trn chp c ci t. Vy khi
8051 c bt ngun th n nh thc a cha no?
Mt cu hi m ta phi hi v b vi iu khin bt k l th n c cp ngun th n
bt u t a ch no? Mi b vi iu khin u khc nhau. Trong trng hp h
8051 th mi thnh vin k t nh sn xut no hay phin bn no th b vi iu
khin u bt u t a ch 0000 khi n c bt ngun. Bt ngun y c ngha
l ta cp in p Vcc n chn RESET nh s trnh by chng 4. Hay ni cch
khc, khi 8051 c cp ngun th b m chng trnh c gi tr 0000. iu ny c
ngha l n ch m lnh u tin c lu a cha ROM 0000H. V l do ny m
trong v tr nh 0000H ca b nh ROM chng trnh v y l ni m n tm lnh
u tin khi bt ngun. Chng ta t c iu ny bng cu lnh ORG trong
chng trnh ngun nh trnh by trc y. Di y l hot ng tng bc ca
b m chng trnh trong qa trnh np v thc thi mt chng trnh mu.
hiu tt hn vai tr ca b m chng trnh trong qu trnh np v thc thi mt
chng trnh, ta kho st mt hot ng ca b m chng trnh khi mi lnh c
np v thc thi. Trc ht ta kho st mt ln na tp lit k ca chng trnh mu v
cch t m vo ROM chng trnh 8051 nh th no? Nh ta c th thy, m lnh
v ton hng i vi mi lnh c lit k bn tri ca lnh lit k.
Chng trnh 2.1: V d mu v mt chng trnh hp ng.
Chng trnh 2.1 cho trn y l mt chui cc cu lnh hoc cc dng lnh c
vit hoc bng cc lnh hp ng nh ADD v MOV hoc bng cc cu lnh c gi
l cc ch dn. Trong khi cc lnh hp ng th ni CPU phi lm g th cc ch lnh
(hay cn gi l gi lnh) th a ra cc ch lnh cho hp ng. V d, trong chng
trnh 2.1 th cc lnh ADD v MOV l cc lnh n CPU, cn ORG v END l cc
ch lnh i vi hp ng. ORG ni hp ng t m lnh ti ngn nh 0 v END th
bo cho hp ng bit kt thc m ngun. Hay ni cch khc mt ch lnh bt u
v ch lnh th hai kt thc chng trnh.
Cu trc ca mt lnh hp ng c 4 trng nh sau:
[nhn:]
[t gi nh] [cc ton hng]
[; ch gii]
Cc trng trong du ngoc vung l tu chn v khng phi dng lnh no cng c
chng. Cc du ngoc vung khng c vit vo. Vi dng thc trn y cn lu
cc im sau: