You are on page 1of 7

chng 2

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 chuyn MOV.

Ni mt cch n gin, lnh MOV sao chp d liu t mt v tr ny n mt v tr


khc. N c c php nh sau:
MOV
; ch, ngun; sao chp ngun vo ch

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).

trong lnh MOV R5, #0F9H th phi c s 0 ng trc F v sau du # bo


rng F l mt s Hex ch khng phi l mt k t. Hay ni cch khc MOV R5,
#F9H s gy ra li.
2. Nu cc gi tr 0 n F c chuyn vo mt thanh ghi 8 bit th cc bit cn li c
coi l tt c cc s 0. V d, trong lnh MOV A,#5 kt qu l A=0.5, l A =
0000 0101 dng nh phn.
3. Vic chuyn mt gi tr ln hn kh nng cha ca thanh ghi s gy ra li v d:

MOV A, #7F2H
MOV R2, 456

; Khng hp l v 7F2H > FFH


; Khng hp l v 456 > 255 (FFH)

4. np mt gi tr vo mt thanh ghi th phi gn du # trc gi tr . Nu


khng c du th n hiu rng np t mt v tr nh. V d MOV A, 17H c ngha
l np gi tr trong ngn nh c gi tr 17H vo thanh ghi A v ti a ch d liu
c th c bt k gi tr no t 0 n FFH. Cn np gi tr l 17H vo thanh ghi A
th cn phi c du # trc 17H nh th ny. MOV A, #17H. Cn lu rng
nu thiu du # trc mt th s khng gy li v hp ng cho l mt lnh hp

2.1.3

l. Tuy nhin, kt qu s khng ng nh mun ca ngi lp trnh.


mt li thng hay gp i vi lp trnh vin mi.

y s l

Lnh cng ADD.

Lnh cng ADD c cc php nh sau:


ADD a, ngun
; Cng ton hng ngun vo thanh ghi A.
Lnh cng ADD ni CPU cng byte ngun vo thanh ghi A v t kt qu thanh ghi
A. cng hai s nh 25H v 34H th mi s c th chuyn n mt thanh ghi v
sau cng li vi nhau nh:
MOV A, #25H
; Np gi tr 25H vo A
MOV R2, #34H
; Np gi tr 34H vo R2
ADD A, R2
; Cng R2 vo A v kt qu A = A + R2
Thc hin chng trnh trn ta c A = 59H (v 25H + 34H = 59H) v R2 = 34H,
ch l ni dng R2 khng thay i. Chng trnh trn c th vit theo nhiu cch
ph thuc vo thanh ghi c s dng. Mt trong cch vit khc c th l:
MOV R5, #25H
; Np gi tr 25H vo thanh ghi R5
MOV R7, #34H
; Np gi tr 34H vo thanh ghi R7
MOV A, #0
; Xo thanh ghi A (A = 0)
ADD A, R5
; Cng ni dung R5 vo A (A = A + R5)
ADD A, R7
; Cng ni dung R7 vo A (A = A + R7 = 25H + 34H)
Chng trnh trn c kt qu trong A L 59H, c rt nhiu cch vit chng trnh
ging nh vy. Mt cu hi c th t ra sau khi xem on chng trnh trn l liu
c cn chuyn c hai d liu vo cc thanh ghi trc khi cng chng vi nhau
khng? Cu tr li l khng cn. Hy xem on chng trnh di y:
MOV A, #25H
; Np gi tr th nht vo thanh ghi A (A = 25H)
ADD A, #34H
; Cng gi tr th hai l 34H vo A (A = 59H)

Trong trng hp trn y, khi thanh ghi A cha s th nht th gi tr th hai i


theo mt ton hng. y c gi l ton hng tc thi (trc tip).
Cc v d trc cho n gi th lnh ADD bo rng ton hng ngun c th hoc l
mt thanh ghi hoc l mt d liu trc tip (tc thi) nhng thanh ghi ch lun l
thanh ghi A, thanh ghi tch lu. Hay ni cch khc l mt lnh nh ADD R2,
#12H l lnh khng hp l v mi php ton s hc phi cn n thanh ghi A v
lnh ADD R4, A cng khng hp l v A lun l thanh ghi ch cho mi php s
hc. Ni mt cch n gin l trong 8051 th mi php ton s hc u cn n
thanh A vi vai tr l ton hng ch. Phn trnh by trn y gii thch l do v sao
thanh ghi A nh l thanh thi tch lu. C php cc lnh hp ng m t cch s dng
chng v lit k cc kiu ton hng hp l c cho trong ph lc Appendix A.1.
C hai thanh ghi 16 bit trong 8051 l b m chng trnh PC v con tr d liu
APTR. Tm quan trng v cch s dng chng c trnh by mc 2.3. Thanh ghi
DPTR c s dng truy cp d liu v c lm k chng 5 khi ni v cc
ch nh a ch.

