You are on page 1of 12

chng 3 Cc lnh nhy, vng lp v lnh gi

Trong mt chui lnh cn thc hin thng c nhu cn cn chuyn iu khin chng trnh n mt v tr khc. C nhiu lnh thc hin iu ny trong 8051, chng ny ta s tm hiu cc lnh chuyn iu khin c trong hp ng ca 8051 nh cc lnh s dng cho vng lp, cc lnh nhy c v khng c iu khin, lnh gi v cui cng l m t v mt chng trnh con gi chm thi gian. 3.1 Vng lp v cc lnh nhy. 3.1.1 To vng lp trong 8051. Qa trnh lp li mt chui cc lnh vi mt s ln nht nh c gi l vng lp. Vng lp l mt trong nhng hot ng c s dng rng ri nht m bt k b vi s l no u thc hin. Trong 8051 th hot ng vng lp c thc hin bi lnh DJNZ thanh ghi, nhn. Trong lnh ny thanh ghi c gim xung, nu n khng bng khng th n nhy n a ch ch c tham chiu bi nhn. Trc khi bt u vng lp th thanh ghi c np vi b m cho s ln lp li. Lu rng, trong lnh ny vic gim thanh ghi v quyt nh nhy c kt hp vo trong mt lnh n. V d 3.1: Vit mt chng trnh : a) xo ACC v sau b) cng 3 vo ACC 10 ln. Li gii:
BACK: MOV MOV ADD DJNZ MOV A, #0 R2, #10 A, #10 R2, AGAIN R5, A ; Xo ACC, A = 0 ; Np b m R2 = 10 ; Cng 03 vo ACC ; Lp li cho n khi R2 = 0 (10 ln) ; Ct A vo thanh ghi R5

Trong chng trnh trn y thanh ghi R2 c s dng nh l b m. B m lc u c t bng 10. Mi ln lp li lnh DJNZ gim R2 khng bng 0 th n nhy n a ch ch gn vi nhn AGAIN. Hot ng lp li ny tip tc cho n khi R2 tr v khng. Sau khi R2 = 0 n thot khi vng lp v thc hin ng ngay di n trong trng hp ny l lnh MOV R5, A. Lu rng trong lnh DJNZ th cc thanh ghi c th l bt k thanh ghi no trong cc thanh ghi R0 - R7. B m cng c th l mt ngn nh trong RAM nh ta s thy chng 5. V d 3.2: S ln cc i m vng lp v d 3.1 c th lp li l bao nhiu? Li gii: V thanh ghi R2 cha s m v n l thanh ghi 8 bit nn n c th cha c gi tr cc i l FFH hay 155. Do vy s ln lp li cc i m vng lp v d 3.1 c th thc hin l 256. 3.2.1 Vng lp bn trong mt vng lp. Nh trnh by v d 3.2 s m cc i l 256. Vy iu g xy ra nu ta mun lp mt hnh ng nhiu hn 256 ln? lm iu th ta s dng mt vng lp bn trong mt vng lp c gi l vng lp lng (Nested Loop). Trong mt vng lp lng ta s dng 2 thanh ghi gi s m. Xt v d 3.3 di y.

V d 3.3: Hy vit mt chng trnh a) np thanh ghi ACC vi gi tr 55H v b) b ACC 700 ln. Li gii: V 700 ln hn 256 (l s cc i m mt thanh ghi v th cha c) nn ta phi dng hai thanh ghi cha s m. on m di y trnh by cch s dng hai thanh ghi R2 v R3 cha s m.
MOV MOV MOV CPL DJNZ DJNZ A, #55H R3, #10 R2, #70 A R2, AGAIN R3, NEXT ; Np A = 55H ; Np R3 = 10 s m vng lp ngoi ; Np R2 = 70 s m vng lp trong ; B thanh ghi A ; Lp li 70 ln (vng lp trong)

