Chương 3 - Các lệnh nhảy, vòng lặp và lệnh gọi

Chia sẻ: minhtin911

Trong một chuỗi lệnh cần thực hiện thờng có nhu cần cần chuyển điều khiển ch ơng trình đến một vị trí khác. Có nhiều lệnh để thực hiện điều này trong 8051, ở ch ơng này ta sẽ tìm hiểu các lệnh chuyển điều khiển có trong hợp ngữ của 8051 nhc ác lệnh sử dụng cho vòng lặp, các lệnh nhảy có và không có điều khiển, lệnh gọi và cuối cùng là mô tả về một ch ơng trình con giữ chậm thời gian....

Bạn đang xem 7 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

Nội dung Text: Chương 3 - Các lệnh nhảy, vòng lặp và lệnh gọi

ch­¬ng 3
C¸c lÖnh nh¶y, vßng lÆp vµ lÖnh gäi
Trong mét chuçi lÖnh cÇn thùc hiÖn th­êng cã nhu cÇn cÇn chuyÓn ®iÒu khiÓn
ch­¬ng tr×nh ®Õn mét vÞ trÝ kh¸c. Cã nhiÒu lÖnh ®Ó thùc hiÖn ®iÒu nµy trong 8051, ë
ch­¬ng nµy ta sÏ t×m hiÓu c¸c lÖnh chuyÓn ®iÒu khiÓn cã trong hîp ng÷ cña 8051
nh­ c¸c lÖnh sö dông cho vßng lÆp, c¸c lÖnh nh¶y cã vµ kh«ng cã ®iÒu khiÓn, lÖnh
gäi vµ cuèi cïng lµ m« t¶ vÒ mét ch­¬ng tr×nh con gi÷ chËm thêi gian.
3.1 Vßng lÆp vµ c¸c lÖnh nh¶y.
3.1.1 T¹o vßng lÆp trong 8051.
Qóa tr×nh lÆp l¹i mét chuçi c¸c lÖnh víi mét sè lÇn nhÊt ®Þnh ®­îc gäi lµ vßng
lÆp. Vßng lÆp lµ mét trong nh÷ng ho¹t ®éng ®­îc sö dông réng r·i nhÊt mµ bÊt kú bé
vi sö lý nµo ®Òu thùc hiÖn. Trong 8051 th× ho¹t ®éng vßng lÆp ®­îc thùc hiÖn bëi
lÖnh “DJNZ thanh ghi, nh·n”. Trong lÖnh nµy thanh ghi ®­îc gi¶m xuèng, nÕu nã
kh«ng b»ng kh«ng th× nã nh¶y ®Õn ®Þa chØ ®Ých ®­îc tham chiÕu bëi nh·n. Tr­íc khi
b¾t ®Çu vßng lÆp th× thanh ghi ®­îc n¹p víi bé ®Õm cho sè lÇn lÆp l¹i. L­u ý r»ng,
trong lÖnh nµy viÖc gi¶m thanh ghi vµ quyÕt ®Þnh ®Ó nh¶y ®­îc kÕt hîp vµo trong
mét lÖnh ®¬n.
VÝ dô 3.1:
ViÕt mét ch­¬ng tr×nh ®Ó: a) xo¸ ACC vµ sau ®ã b) céng 3 vµo ACC 10 lÇn.
Lêi gi¶i:
MOV A, #0 ; Xo¸ ACC, A = 0
MOV R2, #10 ; N¹p bé ®Õm R2 = 10
BACK: ADD A, #10 ; Céng 03 vµo ACC
DJNZ R2, AGAIN ; LÆp l¹i cho ®Õn khi R2 = 0 (10 lÇn)
MOV R5, A ; C¾t A vµo thanh ghi R5

Trong ch­¬ng tr×nh trªn ®©y thanh ghi R2 ®­îc sö dông nh­ lµ bé ®Õm. Bé
®Õm lóc ®Çu ®­îc ®Æt b»ng 10. Mçi lÇn lÆp l¹i lÖnh DJNZ gi¶m R2 kh«ng b»ng 0 th×
nã nh¶y ®Õn ®Þa chØ ®Ých g¾n víi nh·n “AGAIN”. Ho¹t ®éng lÆp l¹i nµy tiÕp tôc cho
®Õn khi R2 trë vÒ kh«ng. Sau khi R2 = 0 nã tho¸t khái vßng lÆp vµ thùc hiÖn ®øng
ngay d­íi nã trong tr­êng hîp nµy lµ lÖnh “MOV R5, A”.
L­u ý r»ng trong lÖnh DJNZ th× c¸c thanh ghi cã thÓ lµ bÊt kú thanh ghi nµo
trong c¸c thanh ghi R0 - R7. Bé ®Õm còng cã thÓ lµ mét ng¨n nhí trong RAM nh­ ta
sÏ thÊy ë ch­¬ng 5.
VÝ dô 3.2:
Sè lÇn cùc ®¹i mµ vßng lÆp ë vÝ dô 3.1 cã thÓ lÆp l¹i lµ bao nhiªu?
Lêi gi¶i:
V× thanh ghi R2 chøa sè ®Õm vµ nã lµ thanh ghi 8 bit nªn nã cã thÓ chøa ®­îc
gi¸ trÞ cùc ®¹i lµ FFH hay 155. Do vËy sè lÇn lÆp l¹i cùc ®¹i mµ vßng lÆp ë vÝ dô 3.1
cã thÓ thùc hiÖn lµ 256.
3.2.1 Vßng lÆp bÒn trong mét vßng lÆp.
Nh­ tr×nh bµy ë vÝ dô 3.2 sè ®Õm cùc ®¹i lµ 256. VËy ®iÒu g× x¶y ra nÕu ta
muèn lÆp mét hµnh ®éng nhiÒu h¬n 256 lÇn? §Ó lµm ®iÒu ®ã th× ta sö dông mét vßng
lÆp bªn trong mét vßng lÆp ®­îc gäi lµ vßng lÆp lång (Nested Loop). Trong mét
vßng lÆp lång ta sö dông 2 thanh ghi ®Ó gi÷ sè ®Õm. XÐt vÝ dô 3.3 d­íi ®©y.
VÝ dô 3.3:
H·y viÕt mét ch­¬ng tr×nh a) n¹p thanh ghi ACC víi gi¸ trÞ 55H vµ b) bï
ACC 700 lÇn.
Lêi gi¶i:
V× 700 lín h¬n 256 (lµ sè cùc ®¹i mµ mét thanh ghi vã thÓ chøa ®­îc) nªn ta
ph¶i dïng hai thanh ghi ®Ó chøa sè ®Õm. §o¹n m· d­íi ®©y tr×nh bµy c¸ch sö dông
hai thanh ghi R2 vµ R3 ®Ó chøa sè ®Õm.

