You are on page 1of 12

!

"#$% '
Cc lenh nhay, vng lap v lenh goi

Trong mot chuoi lenh can thuc hien thung c nhu can can chuyen dieu khien
chuong trnh den mot vi tr khc. C nhieu lenh de thuc hien dieu ny trong 8051, o
chuong ny ta s tm hieu cc lenh chuyen dieu khien c trong hop ng cua 8051
nhu cc lenh su dung cho vng lap, cc lenh nhay c v khong c dieu khien, lenh
goi v cuoi cng l mo ta ve mot chuong trnh con gi cham thi gian.
3.1 Vng lap v cc lenh nhay.
3.1.1 Tao vng lap trong 8051.
Qa trnh lap lai mot chuoi cc lenh vi mot so lan nhat dinh duoc goi l vng
lap. Vng lap l mot trong nhng hoat dong duoc su dung rong ri nhat m bat ky bo
vi su l no deu thuc hien. Trong 8051 th hoat dong vng lap duoc thuc hien boi
lenh 'DJNZ thanh ghi, nhn. Trong lenh ny thanh ghi duoc giam xuong, neu n
khong bang khong th n nhay den dia chi dch duoc tham chieu boi nhn. Truc khi
bat dau vng lap th thanh ghi duoc nap vi bo dem cho so lan lap lai. Luu rang,
trong lenh ny viec giam thanh ghi v quyet dinh de nhay duoc ket hop vo trong
mot lenh don.
V du 3.1:
Viet mot chuong trnh de: a) xo ACC v sau d b) cong 3 vo ACC 10 lan.
Li giai:
!"# $% &' ( )*+ $,,% $ - '
!"# ./% &0' ( 123 45 678 ./ - 0'
9$,:; $<< $% &0' ( ,5=> '? @A* $,,
<B1C ./% $D$E1 ( FG3 H2I JK* 67= LKI ./ - ' M0' HN=O
!"# .P% $ ( ,QR $ @A* RKS=K >KI .P

Trong chuong trnh tren day thanh ghi R2 duoc su dung nhu l bo dem. Bo
dem lc dau duoc dat bang 10. Moi lan lap lai lenh DJNZ giam R2 khong bang 0 th
n nhay den dia chi dch gan vi nhn 'AGAIN. oat dong lap lai ny tiep tuc cho
den khi R2 tro ve khong. Sau khi R2 = 0 n thot khoi vng lap v thuc hien dng
ngay dui n trong trung hop ny l lenh 'MOV R5, A.
Luu rang trong lenh DJNZ th cc thanh ghi c the l bat ky thanh ghi no
trong cc thanh ghi R0 - R7. Bo dem cng c the l mot ngan nh trong RAM nhu ta
s thay o chuong 5.
V du 3.2:
So lan cuc dai m vng lap o v du 3.1 c the lap lai l bao nhieu?
Li giai:
V thanh ghi R2 cha so dem v n l thanh ghi 8 bit nen n c the cha duoc
gi tri cuc dai l FF hay 155. Do vay so lan lap lai cuc dai m vng lap o v du 3.1
c the thuc hien l 256.
3.2.1 Vng lap ben trong mot vng lap.
Nhu trnh by o v du 3.2 so dem cuc dai l 256. Vay dieu g xay ra neu ta
muon lap mot hnh dong nhieu hon 256 lan? e lm dieu d th ta su dung mot vng
lap ben trong mot vng lap duoc goi l vng lap long (Nested Loop). Trong mot
vng lap long ta su dung 2 thanh ghi de gi so dem. Xt v du 3.3 dui day.
V du 3.3:
y viet mot chuong trnh a) nap thanh ghi ACC vi gi tri 55 v b) b
ACC 700 lan.
Li giai:
V 700 ln hon 256 (l so cuc dai m mot thanh ghi v the cha duoc) nen ta
phai dng hai thanh ghi de cha so dem. oan m dui day trnh by cch su dung
hai thanh ghi R2 v R3 de cha so dem.