2.2 Gii thiu v lp trnh hp ng 8051.

Trong phn ny chng ta bn v dng thc ca hp ng v nh ngha mt s thut


ng s dng rng ri gn lin vi lp trnh hp ng.

CPU ch c th lm vic vi cc s nh phn v c th chy vi tc rt cao. Tuy


nhin, tht l ngn ngm v chm chp i vi con ngi phi lm vic vi cc s 0
v 1 lp trnh cho my tnh. Mt chng trnh cha cc s 0 v 1 c gi l ngn
ng my.
Trong nhng ngy u ca my tnh, cc lp trnh vin phi vit m chng trnh
di dng ngn ng my. Mc d h thng thp lc phn (s Hex) c s dng
nh mt cch hiu qu hn biu din cc s nh phn th qu trnh lm vic vi
m my vn cn l cng vic cng knh i vi con ngi. Cui cng, cc ngun
ng hp ng c pht, cung cp cc t gi nh cho cc lnh m my cng vi
nhng c tnh khc gip cho vic lp trnh nhanh hn v t mc li hn. Thut ng
t gi nh (mnemonic) thng xuyn s dng trong ti liu khoa hc v k thut
my tnh tham chiu cho cc m v t rt gn tng i d nh, cc chng trnh
hp ng phi c dch ra thanh m my bng mt chng trnh c l trnh hp
ng (hp dch). Hp ng c coi nh l mt ngng ng bc thp v n giao tip trc
tip vi cu trc bn trong ca CPU. lp trnh trong hp ng, lp trnh vin phi
bit tt c cc thanh ghi ca CPU v kch thc ca chng cng nh cc chi tit
khc.
Ngy nay, ta c th s dng nhiu ngn ng lp trnh khc nhau, chng hn nh
Basic, Pascal, C, C++, Java v v s ngn ng khc. Cc ngn ng ny c coi l
nhng ngn ng bc cao v lp trnh vin khng cn phi tng tc vi cc chi tit
bn trong ca CPU. Mt trnh hp dch c dng dch chng trnh hp ng ra
m my cn (cn i khi cng cn c gi m i tng (Object Code) hay m
lnh Opcode), cn cc ngn ng bc cao c dch thnh cc ngn ng m my
bng mt chng trnh gi l trnh bin dch. V d, vit mt chng trnh trong C
ta phi s dng mt trnh bin dch C dch chng trnh v dng m my. By gi
ta xt dng thc hp ng ca 8051 v s dng trnh hp dch to ra mt chng
trnh sn sng chy ngay c.
2.2.1

Cu trc ca hp ng.

Mt chng trnh hp ng bao gm mt chui cc dng lnh hp ng. Mt lnh hp


ng c cha mt t gi nh (mnemonic) v tuy theo tng lnh v sau n c mt hoc
hai ton hng. Cc ton hng l cc d liu cn c thao tc v cc t gi nh l cc
lnh i vi CPU ni n lm g vi cc d liu.
ORG 0H
; Bt u (origin) ti ngn nh 0
MOV R5, #25H
; Np 25H vo R5
MOV R7, #34H
; Np 34H vo R7
MOV A, #0
; Np 0 vo thanh ghi A
ADD A, R5
; Cng ni dng R5 vo A (A = A + R5)
ADD A, R7
; Cng ni dung R7 vo A (A = A + R7)
ADD A, #121H
; Cng gi tr 12H vo A (A = A + 12H)
HERE: SJMP HERE
; li trong vng lp ny
END
; Kt thc tp ngun hp ng
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:
1. Trng nhn cho php chng trnh tham chiu n mt dng lnh bng tn. N
khng c vit qu mt s k t nht nh. Hy kim tra quy nh ny ca hp ng
m ta s dng.
2. T gi nh (lnh) v cc ton hng l cc trng kt hp vi nhau thc thi cng vic
thc t ca chng trnh v hon thin cc nhim v m chng trnh c vit cho
chng. Trong hp ng cc cu lnh nh:

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.

2.3 Hp dch v chy mt chng


trnh 8051.

Nh vy cu trc ca mt chng trnh hp