MOV A, #55H ; N¹p A = 55H
MOV R3, #10 ; N¹p R3 = 10 sè ®Õm vßng lÆp ngoµi
NEXT: MOV R2, #70 ; N¹p R2 = 70 sè ®Õm vßng lÆp trong
AGAIN: ` CPL A ; Bï thanh ghi A
DJNZ R2, AGAIN ; LÆp l¹i 70 lÇn (vßng lÆp trong)
DJNZ R3, NEXT

Trong ch­¬ng tr×nh nµy thanh ghi R2 ®­îc dïng ®Ó chøa sè ®Õm vßng lÆp
trong. Trong lÖnh “DJNZ R2, AGAIN” th× mçi khi R2 = 0 nã ®i th¼ng xuèng vµ lÖnh
“JNZ R3, NEXT” ®­îc thùc hiÖn. LÖnh nµy Ðp CPU n¹p R2 víi sè ®Õm 70 vµ vßng
lÆp trong khi b¾t ®Çu l¹i qu¸ tr×nh nµy tiÕp tôc cho ®Õn khi R3 trë vÒ kh«ng vµ vßng
lÆp ngoµi kÕt thóc.
3.1.3 C¸c lÖnh nh¶y cã ®iÒu kiÖn.
C¸c lÖnh nh¶y cã ®iÒu kiÖn ®èi víi 8051 ®­îc tæng hîp trong b¶ng 3.1. C¸c
chi tiÕt vÒ mçi lÖnh ®­îc cho trong phô lôc AppendixA. Trong b¶ng 3.1 l­u ý r»ng
mét sè lÖnh nh­ JZ (nh¶y nÕu A = 0) vµ JC (nh¶y nÕu cã nhí) chØ nh¶y nÕu mét ®iÒu
kiÖn nhÊt ®Þnh ®­îc tho¶ m·n. KÕ tiÕp ta xÐt mét sè lÖnh nh¶y cã ®iÒu kiÖn víi c¸c
VÝ dô minh ho¹ sau.
a- LÖnh JZ (nh¶y nÕu A = 0). Trong lÖnh nµy néi dung cña thanh ghi A ®­îc kiÓm
tra. NÕu nã b»ng kh«ng th× nã nh¶y ®Õn ®Þa chØ ®Ých. VÝ dô xÐt ®o¹n m· sau:

MOV A, R0 ; N¹p gi¸ trÞ cña R0 vµo A
JZ OVER ; Nh¶y ®Õn OVER nÕu A = 0
MOV A, R1 ; N¹p gi¸ trÞ cña R1 vµo A
JZ OVER ; Nh¶y ®Õn OVER nÕu A = 0
OVER ...

Trong ch­¬ng tr×nh nµy nÕu R0 hoÆc R1 cã gi¸ trÞ b»ng 0 th× nã nh¶y ®Õn ®Þa
chØ cã nh·n OVER. L­u ý r»ng lÖnh JZ chØ cã thÓ ®­îc sö dông ®èi víi thanh ghi A.
Nã chØ cã thÓ kiÓm tra xem thanh ghi A cã b»ng kh«ng kh«ng vµ nã kh«ng ¸p dông
cho bÊt kú thanh ghi nµo kh¸c. Quan träng h¬n lµ ta kh«ng ph¶i thùc hiÖn mét lÖnh
sè häc nµo nh­ ®Õm gi¶m ®Ó sö dông lÖnh JNZ nh­ ë vÝ dô 3.4 d­íi ®©y.
VÝ dô 3.4:
ViÕt mét ch­¬ng tr×nh ®Ó x¸c ®Þnh xem R5 cã chøa gi¸ trÞ 0 kh«ng? NÕu n¹p
th× nã cho gi¸ trÞ 55H.
Lêi gi¶i:

MOV A, R5 ; Sao néi dung R5 vµo A
JNZ NEXT ; Nh¶y ®Õn NEXT nÕu A kh«ng b»ng 0
MOV R5, #55H ;
NEXT: ...

b- LÖnh JNC (nh¶y nÕu kh«ng cã nhí, cê CY = 0).
Trong lÖnh nµy th× bit cê nhí trong thanh ghi cê PSW ®­îc dïng ®Ó thùc hiÖn
quyÕt ®Þnh nh¶y. Khi thùc hiÖn lÖnh “JNC nh·n” th× bé xö lý kiÓm tra cê nhí xem nã
cã ®­îc bËt kh«ng (CY = 1). NÕu nã kh«ng bËt th× CPU b¾t ®Çu n¹p vµ thùc hiÖn c¸c
lÖnh tõ ®Þa chØ cña nh·n. NÕu cê CY = 1 th× nã sÏ kh«ng nh¶y vµ thùc hiÖn lÖnh kÕ
tiÕp d­íi JNC.
CÇn ph¶i l­u ý r»ng còng cã lÖnh “JC nh·n”. Trong lÖnh JC th× nÕu CY = 1 nã
nh¶y ®Õn ®Þa chØ ®Ých lµ nh·n. Ta sÏ xÐt c¸c vÝ dô vÒ c¸c lÖnh nµy trong c¸c øng
dông ë c¸c ch­¬ng sau.
Ngoµi ra cßn cã lÖnh JB (nh¶y nÕu bit cã møc cao) vµ JNB (nh¶y nÕu bit cã
møc thÊp). C¸c lÖnh nµy ®­îc tr×nh bµy ë ch­¬ng 4 vµ 8 khi nãi vÒ thao t¸c bit.
B¶ng 3.1: C¸c lÖnh nh¶y cã ®iÒu kiÖn.

LÖnh Ho¹t ®éng
JZ Nh¶y nÕu A = 0
JNZ Nh¶y nÕu A 0
DJNZ Gi¶m vµ nh¶y nÕu A = 0
CJNE A, byte Nh¶y nÕu A byte
CJNE re, # data Nh¶y nÕu Byte data
JC Nh¶y nÕu CY = 1
JNC Nh¶y nÕu CY = 0
JB Nh¶y nÕu bit = 1
JNB Nh¶y nÕu bit = 0
JBC Nh¶y nÕu bit = 1 vµ xo¸ nã

VÝ dô 3.5:
H·y t×m tæng cña c¸c gi¸ trÞ 79H, F5H vµ E2H. §Æt vµo trong c¸c thanh ghi
R0 (byte thÊp) vµ R5 (byte cao).
Lêi gi¶i:

MOV A, #0 ; Xo¸ thanh ghi A = 0
MOV R5, A ; Xo¸ R5
ADD A #79H ; Céng 79H vµo A (A = 0 + 79H = 79H)
JNC N-1 ; NÕu kh«ng cã nhí céng kÕ tiÕp
INC R5 ; NÕu CY = 1, t¨ng R5

N-1: ADD A, #0F5H ; Céng F5H vµo A (A = 79H + F5H = 6EH) vµ CY = 1
JNC N-2 ; Nh¶y nÕu CY = 0
INC R5 ; NÕu CY = 1 t¨ng R5 (R5 = 1)
N-2: ADD A, #0E2H ; Céng E2H vµo A (A = GE + E2 = 50) vµ CY = 1
JNC OVER ; Nh¶y nÕu CY = 0
INC R5 ; NÕu CY = 1 t¨ng R5
OVER: MOV R0, A ; B©y giê R0 = 50H vµ R5 = 02

c- TÊt c¶ c¸c lÖnh nh¶y cã ®iÒu kiÖn ®Òu lµ nh÷ng phÐp nh¶y ng¾n.
CÇn ph¶i l­u ý r»ng tÊt c¶ c¸c lÖnh nh¶y cã ®iÒu kiÖn ®Òu lµ c¸c phÐp nh¶y
ng¾n, cã nghÜa lµ ®Þa chØ cña ®Ých ®Òu ph¶i n»m trong kho¶ng -127 ®Õn +127 byte
cña néi dung bé ®Õm ch­¬ng tr×nh PC.
3.1.4 C¸c lÖnh nh¶y kh«ng ®iÒu kiÖn.
LÖnh nh¶y kh«ng ®iÒu kiÖn lµ mét phÐp nh¶y trong ®ã ®iÒu khiÓn ®­îc truyÒn
kh«ng ®iÒu kiÖn ®Õn ®Þa chØ ®Ých. Trong 8051 cã hai lÖnh nh¶y kh«ng ®iÒu kiÖn ®ã
lµ: LJMP - nh¶y xa vµ SJMP - nh¶y gÇn.
a- Nh¶y xa LJMP:
Nh¶y xa LJMP lµ mét lÖnh 3 byte trong ®ã byte ®Çu tiªn lµ m· lÖnh cßn hai
byte cßn l¹i lµ ®Þa chØ 16 bit cña ®Ých. §Þa chØ ®Ých 02 byte cã phÐp mét phÐp nh¶y
®Õn bÊt kú vÞ trÝ nhí nµo trong kho¶ng 0000 - FFFFH.
H·y nhí r»ng, mÆc dï bé ®Õm ch­¬ng tr×nh trong 8051 lµ 16 bit, do vËy cho
kh«ng gian ®Þa chØ lµ 64k byte, nh­ng bé nhí ch­¬ng tr×nh ROM trªn chÝp lín nh­
vËy. 8051 ®Çu tiªn chØ cã 4k byte ROM trªn chÝp cho kh«ng gian ch­¬ng tr×nh, do
vËy mçi byte ®Òu rÊt quý gi¸. V× lý do ®ã mµ cã c¶ lÖnh nh¶y gÇn SJMP chØ cã 2
byte so víi lÖnh nh¶y xa LZ0MP dµi 3 byte. §iÒu nµy cã thÓ tiÕt kiÖm ®­îc mét sè
byte bé nhí trong rÊt nhiÒu øng dông mµ kh«ng gian bé nhí cã h¹n hÑp.
b- LÖnh nh¶y gåm SJMP.
Trong 2 byte nµy th× byte ®Çu tiªn lµ m· lÖnh vµ byte thø hai lµ chØ t­¬ng ®èi
cña ®Þa chØ ®Ých. §Ých chØ t­¬ng ®èi trong ph¹m vi 00 - FFH ®­îc chia thµnh c¸c
lÖnh nh¶y tíi vµ nh¶y lïi: NghÜa lµ -128 ®Õn +127 byte cña bé nhí t­¬ng ®èi so víi
®Þa chØ hiÖn thêi cña bé ®Õm ch­¬ng tr×nh. NÕu lµ lÖnh nh¶y tíi th× ®Þa chØ ®Ých cã
thÓ n»m trong kho¶ng 127 byte tõ gi¸ trÞ hiÖn thêi cña bé ®Õm ch­¬ng tr×nh. NÕu ®Þa
chØ ®Ých ë phÝa sau th× nã cã thÓ n»m trong kho¶ng -128 byte tõ gi¸ trÞ hiÖn hµnh cña
PC.
3.1.5 TÝnh to¸n ®Þa chØ lÖnh nh¶y gÇn.
Ngoµi lÖnh nh¶y gÇn SJMP th× tÊt c¶ mäi lÖnh nh¶y cã ®iÒu kiÖn nh­ JNC, JZ
vµ DJNZ ®Òu lµ c¸c lÖnh nh¶y gÇn bëi mét thùc tÕ lµ chóng ®Òu lÖnh 2 byte. Trong
nh÷ng lÖnh nµy th× byte thø nhÊt ®Òu lµ m· lÖnh, cßn byte thø hai lµ ®Þa chØ t­¬ng
®èi. §Þa chØ ®Ých lµ t­¬ng ®èi so víi gi¸ trÞ cña bé ®Õm ch­¬ng tr×nh. §Ó tÝnh to¸n
®Þa chØ ®Ých byte thø hai ®­îc céng vµo thanh ghi PC cña lÖnh ®øng ngay sau lÖnh
nh¶y. §Ó hiÓu ®iÒu nµy h·y xÐt vÝ dô 3.6 d­íi ®©y.
VÝ dô 3.6:
Sö dông tÖp tin liÖt kª d­íi ®©y h·y kiÓm tra viÖc tÝn to¸n ®Þa chØ nh¶y vÒ
tr­íc.

01 0000 ORG 0000
02 0000 7800 MOV R0, #0
03 0002 7455 MOV A, #55H
04 0004 6003 JZ NEXT
05 0006 08 NIC R0
06 0007 04 AGAIN: INC A
07 0008 04 INC A
08 0009 2477 NEXT: ADD A, #77h
09 000B 5005 JNC OVER
10 000D E4 CLR A
11 000E F8 MOV R0, A
12 000F F9 MOV R1, A
13 0010 FA MOV R2, A
14 0011 FB MOV R3, A
15 0012 2B OVER: ADD A, R3
16 0013 50F2 JNC AGAIN
17 0015 80FE HERE: SJMP SHERE
18 0017 END

Lêi gi¶i:
Tr­íc hÕt l­u ý r»ng c¸c lÖnh JZ vµ JNC ®Òu lµ lÖnh nh¶y vÒ tr­íc. §Þa chØ
®Ých ®èi víi lÖnh nh¶y vÒ tr­íc ®­îc tÝnh to¸n b»ng c¸ch céng gi¸ trÞ PC cña lÖnh ®i
ngay sau ®ã vµo byte thø hai cña lÖnh nh¶y gÇn ®­îc gäi lµ ®Þa chØ t­¬ng ®èi. ë
dßng 04 lÖnh “JZ NEXT” cã m· lÖnh 60 vµ to¸n h¹ng 03 t¹i ®Þa chØ 0004 vµ 0005. ë
®©y 03 lµ ®Þa chØ t­¬ng ®èi, t­¬ng ®èi so víi ®Þa chØ cña lÖnh kÕ tiÕp lµ: “INC R0” vµ
®ã lµ 0006. B»ng viÖc céng 0006 vµo 3 th× ®Þa chØ ®Ých cña nh·n NEXT lµ 0009 ®­îc
t¹o ra. B»ng c¸ch t­¬ng tù nh­ vËy ®èi víi dßng 9 th× lÖnh “JNC OVER” cã m· lÖnh
vµ to¸n h¹ng lµ 50 vµ 05 trong ®ã 50 lµ m· lÖnh vµ 05 lµ ®Þa chØ t­¬ng ®èi. Do vËy,
05 ®­îc céng vµo OD lµ ®Þa chØ cña lÖnh “CLA A” ®øng ngay sau lÖnh “JNC
OVER” vµ cho gi¸ trÞ 12H chÝnh lµ ®Þa chØ cña nh·n OVER.
VÝ dô 3.7:
H·y kiÓm tra tÝnh to¸n ®Þa chØ cña c¸c lÖnh nh¶y lïi trong vÝ dô 3.6.
Lêi gi¶i:
Trong danh s¸ch liÖt kª ch­¬ng tr×nh ®ã th× lÖnh “JNC AGAIN” cã m· lÖnh lµ
50 vµ ®Þa chØ t­¬ng ®èi lµ F2H. Khi ®Þa chØ t­¬ng ®èi cña F2H ®­îc céng vµo 15H lµ
®Þa chØ cña lÖnh ®øng d­íi lÖnh nh¶y ta cã 15H + F2H = 07 (vµ phÇn nhí ®­îc bá
®i). §Ó ý r»ng 07 lµ ®Þa chØ nh·n AGAIN. Vµ h·y còng xÐt lÖnh “SJMP HERE” cã
m· lÖnh 80 vµ ®Þa chØ t­¬ng ®èi FE gi¸ trÞ PC cña lÖnh kÕ tiÕp lµ 0017H ®­îc céng
vµo ®Þa chØ t­¬ng ®èi FEH ta nhËn ®­îc 0015H chÝnh lµ ®Þa chØ nh·n HERE (17H +
FEH = 15H) phÇn nhí ®­îc bá ®i). L­u ý r»ng FEH lµ -2 vµ 17h + (-2) = 15H. VÒ
phÐp céng sè ©m sÏ ®­îc bµn ë ch­¬ng 6.
3.1.6 TÝnh to¸n ®Þa chØ ®Ých nh¶y lïi.
Trong khi ë tr­êng hîp nh¶y tíi th× gi¸ trÞ thay thÕ lµ mét sè d­¬ng trong
kho¶ng tõ 0 ®Õn 127 (00 ®Õn 7F ë d¹ng Hex) th× ®èi víi lÖnh nh¶y lïi gi¸ trÞ thay thÕ
lµ mét sè ©m n»m trong kho¶ng tõ 0 ®Õn -128 nh­ ®­îc gi¶i thÝch ë vÝ dô 3.7.
CÇn ph¶i nhÊn m¹nh r»ng, bÊt luËn SJMP nh¶y tíi hay nh¶y lïi th× ®èi víi
mét lÖnh nh¶y bÊt kú ®Þa chØ cña ®Þa chØ ®Ých kh«ng bao giê cã thÓ lín h¬n 0 -128
®Õn +127 byte so víi ®Þa chØ g¾n liÒn víi lÖnh ®øng ngay sau lÖnh SJMP. NÕu cã mét
sù nç lùc nµo vi ph¹m luËt nµy th× hîp ng÷ sÏ t¹o ra mét lçi b¸o r»ng lÖnh nh¶y
ngoµi ph¹m vi.
3.2 C¸c lÖnh gäi CALL.
Mét lÖnh chuyÓn ®iÒu khiÓn kh¸c lµ lÖnh CALL ®­îc dïng ®Ó gäi mét
ch­¬ng tr×nh con. C¸c ch­¬ng tr×nh con th­êng ®­îc sö dông ®Ó thùc thi c¸c c«ng
viÖc cÇn ph¶i ®­îc thùc hiÖn th­êng xuyªn. §iÒu nµy lµm cho ch­¬ng tr×nh trë nªn
cã cÊu tróc h¬n ngoµi viÖc tiÕt kiÖm ®­îc thªm kh«ng gian bé nhí. Trong 8051 cã 2
lÖnh ®Ó gäi ®ã lµ: Gäi xa CALL vµ gäi tuyÖt ®èi ACALL mµ quyÕt ®Þnh sö dông
lÖnh nµo ®ã phô thuéc vµo ®Þa chØ ®Ých.
3.2.1 LÖnh gäi xa LCALL.
Trong lÖnh 3 byte nµy th× byte ®Çu tiªn lµ m· lÖnh, cßn hai byte sau ®­îc
dïng cho ®Þa chØ cña ch­¬ng tr×nh con ®Ých. Do vËy LCALL cã thÓ ®­îc dïng ®Ó gäi
c¸c ch­¬ng tr×nh con ë bÊt kú vÞ trÝ nµo trong ph¹m vi 64k byte, kh«ng gian ®Þa chØ
cña 8051. §Ó ®¶m b¶o r»ng sau khi thùc hiÖn mét ch­¬ng tr×nh ®­îc gäi ®Ó 8051
biÕt ®­îc chç quay trë vÒ th× nã tù ®éng cÊt vµo ng¨n xÕp ®Þa chØ cña lÖnh ®øng ngay
sau lÖnh gäi LCALL. Khi mét ch­¬ng tr×nh con ®­îc gäi, ®iÒu khiÓn ®­îc chuyÓn
®Õn ch­¬ng tr×nh con ®ã vµ bé xö lý cÊt bé ®Õm ch­¬ng tr×nh PC vµo ng¨n xÕp vµ b¾t
®Çu n¹p lÖnh vµo vÞ trÝ míi. Sau khi kÕt thóc thùc hiÖn ch­¬ng tr×nh con th× lÖnh trë
vÒ RET chuyÓn ®iÒu khiÓn vÒ cho nguån gäi. Mçi ch­¬ng tr×nh con cÇn lÖnh RET
nh­ lµ lÖnh cuèi cïng (xem vÝ dô 3.8).
C¸c ®iÓm sau ®©y cÇn ph¶i ®­îc l­u ý tõ vÝ dô 3.8.
1. L­u ý ®Õn ch­¬ng tr×nh con DELAY khi thùc hiÖn lÖnh “LCALL DELAY”
®Çu tiªn th× ®Þa chØ cña lÖnh ngay kÕ nã lµ “MOV A, #0AAH” ®­îc ®Èy vµo
ng¨n xÕp vµ 8051 b¾t ®Çu thùc hiÖn c¸c lÖnh ë ®Þa chØ 300H.
2. Trong ch­¬ng tr×nh con DELAY, lóc ®Çu bé ®Õm R5 ®­îc ®Æt vÒ gi¸ trÞ 255
(R5 = FFH). Do vËy, vßng lÆp ®­îc lÆp l¹i 256 lÇn. Khi R5 trë vÒ 0 ®iÒu
khiÓn r¬i xuèng lÖnh quay trë vÒ RET mµ nã kÐo ®Þa chØ tõ ng¨n xÕp vµo bé
®Õm ch­¬ng tr×nh vµ tiÕp tôc thùc hiÖn lÖnh sau lÖnh gäi CALL.
VÝ dô 3.8:
H·y viÕt mét ch­¬ng tr×nh ®Ó chèt tÊt c¶ c¸c bit cña cæng P1 b»ng c¸ch göi
®Õn nã gi¸ trÞ 55H vµ AAH liªn tôc. H·y ®Æt mét ®é trÔ thêi gian gi÷a mçi lÇn xuÊt
d÷ liÖu tíi cæng P1. Ch­¬ng tr×nh nµy sÏ ®­îc sö dông ®Ó kiÓm tra c¸c cæng cña
8051 trong ch­¬ng tiÕp theo.
Lêi gi¶i:
ORG 0000
BACK: MOV A, #55H ; N¹p A víi gi¸ trÞ 55H
MOV P1, A ; Göi 55H ®Õn cæng P1
LCALL DELAY ; T¹o trÔ thêi gian
MOV A, #0AAH ; N¹p A víi gi¸ trÞ AAH
MOV P1, A ; Göi AAH ®Õn cæng P1
LCALL DELAY ; Gi÷ chËm
SJMP BACK ; LÆp l¹i v« tËn
; ------------------ - §©y lµ ch­¬ng tr×nh con t¹o ®é trÔ thêi gian
ORG 300H ; §Æt ch­¬ng tr×nh con trÔ thêi gian ë ®Þa chØ 300H
DELAY: MOV R5, #00H ; N¹p bé ®Õm R5 = 255H (hay FFH)
AGAIN: DJNZ R5, AGAIN ; TiÕp tôc cho ®Õn khi R5 vÒ kh«ng
RET ; Tr¶ ®iÒu khiÓn vÒ nguån gäi (khi R5 = 0)
END ; Kªt thóc tÖp tin cña hîp ng÷

L­îng thêi gian trÔ trong vÝ dô 8.3 phôc thuéc vµo tÇn sè cña 8051. C¸ch tÝnh
chÝnh x¸c thêi gian sÏ ®­îc gi¶i thÝch ë ch­¬ng 4. Tuy nhiªn ta cã thÓ t¨ng thêi gian
®é trÔ b»ng c¸ch sö dông vßng lÆp lång nh­ chØ ra d­íi ®©y.
DELAY: ; Vßng lÆp lång gi÷ chËm
MOV R4, #255 ; N¹p R4 = 255 (FFH d¹ng hex)
NEXT: MOV R5, #255 ; N¹p R5 = 255 (FFH d¹ng hex)
AGAIN: DJNZ R5, AGAIN ; LÆp l¹i cho ®Õn khi RT = 0
DJNZ R4, NEXT ; Gi¶m R4
;TiÕp tôc n¹p R5 cho ®Õn khi R4 = 0
RET ; Trë vÒ (khi R4 = 0)

3.2.2 LÖnh gäi CALL vµ vai trß cña ng¨n xÕp.
Ng¨n xÕp vµ con trá ng¨n xÕp ta sÏ nghiªn cøu ë ch­¬ng cuèi. §Ó hiÓu ®­îc
tÇm quan träng cña ng¨n xÕp trong c¸c bé vi ®iÒu khiÓn b©y giê kh¶o s¸t néi dung
cña ng¨n xÕp vµ con trá ng¨n xÕp ®èi víi vÝ dô 8.3. §iÒu nµy ®­îc tr×nh bµy ë vÝ dô
3.9 d­íi ®©y.
VÝ dô 3.9:
H·y ph©n tÝch néi dung cña ng¨n xÕp sau khi thùc hiÖn lÖnh LCALL ®Çu tiªn
d­íi ®©y.

001 0000 OR6
002 0000 7455 BACK: MOV A, #55H ; N¹p A víi gi¸ trÞ 55H
003 0002 F590 MOV P1, A ; Göi 55H tíi cæng P1
004 0004 120300 LCALL DELAY ; T¹o trÔ thêi gian
005 0007 74AA MOV A, #0AAH ; N¹p A víi gi¸ trÞ AAH
006 0009 F590 MOV P1, A ; Göi AAH tíi cæng P1
007 000B 120300 LCALL DELAY ; T¹o trÔ thêi gian
008 000E 80F0 SJMP BACK ; TiÕp tôc thùc hiÖn
009 0010
010 0010 ; ..................... §©y lµ ch­¬ng tr×nh con gi÷ chËm
011 0300 MOV 300H
012 0300 DELAY:
013 0300 7DFF MOV R5, #FFH ; N¹p R5 = 255
014 0302 DDFE AGAIN:DJNZ R5, AGAIN ; Dõng ë ®©y
015 0304 22 RET ; Trë vÒ nguån gäi
016 0305 END ; KÕt thóc n¹p tin hîp ng÷

Lêi gi¶i:
Khi lÖnh LCALL ®Çu tiªn ®­îc thùc hiÖn th× ®Þa chØ cña lÖnh “MOV A,
#0AAH” ®­îc cÊt vµo ng¨n xÕp. L­u ý r»ng byte thÊp vµo tr­íc vµ byte cao vµo sau.
LÖnh cuèi cïng cña ch­¬ng tr×nh con ®­îc gäi ph¶i lµ lÖnh trë vÒ RET ®Ó chuyÓn
CPU kÐo (POP) c¸c byte trªn ®Ønh cña ng¨n xÕp vµo bé ®Õm ch­¬ng tr×nh PC vµ tiÕp
tôc thùc hiÖn lÖnh t¹i ®Þa chØ 07. S¬ ®å bªn chØ ra khung cña ng¨n xÕp sau lÇn gäi
LCALL ®Çu tiªn.

0A
09 00
08 07
SP = 09

3.2.3 Sö dông lÖnh PUSH vµ POP trong c¸c ch­¬ng tr×nh con.
Khi gäi mét ch­¬ng tr×nh con th× ng¨n xÕp ph¶i b¸m ®­îc vÞ trÝ mµ CPU cÇn
trë vÒ. Sau khi kÕt thóc ch­¬ng tr×nh con v× lý do nµy chóng ta ph¶i cÈn thËn mçi khi
thao t¸c víi c¸c néi dung cña ng¨n xÕp. Nguyªn t¾c lµ sè lÇn ®Èy vµo (PUSH) vµ kÐo
ra (POP) lu«n ph¶i phï hîp trong bÊt kú ch­¬ng tr×nh con ®­îc gäi vµo. Hay nãi
c¸ch kh¸c ®èi víi mçi lÖnh PUSH th× ph¶i cã mét lÖnh POP. Xem vÝ dô 3.10.
3.2.4 Gäi c¸c ch­¬ng tr×nh con.
Trong lËp tr×nh hîp ng÷ th­êng cã mét ch­¬ng tr×nh chÝnh vµ rÊt nhiÒu
ch­¬ng tr×nh con mµ chóng ®­îc gäi tõ ch­¬ng tr×nh chÝnh. §iÒu nµy cho phÐp ta t¹o
míi ch­¬ng tr×nh con trong mét m«-®un riªng biÖt. Mçi m«-®un cã thÓ ®­îc kiÓm
tra t¸ch biÖt vµ sau ®ã ®­îc kÕt hîp víi nhau cïng víi ch­¬ng tr×nh chÝnh. Quan
träng h¬n lµ trong mét ch­¬ng tr×nh lín th× c¸c m«-®un cã thÓ ®­îc ph©n cho c¸c lËp
tr×nh viªn kh¸c nhau nh»m rót ng¾n thêi gian ph¸t triÓn.
VÝ dô 3.10:
Ph©n tÝch ng¨n xÕp ®èi víi lÖnh LCALL ®Çu tiªn trong ®o¹n m·.

01 0000 ORG 0
02 0000 7455 BACK: MOV A, #55H ; N¹p A víi gi¸ trÞ 55H
03 0002 F590 MOV P1, A ; Göi 55H ra cæng P1
04 0004 7C99 MOV R4, #99H
05 0006 7D67 MOV R5, #67H
06 0008 120300 LCALL DELAY ; T¹o gi÷ chËm thêi gian
07 000B 74AA MOV A, #0AAH ; N¹p A víi AAH
08 000D F590 MOV P1, A ; Göi AAH ra cæng P1
09 000F 120300 LCALL DELAY
10 0012 80EC SJMP BACK ; TiÕp tôc thùc hiÖn
11 0014 ; ............ §©y lµ ch­¬ng tr×nh con DELAY
12 0300 ORG 300H
13 0300 C004 DELAY PUSH 4 ; §Èy R4 vµo ng¨n xÕp
14 0302 C005 PUSH 5 ; §Èy R5 vµo ng¨n xÕp
15 0304 7CFF MOV R4, 00FH ; G¸n R4 = FFH
16 0306 7DFF NEXT: MOV R5, #00FH ; G¸n R5 = 255
17 0308 DDFE AGAIN: DJNZ R5, AGAIN
18 030A DCFA DJNZ R4, NEXT
19 030C D005 POP 5 ; KÐo ®Ønh ng¨n xÕp vµo R5
20 030E D004 POP 4 ; KÐo ®Ønh ng¨n xÕp vµo R4
21 0310 22 RET ; Trë vÒ nguån gäi
22 0311 END ; KÕt thóc tÖp tin hîp ng÷

Lêi gi¶i:
Tr­íc hÕt l­u ý r»ng ®èi víi c¸c lÖnh PUSH vµ POP ta ph¶i x¸c ®Þnh ®Þa chØ
trùc tiÕp cña thanh ghi ®­îc ®Èy vµo, kÐo ra tõ ng¨n xÕp. D­íi ®©y lµ s¬ ®å khung
cña ng¨n xÕp.

Sau lÖnh LCALL thø nhÊt Sau lÖnh PUSH 4 Sau lÖnh POSH 5
0B 0B 0B 67 R5
0A 0A 99 R4 0A 09 R4
09 00 PCH 09 00 PCH 09 00 PCL
08 0B PCL 0B 0B PCL 08 0B PCL

CÇn ph¶i nhÊn m¹nh r»ng trong viÖc sö dông LCALL th× ®Þa chØ ®Ých cña c¸c
ch­¬ng tr×nh con cã thÓ ë ®©u ®ã trong ph¹m vi 64k byte kh«ng gian bé nhí cña
8051. §iÒu nµy kh«ng ¸p dông cho tÊt c¶ mäi lÖnh gäi CALL ch¼ng h¹n nh­ ®èi víi
ACALL d­íi ®©y:
; MAIN program calling subroutines
ORG 0
MAIN: LCALL SUBR-1
LCALL SUBR-2
LCALL SUBR-3

HERE: SJMP MAIN
;----------------- end of MAIN
;
SUBR-1l ...
...
RET
; ----------------- end of subroutinel 1
; SUBR-1l ...
...
RET
; ----------------- end of subroutinel 2
; SUBR-1l ...
...
RET
; ----------------- end of subroutinel 3
END ; end of the asm file


H×nh 3.1: Ch­¬ng tr×nh chÝnh hîp ng÷ cña 8051 cã gäi c¸c ch­¬ng tr×nh con.
3.2.5 LÖnh gäi tuyÖt ®èi ACALL (Absolute call).
LÖnh ACALL lµ lÖnh 2 byte kh¸c víi lÖnh LCALL dµi 3 byte. Do ACALL chØ
cã 2 byte nªn ®Þa chØ ®Ých cña ch­¬ng tr×nh con ph¶i n»m trong kho¶ng 2k byte ®Þa
chØ v× chØ cã 11bit cña 2 byte ®­îc sö dông cho ®Þa chØ. Kh«ng cã sù kh¸c biÖt nµo
gi÷a ACALL vµ LCALL trong kh¸i niÖm cÊt bé ®Õm ch­¬ng tr×nh vµo ng¨n xÕp hay
trong chøc n¨ng cña lÖnh trë vÒ RET. Sù kh¸c nhau duy nhÊt lµ ®Þa chØ ®Ých cña lÖnh
LCALL cã thÓ n»m bÊt cø ®©u trong ph¹m vi 64k byte kh«ng gian ®Þa chØ cña 8051,
cßn trong khi ®ã ®Þa chØ cña lÖnh ACALL ph¶i n»m trong kho¶ng 2 byte. Trong
nhiÒu biÕn thÕ cña 8051 do c¸c h·ng cung cÊp th× ROM trªn chÝp chØ cã 1k byte..
Trong nh÷ng tr­êng hîp nh­ vËy th× viÖc sö dông ACALL thay cho LCALL cã thÓ
tiÕt kiÖm ®­îc mét sè byte bé nhí cña kh«ng gian ROM ch­¬ng tr×nh.
VÝ dô 3.11:
Mét nhµ ph¸t triÓn sö dông chÝp vi ®iÒu khiÓn Atmel AT89C1051 cho mét s¶n
phÈm. ChÝp nµy chØ cã 1k byte ROM Flash trªn chÝp. Hái trong khi lÖnh LCALL vµ
ACALL th× lÖnh nµo h÷u Ých nhÊt trong lËp tr×nh cho chÝp nµy.
Lêi gi¶i:
LÖnh ACALL lµ h÷u Ých h¬n v× nã lµ lÖnh 2 byte. Nã tiÕt kiÖm mét byte mçi
lÇn gäi ®­îc sö dông.
TÊt nhiªn, viÖc sö dông c¸c lÖnh gän nhÑ, chóng ta cã thÓ lËp tr×nh hiÖu qu¶
b»ng c¸ch cã mét hiÓu biÕt chi tiÕt vÒ tÊt c¶ c¸c lÖnh ®­îc hç trî bëi bé vi xö lý ®·
cho vµ sö dông chóng mét c¸ch kh«n ngoan. XÐt vÝ dô 3.12 d­íi ®©y.
VÝ dô 3.12:
H·y viÕt l¹i ch­¬ng tr×nh ë vÝ dô 3.8 mét c¸ch hiÖu qu¶ mµ b¹n cã thÓ:
Lêi gi¶i:
ORG 0
MOV A, #55H ; N¹p Avíi gi¸ trÞ 55H
BACK: MOV P1, A ; XuÊt gi¸ trÞ trong A ra cæng P1
ACALL DELAY ; Gi÷ chËm
CPL A ; Bï thµnh ghi A
SJMP BACK ; TiÕp tôc thùc hiÖn v« h¹n
; -------- §©y lµ ch­¬ng tr×nh con gi÷ chËm DELAY
DELAY:
MOV R5, #0FFH ; N¹p R5 = 255 (hay FFH) lµm cho bé ®Õm
AGAIN: DJNZ R5, AGAIN ; Dõng ë ®©y cho ®Õn khi R5 = 0
RET ; Trë vÒ
END ; KÕt thóc

3.3 T¹o vµ tÝnh to¸n thêi gian gi÷ chËm.
3.3.1 Chu kú m¸y:
§èi víi CPU ®Ó thùc hiÖn mét lÖnh th× mÊt mét chu kú ®ång hå nµy ®­îc coi
nh­ c¸c chu kú m¸y. Phô lôc AppendixA.2 cung cÊp danh s¸ch liÖt kª c¸c lÖnh 8051
vµ c¸c chu kú m¸y cña chóng. §Ó tÝnh to¸n mét ®é trÔ thêi gian, ta sö dông danh
s¸ch liÖt kª nµy. Trong hä 8051 th× ®é dµi cña chu kú m¸y phô thuéc vµo tÇn sè cña
bé dao ®éng th¹ch anh ®­îc nèi vµo hÖ thèng 8051. Bé dao ®éng th¹ch anh cïng víi
m¹ch ®iÖn trªn chip cung cÊp xung ®ång hå cho CPU cña 8051 (xem ch­¬ng 4). TÇn
sè cña tinh thÓ th¹ch anh ®­îc nèi tíi hä 8051 dao ®éng trong kho¶ng 4MHz ®Õn 30
MHz phô thuéc vµo tèc ®é chÝp vµ nhµ s¶n xuÊt. Th­êng xuyªn nhÊt lµ bé dao ®éng
th¹ch anh tÇn sè 10.0592MHz ®­îc sö dông ®Ó lµm cho hÖ 8051 t­¬ng thÝch víi
cæng nèi tiÕp cña PC IBM (xem ch­¬ng 10). Trong 8051, mét chu kú m¸y kÐo dµi 12
chu kú dao ®éng. Do vËy, ®Ó tÝnh to¸n chu kú m¸y ta lÊy 1/12 cña tÇn sè tinh thÓ
th¹ch anh, sau ®ã lÊy gi¸ trÞ nghÞch ®¶o nh­ chØ ra trong vÝ dô 3.13.
VÝ dô 3.13:
§o¹n m· d­íi ®©y tr×nh bµy tÇn sè th¹ch anh cho 3 hÖ thèng dùa trªn 8051
kh¸c nhau. H·y t×m chu kú m¸y cña mçi tr­êng hîp: a) 11.0592MHz b) 16MHz vµ
c) 20MHz.
Lêi gi¶i:
a) 11.0592/12 = 921.6kHz; Chu kú m¸y lµ 1/921.6kHz = 1.085ms (micro gi©y)
b) 16MHz/12 = 1.333MHz; Chu kú m¸y MC = 1/1.333MHz = 0.75ms
c) 20MHz/12 = 1.66MHz Þ MC = 1/1.66MHz = 0.60ms
VÝ dô 3.14:
§èi víi mét hÖ thèng 8051 cã 11.0592MHz h·y t×m thêi gian cÇn thiÕt ®Ó
thùc hiÖn c¸c lÖnh sau ®©y.

a) MOV R3, #55 b) DEC R3 c) DJNZ R2 ®Ých
d) LJMP e) SJMP f) NOP g) MUL AB

Lêi gi¶i:
Chu kú m¸y cho hÖ thèng 8051 cã tÇn sè ®ång hå lµ 11.0592MHz Lµ 1.085ms
nh­ ®· tÝnh ë vÝ dô 3.13. B¶ng A-1 trong phô lôc Appendix A tr×nh bµy sè chu kú
m¸y ®èi víi c¸c lÖnh trªn. VËy ta cã:
LÖnh Chu kú m¸y Thêi gian thùc hiÖn
(a) MOV R3, #55 1 1 ´ 1.085 ms = 1.085 ms
(b) DEC R3 1 1 ´ 1.085 ms = 1.085 ms
(c) DJNZ R2, target 2 2 ´ 1.085 ms = 2.17 ms
(d) LJMP 2 2 ´ 1.085 ms = 2.17 ms
(e) SJMP 2 2 ´ 1.085 ms = 2.17 ms
(f) NOP 1 1 ´ 1.085 ms = 1.085 ms
(g) MUL AB 4 4 ´ 1.085 ms = 4.34 ms

3.3.2 TÝnh to¸n ®é trÔ.
Nh­ ®· tr×nh bµy ë trªn ®©y, mét ch­¬ng tr×nh con gi÷ chËm gåm cã hai
phÇn: (1) thiÕt lËp bé ®Õm vµ (2) mét vßng lÆp. HÇu hÕt thêi gian gi÷ chËm ®­îc thùc
hiÖn bëi th©n vßng lÆp nh­ tr×nh bµy ë vÝ dô 3.15.
VÝ dô 3.15:
H·y t×m kÝch th­íc cña thêi gian gi÷ chËm trong ch­¬ng tr×nh sau, nÕu tÇn sè
giao ®éng thach anh lµ 11.0592MHz.

MOV A, #55H
AGAIN: MOV P1, A
ACALL DELAY
CPL A
SJMP AGAIN
; -------- Time delay
DELAY: MOV R3, #200
HERE : DJNZ R3, HERE
RET

Lêi gi¶i:
Tõ b¶ng A-1 cña phô lôc Appendix A ta cã c¸c chu kú m¸y sao cho c¸c lÖnh
cña ch­¬ng tr×nh con gi÷ chËm lµ:

DELAY: MOV R3, #200 1
HERE : DJNZ R3, HERE 2
RET 1

Do vËy tæng thêi gian gi÷ chËm lµ [(200 ´ 2) + 1 + 1] ´ 1.085 = 436.17ms.
Th«ng th­êng ta tÝnh thêi gian gi÷ chËm dùa trªn c¸c lÖnh bªn trong vßng lÆp
vµ bá qua c¸c chu kú ®ång hå liªn quan víi c¸c lÖnh ë ngoµi vßng lÆp.
Trong vÝ dô 3.15 gi¸ trÞ lín nhÊt mµ R3 cã thÓ chøa lµ 255, do vËy mét c¸ch
t¨ng ®é trÔ lµ sö dông lÖnh UOP (kh«ng lµm g×) trong vßng lÆp ®Ó tiªu tèn thêi gian
mét c¸ch ®¬n gi¶n. §iÒu nµy ®­îc chØ ra trong vÝ dô 3.16 d­íi ®©y.
VÝ dô 3.16:
H·y t×m ®é trÔ thêi gian cho ch­¬ng tr×nh con sau. Gi¶ thiÕt tÇn sè dao ®éng
th¹ch anh lµ 11.0592MHz.
Sè chu kú m¸y
DELAY: MOV R3, #250 1

HERE : NOP 1
NOP 1
NOP 1
NOP 1
DJNZ R3, HERE 2

RET 1

Lêi gi¶i:
Thêi gian trÔ bªn trong vßng lÆp HERE lµ [250 (1 + 1 + 1 + 1 + 1 + 2)] ´
1.0851ms = 1627.5ms. Céng thªm hai lÖnh ngoµi vßng lÆp ta cã 1627.5ms ´ 1.085ms
= 1629.67ms.
3.3.3 §é trÔ thêi gian cña vßng lÆp trong vßng lÆp.
Mét c¸ch kh¸c ®Ó nhËn ®­îc gi¸ trÞ tõ ®é trÔ lín lµ sö dông mét vßng lÆp bªn
trong vßng lÆp vµ còng ®­îc gäi lµ vßng lÆp lång nhau. Xem vÝ dô 3.17 d­íi ®©y.
VÝ dô 3.17:
§èi víi mét chu kú m¸y 1.085ms h·y tÝnh thêi gian gi÷ chËm trong ch­¬ng
tr×nh con sau:

chu kú m¸y
DELAY:
MOV R2, #200 1
AGAIN: MOV R3, #250 1
HERE: NOP 1
NOP 1
DJNZ R3, HERE 2
DJNZ R2, AGAIN 2
RET 1

Lêi gi¶i:
§èi víi vßng lÆp HERE ta cã (4 ´ 250) ´ 1.085ms = 1085ms. Vßng lÆp
AGAIN lÆp vßng lÆp HERE 200 lÇn, do vËy thêi gian trÔ lµ 200 ´ 1085ms 217000ms,
nªn ta kh«ng tÝnh tæng phÝ. Tuy nhiªn, c¸c lÖnh “MOV R3, #250” vµ “DJNZ R2,
AGAIN” ë ®Çu vµ cuèi vßng lÆp AGAIN céng (3 ´ 200 ´ 1.085ms) = 651ms vµo thêi
gian trÔ vµ kÕt qu¶ ta cã 217000 + 651 = 217651ms = 217.651 miligi©y cho tæng thêi
gian trÔ liªn quan ®Õn ch­¬ng tr×nh con gi÷ chËm DELAY nãi trªn. L­u ý r»ng,
trong tr­êng hîp vßng lÆp lång nhau còng nh­ trong mäi vßng lÆp gi÷ chËm kh¸c
thêi gian xÊp xØ gÇn dóng v× ta bá qua c¸c lÖnh ®Çu vµ cuèi trong ch­¬ng tr×nh con.
Đề thi vào lớp 10 môn Toán |  Đáp án đề thi tốt nghiệp |  Đề thi Đại học |  Đề thi thử đại học môn Hóa |  Mẫu đơn xin việc |  Bài tiểu luận mẫu |  Ôn thi cao học 2014 |  Nghiên cứu khoa học |  Lập kế hoạch kinh doanh |  Bảng cân đối kế toán |  Đề thi chứng chỉ Tin học |  Tư tưởng Hồ Chí Minh |  Đề thi chứng chỉ Tiếng anh
Theo dõi chúng tôi
Đồng bộ tài khoản