NEXT: AGAIN: `

Trong chng trnh ny thanh ghi R2 c dng cha s m vng lp trong. Trong lnh DJNZ R2, AGAIN th mi khi R2 = 0 n i thng xung v lnh JNZ R3, NEXT c thc hin. Lnh ny p CPU np R2 vi s m 70 v vng lp trong khi bt u li qu trnh ny tip tc cho n khi R3 tr v khng v vng lp ngoi kt thc. 3.1.3 Cc lnh nhy c iu kin. Cc lnh nhy c iu kin i vi 8051 c tng hp trong bng 3.1. Cc chi tit v mi lnh c cho trong ph lc AppendixA. Trong bng 3.1 lu rng mt s lnh nh JZ (nhy nu A = 0) v JC (nhy nu c nh) ch nhy nu mt iu kin nht nh c tho mn. K tip ta xt mt s lnh nhy c iu kin vi cc V d minh ho sau. a- Lnh JZ (nhy nu A = 0). Trong lnh ny ni dung ca thanh ghi A c kim tra. Nu n bng khng th n nhy n a ch ch. V d xt on m sau:
MOV JZ MOV JZ OVER ... A, R0 OVER A, R1 OVER ; Np gi tr ca R0 vo A ; Nhy n OVER nu A = 0 ; Np gi tr ca R1 vo A ; Nhy n OVER nu A = 0

Trong chng trnh ny nu R0 hoc R1 c gi tr bng 0 th n nhy n a ch c nhn OVER. Lu rng lnh JZ ch c th c s dng i vi thanh ghi A. N ch c th kim tra xem thanh ghi A c bng khng khng v n khng p dng cho bt k thanh ghi no khc. Quan trng hn l ta khng phi thc hin mt lnh s hc no nh m gim s dng lnh JNZ nh v d 3.4 di y. V d 3.4: Vit mt chng trnh xc nh xem R5 c cha gi tr 0 khng? Nu np th n cho gi tr 55H. Li gii:
MOV JNZ MOV A, R5 NEXT R5, #55H ; Sao ni dung R5 vo A ; Nhy n NEXT nu A khng bng 0 ;

NEXT:

...

b- Lnh JNC (nhy nu khng c nh, c CY = 0). Trong lnh ny th bit c nh trong thanh ghi c PSW c dng thc hin quyt nh nhy. Khi thc hin lnh JNC nhn th b x l kim tra c nh xem n c c bt khng (CY = 1). Nu n khng bt th CPU bt u np v thc hin cc lnh t a ch ca nhn. Nu c CY = 1 th n s khng nhy v thc hin lnh k tip di JNC. Cn phi lu rng cng c lnh JC nhn. Trong lnh JC th nu CY = 1 n nhy n a ch ch l nhn. Ta s xt cc v d v cc lnh ny trong cc ng dng cc chng sau. Ngoi ra cn c lnh JB (nhy nu bit c mc cao) v JNB (nhy nu bit c mc thp). Cc lnh ny c trnh by chng 4 v 8 khi ni v thao tc bit. Bng 3.1: Cc lnh nhy c iu kin.
Lnh JZ JNZ DJNZ CJNE A, byte CJNE re, # data JC JNC JB JNB JBC Hot ng Nhy nu A = 0 Nhy nu A 0 Gim v nhy nu A = 0 Nhy nu A byte Nhy nu Byte data Nhy nu CY = 1 Nhy nu CY = 0 Nhy nu bit = 1 Nhy nu bit = 0 Nhy nu bit = 1 v xo n

V d 3.5: Hy tm tng ca cc gi tr 79H, F5H v E2H. t vo trong cc thanh ghi R0 (byte thp) v R5 (byte cao). Li gii:
MOV MOV ADD JNC INC N-1: ADD JNC INC N-2: ADD JNC INC OVER: MOV A, #0 R5, A A #79H N-1 R5 A, #0F5H N-2 R5 A, #0E2H OVER R5 R0, A ; Xo thanh ghi A = 0 ; Xo R5 ; Cng 79H vo A (A = 0 + 79H = 79H) ; Nu khng c nh cng k tip ; Nu CY = 1, tng R5 ; Cng F5H vo A (A = 79H + F5H = 6EH) v CY = 1 ; Nhy nu CY = 0 ; Nu CY = 1 tng R5 (R5 = 1) ; Cng E2H vo A (A = GE + E2 = 50) v CY = 1 ; Nhy nu CY = 0 ; Nu CY = 1 tng R5 ; By gi R0 = 50H v R5 = 02

c- Tt c cc lnh nhy c iu kin u l nhng php nhy ngn.

Cn phi lu rng tt c cc lnh nhy c iu kin u l cc php nhy ngn, c ngha l a ch ca ch u phi nm trong khong -127 n +127 byte ca ni dung b m chng trnh PC. 3.1.4 Cc lnh nhy khng iu kin. Lnh nhy khng iu kin l mt php nhy trong iu khin c truyn khng iu kin n a ch ch. Trong 8051 c hai lnh nhy khng iu kin l: LJMP - nhy xa v SJMP - nhy gn. a- Nhy xa LJMP: Nhy xa LJMP l mt lnh 3 byte trong byte u tin l m lnh cn hai byte cn li l a ch 16 bit ca ch. a ch ch 02 byte c php mt php nhy n bt k v tr nh no trong khong 0000 - FFFFH. Hy nh rng, mc d b m chng trnh trong 8051 l 16 bit, do vy cho khng gian a ch l 64k byte, nhng b nh chng trnh ROM trn chp ln nh vy. 8051 u tin ch c 4k byte ROM trn chp cho khng gian chng trnh, do vy mi byte u rt qu gi. V l do m c c lnh nhy gn SJMP ch c 2 byte so vi lnh nhy xa LZ0MP di 3 byte. iu ny c th tit kim c mt s byte b nh trong rt nhiu ng dng m khng gian b nh c hn hp. b- Lnh nhy gm SJMP. Trong 2 byte ny th byte u tin l m lnh v byte th hai l ch tng i ca a ch ch. ch ch tng i trong phm vi 00 - FFH c chia thnh cc lnh nhy ti v nhy li: Ngha l -128 n +127 byte ca b nh tng i so vi a ch hin thi ca b m chng trnh. Nu l lnh nhy ti th a ch ch c th nm trong khong 127 byte t gi tr hin thi ca b m chng trnh. Nu a ch ch pha sau th n c th nm trong khong -128 byte t gi tr hin hnh ca PC. 3.1.5 Tnh ton a ch lnh nhy gn. Ngoi lnh nhy gn SJMP th tt c mi lnh nhy c iu kin nh JNC, JZ v DJNZ u l cc lnh nhy gn bi mt thc t l chng u lnh 2 byte. Trong nhng lnh ny th byte th nht u l m lnh, cn byte th hai l a ch tng i. a ch ch l tng i so vi gi tr ca b m chng trnh. tnh ton a ch ch byte th hai c cng vo thanh ghi PC ca lnh ng ngay sau lnh nhy. hiu iu ny hy xt v d 3.6 di y. V d 3.6: S dng tp tin lit k di y hy kim tra vic tn ton a ch nhy v trc.
01 02 03 04 05 06 07 08 09 10 11 12 0000 0000 0002 0004 0006 0007 0008 0009 000B 000D 000E 000F 7800 7455 6003 08 04 04 2477 5005 E4 F8 F9 ORG MOV MOV JZ NIC INC ADD JNC CLR MOV MOV 0000 R0, #0 A, #55H NEXT R0 A A, #77h OVER A R0, A R1, A

AGAIN: INC NEXT:

13 14 15 16 17 18

0010 0011 0012 0013 0015 0017

FA FB 2B 50F2 80FE

OVER: HERE:

MOV MOV ADD JNC SJMP END

R2, A R3, A A, R3 AGAIN SHERE

Li gii: Trc ht lu rng cc lnh JZ v JNC u l lnh nhy v trc. a ch ch i vi lnh nhy v trc c tnh ton bng cch cng gi tr PC ca lnh i ngay sau vo byte th hai ca lnh nhy gn c gi l a ch tng i. dng 04 lnh JZ NEXT c m lnh 60 v ton hng 03 ti a ch 0004 v 0005. y 03 l a ch tng i, tng i so vi a ch ca lnh k tip l: INC R0 v l 0006. Bng vic cng 0006 vo 3 th a ch ch ca nhn NEXT l 0009 c to ra. Bng cch tng t nh vy i vi dng 9 th lnh JNC OVER c m lnh v ton hng l 50 v 05 trong 50 l m lnh v 05 l a ch tng i. Do vy, 05 c cng vo OD l a ch ca lnh CLA A ng ngay sau lnh JNC OVER v cho gi tr 12H chnh l a ch ca nhn OVER. V d 3.7: Hy kim tra tnh ton a ch ca cc lnh nhy li trong v d 3.6. Li gii: Trong danh sch lit k chng trnh th lnh JNC AGAIN c m lnh l 50 v a ch tng i l F2H. Khi a ch tng i ca F2H c cng vo 15H l a ch ca lnh ng di lnh nhy ta c 15H + F2H = 07 (v phn nh c b i). rng 07 l a ch nhn AGAIN. V hy cng xt lnh SJMP HERE c m lnh 80 v a ch tng i FE gi tr PC ca lnh k tip l 0017H c cng vo a ch tng i FEH ta nhn c 0015H chnh l a ch nhn HERE (17H + FEH = 15H) phn nh c b i). Lu rng FEH l -2 v 17h + (-2) = 15H. V php cng s m s c bn chng 6. 3.1.6 Tnh ton a ch ch nhy li. Trong khi trng hp nhy ti th gi tr thay th l mt s dng trong khong t 0 n 127 (00 n 7F dng Hex) th i vi lnh nhy li gi tr thay th l mt s m nm trong khong t 0 n -128 nh c gii thch v d 3.7. Cn phi nhn mnh rng, bt lun SJMP nhy ti hay nhy li th i vi mt lnh nhy bt k a ch ca a ch ch khng bao gi c th ln hn 0 -128 n +127 byte so vi a ch gn lin vi lnh ng ngay sau lnh SJMP. Nu c mt s n lc no vi phm lut ny th hp ng s to ra mt li bo rng lnh nhy ngoi phm vi. 3.2 Cc lnh gi CALL. Mt lnh chuyn iu khin khc l lnh CALL c dng gi mt chng trnh con. Cc chng trnh con thng c s dng thc thi cc cng vic cn phi c thc hin thng xuyn. iu ny lm cho chng trnh tr nn c cu trc hn ngoi vic tit kim c thm khng gian b nh. Trong 8051 c 2 lnh gi l: Gi xa CALL v gi tuyt i ACALL m quyt nh s dng lnh no ph thuc vo a ch ch. 3.2.1 Lnh gi xa LCALL.

Trong lnh 3 byte ny th byte u tin l m lnh, cn hai byte sau c dng cho a ch ca chng trnh con ch. Do vy LCALL c th c dng gi cc chng trnh con bt k v tr no trong phm vi 64k byte, khng gian a ch ca 8051. m bo rng sau khi thc hin mt chng trnh c gi 8051 bit c ch quay tr v th n t ng ct vo ngn xp a ch ca lnh ng ngay sau lnh gi LCALL. Khi mt chng trnh con c gi, iu khin c chuyn n chng trnh con v b x l ct b m chng trnh PC vo ngn xp v bt u np lnh vo v tr mi. Sau khi kt thc thc hin chng trnh con th lnh tr v RET chuyn iu khin v cho ngun gi. Mi chng trnh con cn lnh RET nh l lnh cui cng (xem v d 3.8). Cc im sau y cn phi c lu t v d 3.8. 1. Lu n chng trnh con DELAY khi thc hin lnh LCALL DELAY u tin th a ch ca lnh ngay k n l MOV A, #0AAH c y vo ngn xp v 8051 bt u thc hin cc lnh a ch 300H. 2. Trong chng trnh con DELAY, lc u b m R5 c t v gi tr 255 (R5 = FFH). Do vy, vng lp c lp li 256 ln. Khi R5 tr v 0 iu khin ri xung lnh quay tr v RET m n ko a ch t ngn xp vo b m chng trnh v tip tc thc hin lnh sau lnh gi CALL. V d 3.8: Hy vit mt chng trnh cht tt c cc bit ca cng P1 bng cch gi n n gi tr 55H v AAH lin tc. Hy t mt tr thi gian gia mi ln xut d liu ti cng P1. Chng trnh ny s c s dng kim tra cc cng ca 8051 trong chng tip theo. Li gii:
ORG 0000 MOV A, #55H ; Np A vi gi tr 55H MOV P1, A ; Gi 55H n cng P1 LCALL DELAY ; To tr thi gian MOV A, #0AAH ; Np A vi gi tr AAH MOV P1, A ; Gi AAH n cng P1 LCALL DELAY ; Gi chm SJMP BACK ; Lp li v tn ; ------------------ - y l chng trnh con to tr thi gian ORG 300H ; t chng trnh con tr thi gian a ch 300H DELAY: MOV R5, #00H ; Np b m R5 = 255H (hay FFH) AGAIN: DJNZ R5, AGAIN ; Tip tc cho n khi R5 v khng RET ; Tr iu khin v ngun gi (khi R5 = 0) END ; Kt thc tp tin ca hp ng BACK:

Lng thi gian tr trong v d 8.3 phc thuc vo tn s ca 8051. Cch tnh chnh xc thi gian s c gii thch chng 4. Tuy nhin ta c th tng thi gian tr bng cch s dng vng lp lng nh ch ra di y.
DELAY: NEXT: AGAIN: MOV MOV DJNZ DJNZ R4, #255 R5, #255 R5, AGAIN R4, NEXT ; Vng lp lng gi chm ; Np R4 = 255 (FFH dng hex) ; Np R5 = 255 (FFH dng hex) ; Lp li cho n khi RT = 0 ; Gim R4 ;Tip tc np R5 cho n khi R4 = 0

RET

; Tr v (khi R4 = 0)

3.2.2 Lnh gi CALL v vai tr ca ngn xp. Ngn xp v con tr ngn xp ta s nghin cu chng cui. hiu c tm quan trng ca ngn xp trong cc b vi iu khin by gi kho st ni dung ca ngn xp v con tr ngn xp i vi v d 8.3. iu ny c trnh by v d 3.9 di y. V d 3.9: Hy phn tch ni dung ca ngn xp sau khi thc hin lnh LCALL u tin di y.
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 0000 0000 0002 0004 0007 0009 000B 000E 0010 0010 0300 0300 0300 0302 0304 0305 7455 F590 120300 74AA F590 120300 80F0 OR6 BACK: MOV A, #55H MOV P1, A LCALL DELAY MOV A, #0AAH MOV P1, A LCALL DELAY SJMP BACK ; Np A vi gi tr 55H ; Gi 55H ti cng P1 ; To tr thi gian ; Np A vi gi tr AAH ; Gi AAH ti cng P1 ; To tr thi gian ; Tip tc thc hin

7DFF DDFE 22

; ..................... y l chng trnh con gi chm MOV 300H DELAY: MOV R5, #FFH ; Np R5 = 255 AGAIN:DJNZ R5, AGAIN ; Dng y RET ; Tr v ngun gi END ; Kt thc np tin hp ng

Li gii: Khi lnh LCALL u tin c thc hin th a ch ca lnh MOV A, #0AAH c ct vo ngn xp. Lu rng byte thp vo trc v byte cao vo sau. Lnh cui cng ca chng trnh con c gi phi l lnh tr v RET chuyn CPU ko (POP) cc byte trn nh ca ngn xp vo b m chng trnh PC v tip tc thc hin lnh ti a ch 07. S bn ch ra khung ca ngn xp sau ln gi LCALL u tin. 0A 09 08 SP 00 07 09

3.2.3 S dng lnh PUSH v POP trong cc chng trnh con. Khi gi mt chng trnh con th ngn xp phi bm c v tr m CPU cn tr v. Sau khi kt thc chng trnh con v l do ny chng ta phi cn thn mi khi thao tc vi cc ni dung ca ngn xp. Nguyn tc l s ln y vo (PUSH) v ko ra (POP) lun phi ph hp trong bt k chng trnh con c gi vo. Hay ni cch khc i vi mi lnh PUSH th phi c mt lnh POP. Xem v d 3.10. 3.2.4 Gi cc chng trnh con.

Trong lp trnh hp ng thng c mt chng trnh chnh v rt nhiu chng trnh con m chng c gi t chng trnh chnh. iu ny cho php ta to mi chng trnh con trong mt m-un ring bit. Mi m-un c th c kim tra tch bit v sau c kt hp vi nhau cng vi chng trnh chnh. Quan trng hn l trong mt chng trnh ln th cc m-un c th c phn cho cc lp trnh vin khc nhau nhm rt ngn thi gian pht trin. V d 3.10: Phn tch ngn xp i vi lnh LCALL u tin trong on m.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 0000 0000 7455 0002 F590 0004 7C99 0006 7D67 0008 120300 000B 74AA 000D F590 000F 120300 0012 80EC 0014 0300 0300 C004 0302 C005 0304 7CFF 0306 7DFF 0308 DDFE 030A DCFA 030C D005 030E D004 0310 22 0311 BACK: ORG 0 MOV A, #55H ; Np A vi gi tr 55H MOV P1, A ; Gi 55H ra cng P1 MOV R4, #99H MOV R5, #67H LCALL DELAY ; To gi chm thi gian MOV A, #0AAH ; Np A vi AAH MOV P1, A ; Gi AAH ra cng P1 LCALL DELAY SJMP BACK ; Tip tc thc hin ; ............ y l chng trnh con DELAY ORG 300H PUSH 4 ; y R4 vo ngn xp PUSH 5 ; y R5 vo ngn xp MOV R4, 00FH ; Gn R4 = FFH MOV R5, #00FH ; Gn R5 = 255 DJNZ R5, AGAIN DJNZ R4, NEXT POP 5 ; Ko nh ngn xp vo R5 POP 4 ; Ko nh ngn xp vo R4 RET ; Tr v ngun gi END ; Kt thc tp tin hp ng

DELAY NEXT: AGAIN:

Li gii: Trc ht lu rng i vi cc lnh PUSH v POP ta phi xc nh a ch trc tip ca thanh ghi c y vo, ko ra t ngn xp. Di y l s khung ca ngn xp.
Sau lnh LCALL th nht 0B 0A 09 00 PCH 08 0B PCL Sau lnh PUSH 4 0B 0A 09 0B 99 00 0B R4 PCH PCL 0B 0A 09 08 Sau lnh POSH 5 67 R5 09 R4 00 PCL 0B PCL

Cn phi nhn mnh rng trong vic s dng LCALL th a ch ch ca cc chng trnh con c th u trong phm vi 64k byte khng gian b nh ca 8051. iu ny khng p dng cho tt c mi lnh gi CALL chng hn nh i vi ACALL di y:

; MAIN program calling subroutines ORG 0 MAIN: LCALL SUBR-1 LCALL SUBR-2 LCALL SUBR-3 HERE: SJMP ;----------------- end of MAIN ; SUBR-1l ... ... RET ; ----------------- end of subroutinel ; SUBR-1l ... ... RET ; ----------------- end of subroutinel ; SUBR-1l ... ... RET ; ----------------- end of subroutinel END MAIN

; end of the asm file

Hnh 3.1: Chng trnh chnh hp ng ca 8051 c gi cc chng trnh con. 3.2.5 Lnh gi tuyt i ACALL (Absolute call). Lnh ACALL l lnh 2 byte khc vi lnh LCALL di 3 byte. Do ACALL ch c 2 byte nn a ch ch ca chng trnh con phi nm trong khong 2k byte a ch v ch c 11bit ca 2 byte c s dng cho a ch. Khng c s khc bit no gia ACALL v LCALL trong khi nim ct b m chng trnh vo ngn xp hay trong chc nng ca lnh tr v RET. S khc nhau duy nht l a ch ch ca lnh LCALL c th nm bt c u trong phm vi 64k byte khng gian a ch ca 8051, cn trong khi a ch ca lnh ACALL phi nm trong khong 2 byte. Trong nhiu bin th ca 8051 do cc hng cung cp th ROM trn chp ch c 1k byte.. Trong nhng trng hp nh vy th vic s dng ACALL thay cho LCALL c th tit kim c mt s byte b nh ca khng gian ROM chng trnh. V d 3.11: Mt nh pht trin s dng chp vi iu khin Atmel AT89C1051 cho mt sn phm. Chp ny ch c 1k byte ROM Flash trn chp. Hi trong khi lnh LCALL v ACALL th lnh no hu ch nht trong lp trnh cho chp ny. Li gii: Lnh ACALL l hu ch hn v n l lnh 2 byte. N tit kim mt byte mi ln gi c s dng. Tt nhin, vic s dng cc lnh gn nh, chng ta c th lp trnh hiu qu bng cch c mt hiu bit chi tit v tt c cc lnh c h tr bi b vi x l cho v s dng chng mt cch khn ngoan. Xt v d 3.12 di y. V d 3.12: Hy vit li chng trnh v d 3.8 mt cch hiu qu m bn c th: Li gii:

ORG 0 MOV A, #55H ; Np Avi gi tr 55H BACK: MOV P1, A ; Xut gi tr trong A ra cng P1 ACALL DELAY ; Gi chm CPL A ; B thnh ghi A SJMP BACK ; Tip tc thc hin v hn ; -------- y l chng trnh con gi chm DELAY DELAY: MOV R5, #0FFH ; Np R5 = 255 (hay FFH) lm cho b m AGAIN: DJNZ R5, AGAIN ; Dng y cho n khi R5 = 0 RET ; Tr v END ; Kt thc

3.3 To v tnh ton thi gian gi chm. 3.3.1 Chu k my: i vi CPU thc hin mt lnh th mt mt chu k ng h ny c coi nh cc chu k my. Ph lc AppendixA.2 cung cp danh sch lit k cc lnh 8051 v cc chu k my ca chng. tnh ton mt tr thi gian, ta s dng danh sch lit k ny. Trong h 8051 th di ca chu k my ph thuc vo tn s ca b dao ng thch anh c ni vo h thng 8051. B dao ng thch anh cng vi mch in trn chip cung cp xung ng h cho CPU ca 8051 (xem chng 4). Tn s ca tinh th thch anh c ni ti h 8051 dao ng trong khong 4MHz n 30 MHz ph thuc vo tc chp v nh sn xut. Thng xuyn nht l b dao ng thch anh tn s 10.0592MHz c s dng lm cho h 8051 tng thch vi cng ni tip ca PC IBM (xem chng 10). Trong 8051, mt chu k my ko di 12 chu k dao ng. Do vy, tnh ton chu k my ta ly 1/12 ca tn s tinh th thch anh, sau ly gi tr nghch o nh ch ra trong v d 3.13. V d 3.13: on m di y trnh by tn s thch anh cho 3 h thng da trn 8051 khc nhau. Hy tm chu k my ca mi trng hp: a) 11.0592MHz b) 16MHz v c) 20MHz. Li gii: a) 11.0592/12 = 921.6kHz; Chu k my l 1/921.6kHz = 1.085ms (micro giy) b) 16MHz/12 = 1.333MHz; Chu k my MC = 1/1.333MHz = 0.75ms c) 20MHz/12 = 1.66MHz MC = 1/1.66MHz = 0.60ms V d 3.14: i vi mt h thng 8051 c 11.0592MHz hy tm thi gian cn thit thc hin cc lnh sau y.
a) MOV R3, #55 d) LJMP e) SJMP b) DEC R3 f) NOP g) MUL AB c) DJNZ R2 ch

Li gii: Chu k my cho h thng 8051 c tn s ng h l 11.0592MHz L 1.085ms nh tnh v d 3.13. Bng A-1 trong ph lc Appendix A trnh by s chu k my i vi cc lnh trn. Vy ta c:

Lnh (a) MOV (b) DEC (c) DJNZ (d) LJMP (e) SJMP (f) NOP (g) MUL

R3, #55 R3 R2, target

AB

Chu k my 1 1 2 2 2 1 4

Thi gian thc hin 1 1.085 ms = 1.085 ms 1 1.085 ms = 1.085 ms 2 1.085 ms = 2.17 ms 2 1.085 ms = 2.17 ms 2 1.085 ms = 2.17 ms 1 1.085 ms = 1.085 ms 4 1.085 ms = 4.34 ms

3.3.2 Tnh ton tr. Nh trnh by trn y, mt chng trnh con gi chm gm c hai phn: (1) thit lp b m v (2) mt vng lp. Hu ht thi gian gi chm c thc hin bi thn vng lp nh trnh by v d 3.15. V d 3.15: Hy tm kch thc ca thi gian gi chm trong chng trnh sau, nu tn s giao ng thach anh l 11.0592MHz.
A, #55H P1, A ACALL DELAY CPL A SJMP AGAIN ; -------- Time delay DELAY: MOV R3, #200 HERE : DJNZ R3, HERE RET AGAIN: MOV MOV

Li gii: T bng A-1 ca ph lc Appendix A ta c cc chu k my sao cho cc lnh ca chng trnh con gi chm l:
DELAY: HERE : MOV DJNZ RET R3, #200 R3, HERE 1 2 1

Do vy tng thi gian gi chm l [(200 2) + 1 + 1] 1.085 = 436.17ms. Thng thng ta tnh thi gian gi chm da trn cc lnh bn trong vng lp v b qua cc chu k ng h lin quan vi cc lnh ngoi vng lp. Trong v d 3.15 gi tr ln nht m R3 c th cha l 255, do vy mt cch tng tr l s dng lnh UOP (khng lm g) trong vng lp tiu tn thi gian mt cch n gin. iu ny c ch ra trong v d 3.16 di y. V d 3.16: Hy tm tr thi gian cho chng trnh con sau. Gi thit tn s dao ng thch anh l 11.0592MHz.

DELAY: HERE :

MOV NOP NOP NOP NOP DJNZ RET

R3, #250

S chu k my 1
1 1 1 1 2 1

R3, HERE

Li gii: Thi gian tr bn trong vng lp HERE l [250 (1 + 1 + 1 + 1 + 1 + 2)] 1.0851ms = 1627.5ms. Cng thm hai lnh ngoi vng lp ta c 1627.5ms 1.085ms = 1629.67ms. 3.3.3 tr thi gian ca vng lp trong vng lp. Mt cch khc nhn c gi tr t tr ln l s dng mt vng lp bn trong vng lp v cng c gi l vng lp lng nhau. Xem v d 3.17 di y. V d 3.17: i vi mt chu k my 1.085ms hy tnh thi gian gi chm trong chng trnh con sau:
DELAY: AGAIN: HERE: MOV MOV NOP NOP DJNZ DJNZ RET R2, #200 R3, #250 R3, HERE R2, AGAIN

chu k my 1 1 1 1 2 2 1

Li gii: i vi vng lp HERE ta c (4 250) 1.085ms = 1085ms. Vng lp AGAIN lp vng lp HERE 200 ln, do vy thi gian tr l 200 1085ms 217000ms, nn ta khng tnh tng ph. Tuy nhin, cc lnh MOV R3, #250 v DJNZ R2, AGAIN u v cui vng lp AGAIN cng (3 200 1.085ms) = 651ms vo thi gian tr v kt qu ta c 217000 + 651 = 217651ms = 217.651 miligiy cho tng thi gian tr lin quan n chng trnh con gi chm DELAY ni trn. Lu rng, trong trng hp vng lp lng nhau cng nh trong mi vng lp gi chm khc thi gian xp x gn dng v ta b qua cc lnh u v cui trong chng trnh con.

You might also like