!"# $% &PPT ( 123 $ - PPT
!"# .?% &0' ( 123 .? - 0' UV 678 @W=> HG3 =>*AI
1X)Y; !"# ./% &Z' ( 123 ./ - Z' UV 678 @W=> HG3 R[*=>
$D$E1; \ ,]F $ ( 9^ RKS=K >KI $
<B1C ./% $D$E1 ( FG3 H2I Z' HN= M@W=> HG3 R[*=>O
<B1C .?% 1X)Y

Trong chuong trnh ny thanh ghi R2 duoc dng de cha so dem vng lap
trong. Trong lenh 'DJNZ R2, AGAIN th moi khi R2 = 0 n di thang xuong v lenh
'JNZ R3, NEXT duoc thuc hien. Lenh ny p CPU nap R2 vi so dem 70 v vng
lap trong khi bat dau lai qu trnh ny tiep tuc cho den khi R3 tro ve khong v vng
lap ngoi ket thc.
3.1.3 Cc lenh nhay c dieu kien.
Cc lenh nhay c dieu kien doi vi 8051 duoc tong hop trong bang 3.1. Cc
chi tiet ve moi lenh duoc cho trong phu luc AppendixA. Trong bang 3.1 luu rang
mot so lenh nhu JZ (nhay neu A = 0) v JC (nhay neu c nh) chi nhay neu mot dieu
kien nhat dinh duoc thoa mn. Ke tiep ta xt mot so lenh nhay c dieu kien vi cc
V du minh hoa sau.
a- Lenh JZ (nhay neu A = 0). Trong lenh ny noi dung cua thanh ghi A duoc kiem
tra. Neu n bang khong th n nhay den dia chi dch. V du xt doan m sau:

!"# $% .' ( 123 >I+ R[_ J`S .' @A* $
BC "#X. ( 1Kab 67= "#X. =7c $ - '
!"# $% .0 ( 123 >I+ R[_ J`S .0 @A* $
BC "#X. ( 1Kab 67= "#X. =7c $ - '
"#X. ddd

Trong chuong trnh ny neu R0 hoac R1 c gi tri bang 0 th n nhay den dia
chi c nhn OVER. Luu rang lenh JZ chi c the duoc su dung doi vi thanh ghi A.
N chi c the kiem tra xem thanh ghi A c bang khong khong v n khong p dung
cho bat ky thanh ghi no khc. Quan trong hon l ta khong phai thuc hien mot lenh
so hoc no nhu dem giam de su dung lenh JNZ nhu o v du 3.4 dui day.
V du 3.4:
Viet mot chuong trnh de xc dinh xem R5 c cha gi tri 0 khong? Neu nap
th n cho gi tri 55.
Li giai:

!"# $% .P ( eS* =5I fc=> .P @A* $
B1C 1X)Y ( 1Kab 67= 1X)Y =7c $ LKg=> 4h=> '
!"# .P% &PPT (
1X)Y; ddd

b- Lenh JNC (nhay neu khong c nh, c CY = 0).
Trong lenh ny th bit c nh trong thanh ghi c PSW duoc dng de thuc hien
quyet dinh nhay. Khi thuc hien lenh 'JNC nhn th bo xu l kiem tra c nh xem n
c duoc bat khong (CY = 1). Neu n khong bat th CPU bat dau nap v thuc hien cc
lenh t dia chi cua nhn. Neu c CY = 1 th n s khong nhay v thuc hien lenh ke
tiep dui JNC.
Can phai luu rang cng c lenh 'JC nhn. Trong lenh JC th neu CY = 1 n
nhay den dia chi dch l nhn. Ta s xt cc v du ve cc lenh ny trong cc ng
dung o cc chuong sau.
Ngoi ra cn c lenh JB (nhay neu bit c mc cao) v JNB (nhay neu bit c
mc thap). Cc lenh ny duoc trnh by o chuong 4 v 8 khi ni ve thao tc bit.
Bang 3.1: Cc lenh nhay c dieu kien.