ng ta c bit, cu hi t ra l chng

myfile.abs
OH
PRAGRAM
myfile.hex

trnh s c to ra v hp dch nh th no v lm th no c th chy c? Cc


bc to ra mt chng trnh hp ng c th chy c l:
1. Trc ht ta s dng m trnh son tho g vo mt chng trnh ging nh
chng trnh 2.1. C nhiu trnh son tho tuyt vi hoc cc b s l t c s
dng to ra v/ hoc son tho chng trnh. Mt trnh son tho c s dng
rng ri l trnh son tho EDIT ca MS-DOS (hoc Noterad ca Windows) u
chy trn h iu hnh Microsoft. Lu rng, trnh son tho phi c kh nng to
ra tp m ASCII. i vi nhiu trnh hp ng th cc tn tp tun theo cc quy c
thng l c DOS, nhng phn m rng ca cc tp ngun phi l asm hay src
tu theo trnh hp ng m ta s dng.
2. Tp ngun c phn m rng asm cha m chng trnh c to ra bc 1 c
np vo trnh hp dch ca 8051. Trnh hp dch chuyn cc lnh ra m my. Trnh
hp dch s to ra mt tp i tng v mt tp lit k vi cc thnh phn m rng
obj v lst tng ng.
3. Cc trnh hp dch yu cu mt bc th ba gi l lin kt. Chng trnh lin kt ly
mt hoc nhiu tp i tng v to ra mt tp i tng tuyt i vi thnh phn
m rng abs. Tp abs ny c s dng bi thng cha ca 8051 c mt
chng trnh gim st.
4. K sau tp abs c np vo mt chng trnh c gi l 0H (chuyn i
tng object v dng s Hex) to ra mt tp vi ui m rng Hex c th np
tt vo trong ROM. Chng trnh ny c trong tt c mi trnh hp ng ca 8051
cc trnh hp ng da trn Windows hin nay kt hp cc bc 2 n 4 vo thnh
mt bc.
Hnh 2.2: Cc bc to ra mt chng trnh.
2.3.1

Ni thm v cc tp .asm v .object.

2.3.2

Tp lit k .lst.

Tp .asm cng c gi l tp ngun v chnh v l do ny m mt s trnh hp


ng i hi tp ny phi c mt phn m rng src t ch source l ngun. Hy
kim tra hp ng 8051 m ta s dng xem n c i hi nh vy khng? Nh ta ni
trc y tp ny c to ra nh mt trnh bin tp chng hn nh Edit ca DOS
hoc Notepad ca Windows. Hp ng ca 8051 chuyn i cc tp hp ng trong
tp .asm thnh ngn ng m my v cung cp tp i tng .object. Ngoi vic to ra
tp i tng trnh hp ng cng cho ra tp lit k lst (List file).
Tp lit k l mt tu chn, n rt hu ch cho lp trnh vin v n lit k tt c mi
m lnh v a ch cng nh tt c cc li m trnh hp ng pht hin ra. Nhiu trnh
hp ng gi thit rng, tp lit k l khng cn thit tr khi ta bo rng ta mun to
ra n. Tp ny c th c truy cp bng mt trnh bin dch nh Edit ca DOS hoc
Notepad ca Window v c hin th trn mn hnh hoc c gi ra my in. Lp
trnh vin s dng tp lit k tm cc li c php. Ch sau khi sa ht cc li
c nh du trong tp lit k th tp i tng mi sn sng lm u vo cho
chng trnh lin kt.
1 0000
ORG 0H
; Bt u a ch 0
2 0000 7D25
MOV R5, #25H
; Np gi tr 25H vo R5
3 0002 7F34
MOV R7, #34H
; Np gi tr 34H vo R7
4 0004 7400
MOV A, #0
; Np 0 vo A (xo A)
5 0006 2D
ADD A, R5
; Cng ni dung R5 vo A (A = A + R5)
6 0007 2F
ADD A, R7
; Cng ni dung R7 vo A (A = A + R7)
7 0008 2412
ADD A, #12H
; Cng gi tr 12H vo A (A = A + 12H)

8 00A BCEF HERE: SJMP HERE


9 000C
END

; li vng lp ny
; Kt thc tp .asm

Chng trnh 2.2: Tp lit k.

2.4 B m chng trnh v khng gian ROM trong 8051.

2.4.1

B m chng trnh trong 8051.

2.4.2

a ch bt u khi 8051 c cp ngun.

2.4.3

t m vo ROM chng trnh.

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:

You might also like