Академический Документы
Профессиональный Документы
Культура Документы
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.
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 ;
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
OVER: HERE:
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.
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
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.
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:
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:
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
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.
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.