Lnh Hot ng
BC 1Kab =7c $ - '
B1C 1Kab =7c $ i '
<B1C DIa8 @A =Kab =7c $ - '
,B1X $% 4bRj 1Kab =7c $ i 4bRj
,B1X [j% & fSRS 1Kab =7c 9bRj i fSRS
B, 1Kab =7c ,k - 0
B1, 1Kab =7c ,k - '
B9 1Kab =7c 4IR - 0
B19 1Kab =7c 4IR - '
B9, 1Kab =7c 4IR - 0 @A l*+ =m

V du 3.5:
y tm tong cua cc gi tri 79, F5 v E2. at vo trong cc thanh ghi
R0 (byte thap) v R5 (byte cao).
Li giai:

!"# $% &' ( )*+ RKS=K >KI $ - '
!"# .P% $ ( )*+ .P
$<< $ &ZnT ( ,5=> ZnT @A* $ M$ - ' o ZnT - ZnTO
B1, 1p0 ( 17c LKg=> Jm =Kq J5=> L7 RI73
E1, .P ( 17c ,k - 0% Rr=> .P

1p0; $<< $% &'sPT ( ,5=> sPT @A* $ M$ - ZnT o sPT - tXTO @A ,k - 0
B1, 1p/ ( 1Kab =7c ,k - '
E1, .P ( 17c ,k - 0 Rr=> .P M.P - 0O
1p/; $<< $% &'X/T ( ,5=> X/T @A* $ M$ - DX o X/ - P'O @A ,k - 0
B1, "#X. ( 1Kab =7c ,k - '
E1, .P ( 17c ,k - 0 Rr=> .P
"#X.; !"# .'% $ ( 9ub >Iv .' - P'T @A .P - '/

c- Tat ca cc lenh nhay c dieu kien deu l nhng php nhay ngan.
Can phai luu rang tat ca cc lenh nhay c dieu kien deu l cc php nhay
ngan, c nghia l dia chi cua dch deu phai nam trong khoang -127 den +127 byte
cua noi dung bo dem chuong trnh PC.
3.1.4 Cc lenh nhay khong dieu kien.
Lenh nhay khong dieu kien l mot php nhay trong d dieu khien duoc truyen
khong dieu kien den dia chi dch. Trong 8051 c hai lenh nhay khong dieu kien d
l: LJMP - nhay xa v SJMP - nhay gan.
a- Nhay xa LJMP:
Nhay xa LJMP l mot lenh 3 byte trong d byte dau tien l m lenh cn hai
byte cn lai l dia chi 16 bit cua dch. ia chi dch 02 byte c php mot php nhay
den bat ky vi tr nh no trong khoang 0000 - FFFF.
y nh rang, mac d bo dem chuong trnh trong 8051 l 16 bit, do vay cho
khong gian dia chi l 64k byte, nhung bo nh chuong trnh ROM tren chp ln nhu
vay. 8051 dau tien chi c 4k byte ROM tren chp cho khong gian chuong trnh, do
vay moi byte deu rat qu gi. V l do d m c ca lenh nhay gan SJMP chi c 2
byte so vi lenh nhay xa LZ0MP di 3 byte. ieu ny c the tiet kiem duoc mot so
byte bo nh trong rat nhieu ng dung m khong gian bo nh c han hep.
b- Lenh nhay gom SJMP.
Trong 2 byte ny th byte dau tien l m lenh v byte th hai l chi tuong doi
cua dia chi dch. ch chi tuong doi trong pham vi 00 - FF duoc chia thnh cc
lenh nhay ti v nhay li: Nghia l -128 den +127 byte cua bo nh tuong doi so vi
dia chi hien thi cua bo dem chuong trnh. Neu l lenh nhay ti th dia chi dch c
the nam trong khoang 127 byte t gi tri hien thi cua bo dem chuong trnh. Neu dia
chi dch o pha sau th n c the nam trong khoang -128 byte t gi tri hien hnh cua
PC.
3.1.5 Tnh ton dia ch lenh nhay gan.
Ngoi lenh nhay gan SJMP th tat ca moi lenh nhay c dieu kien nhu JNC, JZ
v DJNZ deu l cc lenh nhay gan boi mot thuc te l chng deu lenh 2 byte. Trong
nhng lenh ny th byte th nhat deu l m lenh, cn byte th hai l dia chi tuong
doi. ia chi dch l tuong doi so vi gi tri cua bo dem chuong trnh. e tnh ton
dia chi dch byte th hai duoc cong vo thanh ghi PC cua lenh dng ngay sau lenh
nhay. e hieu dieu ny hy xt v du 3.6 dui day.
V du 3.6:
Su dung tep tin liet ke dui day hy kiem tra viec tn ton dia chi nhay ve
truc.

'0 '''' ".D ''''
'/ '''' Zw'' !"# .'% &'
'? '''/ ZxPP !"# $% &PPT
'x '''x t''? BC 1X)Y
'P '''t 'w 1E, .'
't '''Z 'x $D$E1; E1, $
'Z '''w 'x E1, $
'w '''n /xZZ 1X)Y; $<< $% &ZZK
'n '''9 P''P B1, "#X.
0' '''< Xx ,F. $
00 '''X sw !"# .'% $
0/ '''s sn !"# .0% $
0? ''0' s$ !"# ./% $
0x ''00 s9 !"# .?% $
0P ''0/ /9 "#X.; $<< $% .?
0t ''0? P's/ B1, $D$E1
0Z ''0P w'sX TX.X; eB!] eTX.X
0w ''0Z X1<

Li giai:
Truc het luu rang cc lenh JZ v JNC deu l lenh nhay ve truc. ia chi
dch doi vi lenh nhay ve truc duoc tnh ton bang cch cong gi tri PC cua lenh di
ngay sau d vo byte th hai cua lenh nhay gan duoc goi l dia chi tuong doi.
dng 04 lenh 'JZ NEXT c m lenh 60 v ton hang 03 tai dia chi 0004 v 0005.
day 03 l dia chi tuong doi, tuong doi so vi dia chi cua lenh ke tiep l: 'INC R0 v
d l 0006. Bang viec cong 0006 vo 3 th dia chi dch cua nhn NEXT l 0009 duoc
tao ra. Bang cch tuong tu nhu vay doi vi dng 9 th lenh 'JNC OVER c m lenh
v ton hang l 50 v 05 trong d 50 l m lenh v 05 l dia chi tuong doi. Do vay,
05 duoc cong vo OD l dia chi cua lenh 'CLA A dng ngay sau lenh 'JNC
OVER v cho gi tri 12 chnh l dia chi cua nhn OVER.
V du 3.7:
y kiem tra tnh ton dia chi cua cc lenh nhay li trong v du 3.6.
Li giai:
Trong danh sch liet ke chuong trnh d th lenh 'JNC AGAIN c m lenh l
50 v dia chi tuong doi l F2. Khi dia chi tuong doi cua F2 duoc cong vo 15 l
dia chi cua lenh dng dui lenh nhay ta c 15 + F2 = 07 (v phan nh duoc bo
di). e rang 07 l dia chi nhn AGAIN. V hy cng xt lenh 'SJMP ERE c
m lenh 80 v dia chi tuong doi FE gi tri PC cua lenh ke tiep l 0017 duoc cong
vo dia chi tuong doi FE ta nhan duoc 0015 chnh l dia chi nhn ERE (17 +
FE = 15) phan nh duoc bo di). Luu rang FE l -2 v 17h + (-2) = 15. Ve
php cong so am s duoc bn o chuong 6.
3.1.6 Tnh ton dia ch dch nhay li.
Trong khi o trung hop nhay ti th gi tri thay the l mot so duong trong
khoang t 0 den 127 (00 den 7F o dang ex) th doi vi lenh nhay li gi tri thay the
l mot so am nam trong khoang t 0 den -128 nhu duoc giai thch o v du 3.7.
Can phai nhan manh rang, bat luan SJMP nhay ti hay nhay li th doi vi
mot lenh nhay bat ky dia chi cua dia chi dch khong bao gi c the ln hon 0 -128
den +127 byte so vi dia chi gan lien vi lenh dng ngay sau lenh SJMP. Neu c mot
su no luc no vi pham luat ny th hop ng s tao ra mot loi bo rang lenh nhay
ngoi pham vi.
3.2 Cc lenh goi CALL.
Mot lenh chuyen dieu khien khc l lenh CALL duoc dng de goi mot
chuong trnh con. Cc chuong trnh con thung duoc su dung de thuc thi cc cong
viec can phai duoc thuc hien thung xuyen. ieu ny lm cho chuong trnh tro nen
c cau trc hon ngoi viec tiet kiem duoc them khong gian bo nh. Trong 8051 c 2
lenh de goi d l: Goi xa CALL v goi tuyet doi ACALL m quyet dinh su dung
lenh no d phu thuoc vo dia chi dch.
3.2.1 Lenh goi xa LCALL.
Trong lenh 3 byte ny th byte dau tien l m lenh, cn hai byte sau duoc
dng cho dia chi cua chuong trnh con dch. Do vay LCALL c the duoc dng de goi
cc chuong trnh con o bat ky vi tr no trong pham vi 64k byte, khong gian dia chi
cua 8051. e dam bao rang sau khi thuc hien mot chuong trnh duoc goi de 8051
biet duoc cho quay tro ve th n tu dong cat vo ngan xep dia chi cua lenh dng ngay
sau lenh goi LCALL. Khi mot chuong trnh con duoc goi, dieu khien duoc chuyen
den chuong trnh con d v bo xu l cat bo dem chuong trnh PC vo ngan xep v bat
dau nap lenh vo vi tr mi. Sau khi ket thc thuc hien chuong trnh con th lenh tro
ve RET chuyen dieu khien ve cho nguon goi. Moi chuong trnh con can lenh RET
nhu l lenh cuoi cng (xem v du 3.8).
Cc diem sau day can phai duoc luu t v du 3.8.
1. Luu den chuong trnh con DELAY khi thuc hien lenh 'LCALL DELAY
dau tien th dia chi cua lenh ngay ke n l 'MOV A, #0AA duoc day vo
ngan xep v 8051 bat dau thuc hien cc lenh o dia chi 300.
2. Trong chuong trnh con DELAY, lc dau bo dem R5 duoc dat ve gi tri 255
(R5 = FF). Do vay, vng lap duoc lap lai 256 lan. Khi R5 tro ve 0 dieu
khien roi xuong lenh quay tro ve RET m n ko dia chi t ngan xep vo bo
dem chuong trnh v tiep tuc thuc hien lenh sau lenh goi CALL.
V du 3.8:
y viet mot chuong trnh de chot tat ca cc bit cua cong P1 bang cch gui
den n gi tri 55 v AA lien tuc. y dat mot do tre thi gian gia moi lan xuat
d lieu ti cong P1. Chuong trnh ny s duoc su dung de kiem tra cc cong cua
8051 trong chuong tiep theo.
Li giai:
".D ''''
9$,:; !"# $% &PPT ( 123 $ @qI >I+ R[_ PPT
!"# ]0% $ ( DyI PPT 67= Jz=> ]0
F,$FF <XF$k ( Y2* R[{ RKvI >IS=
!"# $% &'$$T ( 123 $ @qI >I+ R[_ $$T
!"# ]0% $ ( DyI $$T 67= Jz=> ]0
F,$FF <XF$k ( DI| JK}8
eB!] 9$,: ( FG3 H2I @g R}=
( pppppppppppppppppp p ~ub HA JK=> R[!=K J*= R2* 65 R[{ RKvI >IS=
".D ?''T ( ~GR JK=> R[!=K J*= R[{ RKvI >IS= " 6_S JK# ?''T
<XF$k; !"# .P% &''T ( 123 45 678 .P - /PPT MKSb ssTO
$D$E1; <B1C .P% $D$E1 ( YI73 R$J JK* 67= LKI .P @% LKg=>
.XY ( Y[a 6I%c LKI&= @% =>c'= >(I MLKI .P - 'O
X1< ( :)R RK*J R+3 RI= J`S K,3 =>|

Luong thi gian tre trong v du 8.3 phuc thuoc vo tan so cua 8051. Cch tnh
chnh xc thi gian s duoc giai thch o chuong 4. Tuy nhien ta c the tang thi gian
do tre bang cch su dung vng lap long nhu chi ra dui day.

<XF$k; ( #W=> HG3 H'=> >I| JK}8
!"# .x% &/PP ( 123 .x - /PP MssT f2=> KjlO
1X)Y; !"# .P% &/PP ( 123 .P - /PP MssT f2=> KjlO
$D$E1; <B1C .P% $D$E1 ( FG3 H2I JK* 67= LKI .Y - '
<B1C .x% 1X)Y ( DIa8 .x
(YI73 R$J =23 .P JK* 67= LKI .x - '
.XY ( Y[" @% MLKI .x - 'O

3.2.2 Lenh goi CALL v vai tr cua ngan xep.
Ngan xep v con tro ngan xep ta s nghien cu o chuong cuoi. e hieu duoc
tam quan trong cua ngan xep trong cc bo vi dieu khien bay gi khao st noi dung
cua ngan xep v con tro ngan xep doi vi v du 8.3. ieu ny duoc trnh by o v du
3.9 dui day.
V du 3.9:
y phan tch noi dung cua ngan xep sau khi thuc hien lenh LCALL dau tien
dui day.

001 0000 OR6
002 0000 7455 BACK: MOV A, #55 : Nap A vi gi tri 55
003 0002 F590 MOV P1, A : Gui 55 ti cong P1
004 0004 120300 LCALL DELAY : Tao tre thi gian
005 0007 74AA MOV A, #0AA : Nap A vi gi tri AA
006 0009 F590 MOV P1, A : Gui AA ti cong P1
007 000B 120300 LCALL DELAY : Tao tre thi gian
008 000E 80F0 SJMP BACK : Tiep tuc thuc hien
009 0010
010 0010 : ..................... ay l chuong trnh con gi cham
011 0300 MOV 300
012 0300 DELAY:
013 0300 7DFF MOV R5, #FF : Nap R5 = 255
014 0302 DDFE AGAIN:DJNZ R5, AGAIN : Dng o day
015 0304 22 RET : Tro ve nguon goi
016 0305 END : Ket thc nap tin hop ng

Li giai:
Khi lenh LCALL dau tien duoc thuc hien th dia chi cua lenh 'MOV A,
#0AA duoc cat vo ngan xep. Luu rang byte thap vo truc v byte cao vo sau.
Lenh cuoi cng cua chuong trnh con duoc goi phai l lenh tro ve RET de chuyen
CPU ko (POP) cc byte tren dinh cua ngan xep vo bo dem chuong trnh PC v tiep
tuc thuc hien lenh tai dia chi 07. So do ben chi ra khung cua ngan xep sau lan goi
LCALL dau tien.

0A
09 00
08 07
SP = 09

3.2.3 Su dung lenh PUSH v POP trong cc chuong trnh con.
Khi goi mot chuong trnh con th ngan xep phai bm duoc vi tr m CPU can
tro ve. Sau khi ket thc chuong trnh con v l do ny chng ta phai can than moi khi
thao tc vi cc noi dung cua ngan xep. Nguyen tac l so lan day vo (PUS) v ko
ra (POP) luon phai ph hop trong bat ky chuong trnh con duoc goi vo. ay ni
cch khc doi vi moi lenh PUS th phai c mot lenh POP. Xem v du 3.10.
3.2.4 Goi cc chuong trnh con.
Trong lap trnh hop ng thung c mot chuong trnh chnh v rat nhieu
chuong trnh con m chng duoc goi t chuong trnh chnh. ieu ny cho php ta tao
mi chuong trnh con trong mot mo-dun rieng biet. Moi mo-dun c the duoc kiem
tra tch biet v sau d duoc ket hop vi nhau cng vi chuong trnh chnh. Quan
trong hon l trong mot chuong trnh ln th cc mo-dun c the duoc phan cho cc lap
trnh vien khc nhau nham rt ngan thi gian pht trien.
V du 3.10:
Phan tch ngan xep doi vi lenh LCALL dau tien trong doan m.

'0 '''' ".D '
'/ '''' ZxPP 9$,:; !"# $% &PPT ( 123 $ @qI >I+ R[_ PPT
'? '''/ sPn' !"# ]0% $ ( DyI PPT [S Jz=> ]0
'x '''x Z,nn !"# .x% &nnT
'P '''t Z<tZ !"# .P% &tZT
't '''w 0/'?'' F,$FF <XF$k ( Y2* >I| JK}8 RKvI >IS=
'Z '''9 Zx$$ !"# $% &'$$T ( 123 $ @qI $$T
'w '''< sPn' !"# ]0% $ ( DyI $$T [S Jz=> ]0
'n '''s 0/'?'' F,$FF <XF$k
0' ''0/ w'X, eB!] 9$,: ( YI73 R$J RK-J KI+=
00 ''0x ( dddddddddddd ~ub HA JK=> R[!=K J*= <XF$k
0/ '?'' ".D ?''T
0? '?'' ,''x <XF$k ].eT x ( ~/b .x @A* =>r= l73
0x '?'/ ,''P ].eT P ( ~/b .P @A* =>r= l73
0P '?'x Z,ss !"# .x% ''sT ( D+= .x - ssT
0t '?'t Z<ss 1X)Y; !"# .P% &''sT ( D+= .P - /PP
0Z '?'w <<sX $D$E1; <B1C .P% $D$E1
0w '?'$ <,s$ <B1C .x% 1X)Y
0n '?', <''P ]"] P ( :0* 6#=K =>r= l73 @A* .P
/' '?'X <''x ]"] x ( :0* 6#=K =>r= l73 @A* .x
/0 '?0' // .XY ( Y[" @% =>c'= >(I
// '?00 X1< ( :7R RK*J R+3 RI= K,3 =>|

Li giai:
Truc het luu rang doi vi cc lenh PUS v POP ta phai xc dinh dia chi
truc tiep cua thanh ghi duoc day vo, ko ra t ngan xep. Dui day l so do khung
cua ngan xep.

Sau lenh LCALL th nhat Sau lenh PUSH 4 Sau lenh POSH 5
0B 0B 0B 67 R5
0A 0A 99 R4 0A 09 R4
09 00 PC 09 00 PC 09 00 PCL
08 0B PCL 0B 0B PCL 08 0B PCL

Can phai nhan manh rang trong viec su dung LCALL th dia chi dch cua cc
chuong trnh con c the o dau d trong pham vi 64k byte khong gian bo nh cua
8051. ieu ny khong p dung cho tat ca moi lenh goi CALL chang han nhu doi vi
ACALL dui day:
























Hnh 3.1: Chuong trnh chnh hop ng cua 8051 c goi cc chuong trnh con.
3.2.5 Lenh goi tuyet doi ACALL (Absolute call).
Lenh ACALL l lenh 2 byte khc vi lenh LCALL di 3 byte. Do ACALL chi
c 2 byte nen dia chi dch cua chuong trnh con phai nam trong khoang 2k byte dia
chi v chi c 11bit cua 2 byte duoc su dung cho dia chi. Khong c su khc biet no
gia ACALL v LCALL trong khi niem cat bo dem chuong trnh vo ngan xep hay
trong chc nang cua lenh tro ve RET. Su khc nhau duy nhat l dia chi dch cua lenh
LCALL c the nam bat c dau trong pham vi 64k byte khong gian dia chi cua 8051,
cn trong khi d dia chi cua lenh ACALL phai nam trong khoang 2 byte. Trong
nhieu bien the cua 8051 do cc hng cung cap th ROM tren chp chi c 1k byte..
Trong nhng trung hop nhu vay th viec su dung ACALL thay cho LCALL c the
tiet kiem duoc mot so byte bo nh cua khong gian ROM chuong trnh.
V du 3.11:
Mot nh pht trien su dung chp vi dieu khien Atmel AT89C1051 cho mot san
pham. Chp ny chi c 1k byte ROM Flash tren chp. oi trong khi lenh LCALL v
ACALL th lenh no hu ch nhat trong lap trnh cho chp ny.
Li giai:
Lenh ACALL l hu ch hon v n l lenh 2 byte. N tiet kiem mot byte moi
lan goi duoc su dung.
Tat nhien, viec su dung cc lenh gon nhe, chng ta c the lap trnh hieu qua
bang cch c mot hieu biet chi tiet ve tat ca cc lenh duoc ho tro boi bo vi xu l d
cho v su dung chng mot cch khon ngoan. Xt v du 3.12 dui day.
V du 3.12:
y viet lai chuong trnh o v du 3.8 mot cch hieu qua m ban c the:
Li giai:
( !$E1 3[*>[S8 JSHHI=> Uc4[*cRI=jU
".D '
!$E1; F,$FF e.9.p0
F,$FF e.9.p/
F,$FF e.9.p?

TX.X; eB!] !$E1
(ppppppppppppppppp j=f *1 !$E1
(
e.9.p0H ddd
ddd
.XY
( ppppppppppppppppp j=f *1 Uc4[*cRI=jH 0
( e.9.p0H ddd
ddd
.XY
( ppppppppppppppppp j=f *1 Uc4[*cRI=jH /
( e.9.p0H ddd
ddd
.XY
( ppppppppppppppppp j=f *1 Uc4[*cRI=jH ?
X1< ( j=f *1 RKj SU8 1IHj


".D '
!"# $% &PPT ( 123 $@qI >I+ R[_ PPT
9$,:; !"# ]0% $ ( )c2R >I+ R[_ R[*=> $ [S Jz=> ]0
$,$FF <XF$k ( DI| JK}8
,]F $ ( 9^ RKA=K >KI $
eB!] 9$,: ( YI73 R$J RK-J KI+= @g K2=
( pppppppp ~ub HA JK=> R[!=K J*= >I| JK}8 <XF$k
<XF$k;
!"# .P% &'ssT ( 123 .P - /PP MKSb ssTO HA8 JK* 45 678
$D$E1; <B1C .P% $D$E1 ( <3=> " 6ub JK* 67= LKI .P - '
.XY ( Y[" @%
X1< ( :7R RK*J

3.3 Tao v tnh ton thi gian giu cham.
3.3.1 Chu ky my:
oi vi CPU de thuc hien mot lenh th mat mot chu ky dong ho ny duoc coi
nhu cc chu ky my. Phu luc AppendixA.2 cung cap danh sch liet ke cc lenh 8051
v cc chu ky my cua chng. e tnh ton mot do tre thi gian, ta su dung danh
sch liet ke ny. Trong ho 8051 th do di cua chu ky my phu thuoc vo tan so cua
bo dao dong thach anh duoc noi vo he thong 8051. Bo dao dong thach anh cng vi
mach dien tren chip cung cap xung dong ho cho CPU cua 8051 (xem chuong 4). Tan
so cua tinh the thach anh duoc noi ti ho 8051 dao dong trong khoang 4Mz den 30
Mz phu thuoc vo toc do chp v nh san xuat. Thung xuyen nhat l bo dao dong
thach anh tan so 10.0592Mz duoc su dung de lm cho he 8051 tuong thch vi
cong noi tiep cua PC IBM (xem chuong 10). Trong 8051, mot chu ky my ko di 12
chu ky dao dong. Do vay, de tnh ton chu ky my ta lay 1/12 cua tan so tinh the
thach anh, sau d lay gi tri nghich dao nhu chi ra trong v du 3.13.
V du 3.13:
oan m dui day trnh by tan so thach anh cho 3 he thong dua tren 8051
khc nhau. y tm chu ky my cua moi trung hop: a) 11.0592Mz b) 16Mz v
c) 20Mz.
Li giai:
a) 11.0592/12 = 921.6kz: Chu ky my l 1/921.6kz = 1.085ms (micro giay)
b) 16Mz/12 = 1.333Mz: Chu ky my MC = 1/1.333Mz = 0.75ms
c) 20Mz/12 = 1.66Mz MC = 1/1.66Mz = 0.60ms
V du 3.14:
oi vi mot he thong 8051 c 11.0592Mz hy tm thi gian can thiet de
thuc hien cc lenh sau day.

SO !"# .?% &PP 4O <X, .? JO <B1C ./ 64JK
fO FB!] jO eB!] 1O 1"] >O !.F $9

Li giai:
Chu ky my cho he thong 8051 c tan so dong ho l 11.0592Mz L 1.085ms
nhu d tnh o v du 3.13. Bang A-1 trong phu luc Appendix A trnh by so chu ky
my doi vi cc lenh tren. Vay ta c:



Lnh Chu k my Thi gian thc hin
MSO !"# .?% &PP 0 0 0d'wP mU - 0d'wP mU
M4O <X, .? 0 0 0d'wP mU - 0d'wP mU
MJO <B1C ./% RS[>jR / / 0d'wP mU - /d0Z mU
MfO FB!] / / 0d'wP mU - /d0Z mU
MjO eB!] / / 0d'wP mU - /d0Z mU
M1O 1"] 0 0 0d'wP mU - 0d'wP mU
M>O !.F $9 x x 0d'wP mU - xd?x mU

3.3.2 Tnh ton do tre.
Nhu d trnh by o tren day, mot chuong trnh con gi cham gom c hai
phan: (1) thiet lap bo dem v (2) mot vng lap. au het thi gian gi cham duoc thuc
hien boi than vng lap nhu trnh by o v du 3.15.
V du 3.15:
y tm kch thuc cua thi gian gi cham trong chuong trnh sau, neu tan so
giao dong thach anh l 11.0592Mz.

!"# $% &PPT
$D$E1; !"# ]0% $
$,$FF <XF$k
,]F $
eB!] $D$E1
( pppppppp YI8j fjHSb
<XF$k; !"# .?% &/''
TX.X ; <B1C .?% TX.X
.XY

Li giai:
T bang A-1 cua phu luc Appendix A ta c cc chu ky my sao cho cc lenh
cua chuong trnh con gi cham l:

<XF$k; !"# .?% &/'' 0
TX.X ; <B1C .?% TX.X /
.XY 0

Do vay tong thi gian gi cham l [(200 2) + 1 + 1] 1.085 = 436.17ms.
Thong thung ta tnh thi gian gi cham dua tren cc lenh ben trong vng lap
v bo qua cc chu ky dong ho lien quan vi cc lenh o ngoi vng lap.
Trong v du 3.15 gi tri ln nhat m R3 c the cha l 255, do vay mot cch
tang do tre l su dung lenh UOP (khong lm g) trong vng lap de tieu ton thi gian
mot cch don gian. ieu ny duoc chi ra trong v du 3.16 dui day.
V du 3.16:
y tm do tre thi gian cho chuong trnh con sau. Gia thiet tan so dao dong
thach anh l 11.0592Mz.


S chu k my
<XF$k; !"# .?% &/P' 0

TX.X ; 1"] 0
1"] 0
1"] 0
1"] 0
<B1C .?% TX.X /

.XY 0

Li giai:
Thi gian tre ben trong vng lap ERE l [250 (1 + 1 + 1 + 1 + 1 + 2)]
1.0851ms = 1627.5ms. Cong them hai lenh ngoi vng lap ta c 1627.5ms 1.085ms
= 1629.67ms.
3.3.3 o tre thi gian cua vng lap trong vng lap.
Mot cch khc de nhan duoc gi tri t do tre ln l su dung mot vng lap ben
trong vng lap v cng duoc goi l vng lap long nhau. Xem v du 3.17 dui day.
V du 3.17:
oi vi mot chu ky my 1.085ms hy tnh thi gian gi cham trong chuong
trnh con sau:

<XF$k; chu k my
!"# ./% &/'' 0
$D$E1; !"# .?% &/P' 0
TX.X; 1"] 0
1"] 0
<B1C .?% TX.X /
<B1C ./% $D$E1 /
.XY 0

Li giai:
oi vi vng lap ERE ta c (4 250) 1.085ms = 1085ms. Vng lap
AGAIN lap vng lap ERE 200 lan, do vay thi gian tre l 200 1085ms 217000ms,
nen ta khong tnh tong ph. Tuy nhien, cc lenh 'MOV R3, #250 v 'DJNZ R2,
AGAIN o dau v cuoi vng lap AGAIN cong (3 200 1.085ms) = 651ms vo thi
gian tre v ket qua ta c 217000 + 651 = 217651ms = 217.651 miligiay cho tong thi
gian tre lien quan den chuong trnh con gi cham DELAY ni tren. Luu rang,
trong trung hop vng lap long nhau cng nhu trong moi vng lap gi cham khc
thi gian xap xi gan dng v ta bo qua cc lenh dau v cuoi trong chuong trnh con.

You might also like