Professional Documents
Culture Documents
Li gii:
35H 0FH 05H 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1
7.1.2: Lnh Hoc (OR). C php ORL ch = ch Hoc ngun (k bng) Cc ton hng ch v ngun c Hoc vi nhau v kt qu c t vo ch. Php Hoc c th c dng thit lp nhng bit nht nh ca mt ton hng 1. ch thng l thanh ghi tng, ton hng ngun c th l mt thanh ghi trong b nh hoc gi tr cho sn. Hy tham kho ph lc Appendix A bit thm v cc ch nh a ch c h tr bi lnh ny. Lnh ORL i vi cc ton hng nh a ch theo byte s khng c tc ng n bt k c no. Xem v d 7.2. V d 7.2: Trnh by kt qu ca on m sau:
MOV MOV A, #04 ; A = 04 A, #68H ; A = 6C
Li gii:
04H 68H 6CH 0000 0100 0110 1000 0110 1100
04 OR 68 = 6CH
7.1.3 Lnh XOR (OR loi tr?). C php: XRL ch, ngun; ch = ch Hoc loi tr ngun (k bng).
Li gii:
54H 78H 2CH 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1
V d 7.4: Lnh XRL c th c dng xo ni dung ca mt thanh ghi bng cch XOR n vi chnh n. Trnh by lnh XRL A, A xo ni dung ca A nh th no? gi thit AH = 45H. Li gii:
45H 45H 00 01000101 01000101 00000000
Lnh XRL cng c th c dng xem nu hai thanh ghi c gi tr ging nhau khng? Lnh XRL A, R1 s hoc loi tr vi thanh ghi R1 v t kt qu vo A. Nu c hai thanh ghi c cng gi tr th trong A s l 00. Sau c th dng lnh nh JZ thc hin theo kt qu. Xt v d 7.5. V d 7.5: c v kim tra cng P1 xem n c cha gi tr 45H khng? Nu c gi 99H n cng P2, nu khng xo n. Li gii:
MOV MOV MOV MOV XRL JNZ MOV EXIT: ... P2, #00 P1, #0FFH R3, #45H A, P1 A, R3 EXIT P2, #99H ; Xa P2 ; Ly P1 l cng u vo ; R3 = 45H ; c P1 ; Nhy nu A c gi tr khc 0
Trong chng trnh ca v d 7.5 lu vic s dng lnh nhy JNZ. Lnh JNZ v JZ kim tra cc ni dung ch ca thanh ghi tng. Hay ni cch khc l trong 8051khng c c 0.
7.1.4 Lnh b thanh ghi tng CPL A. Lnh ny b ni dung ca thanh ghi tng A. Php b l php bin i cc s 0 thnh cc s 1 v i cc s 1 sang s 0. y cng cn c gi l php b 1.
MOV CPL A, #55H A ; By gi ni dung ca thanh ghi A l AAH ; V 0101 0101 (55H) 1010 1010 (AAH)
nhn c kt qu b 2 th tt c mi vic ta cn phi lm l cng 1 vo kt qu b 1. Trong 8051 th khng c lnh b 2 no c. Lu rng trong khi b mt byte th d liu phi trong thanh ghi A. Lnh CPL khng h tr mt ch nh a ch no c. Xem v d 7.6 di y. V d 7.6: Tm gi tr b 2 ca 85H. Li gii:
MOV MOV ADD A, #85H A A, #1 ; Np 85H vo A (85H = 1000 0101) ; Ly b 1 ca A (kt qu = 0111 1010) ; Cng 1 vo A thnh b 2 A = 0111 1011 (7BH)
V d 7.1.5 Lnh so snh. 8051 c mt lnh cho php so snh. N c c php nh sau: CJNE ch, ngun, a ch tng i. Trong 8051 th php so snh v nhy c kt hp thnh mt lnh c tn l CJNE (so snh v nhy nu kt qu khng bng nhau). Lnh CJNE so snh hai ton hng ngun v ch v nhy n a ch tng i nu hai ton hng khng bng nhau. Ngoi ra n thay i c nh CY bo nu ton hng ch ln hn hay nh hn. iu quan trng cn l cc ton hng vn khng gi nguyn khng thay thay i. V d, sau khi thc hin lnh CJNE A, #67H, NEXT th thanh ghi A vn c gi tr ban u ca n (gi tr trc lnh CJNE). Lnh ny so snh ni dung thanh ghi A vi gi tr 67H v nhy n gi tr ch NEXT ch khi thanh ghi A c gi tr khc 67H. V d 7.7: Xt on m di y sau tr li cu hi: a) N s nhy n NEXT khng? b) Trong A c gi tr bao nhiu sau lnh CJNE?
MOV CJNE ... NEXT: ... A, #55H A, #99H, NEXT
NOT-EQUAL: NEXT:
rng trong lnh CJNE th khng c thanh ghi Rn no c th c so snh vi gi tr cho sn. Do vy khng cn phi ni n thanh ghi A. Cng cn lu rng c nh CY lun c kim tra xem ln hn hay nh hn, nhng ch khi xc nh l n khng bng nhau. Xt v d 7.8 v 7.9 di y. V d 7.8: Hy vit m xc nh xem thanh ghi A c cha gi tr 99H khng? Nu c th hy to R1 = FFH cn nu khng to R1 = 0. Li gii:
MOV CJNE MOV NEXT: ... OVER: ... R1, #0 ; Xo R1 A, #99H ; Nu A khng bng 99H th nhy n NEXT R1, #0FFH ; Nu chng bng nhau, gn R1 = 0FFH ; Nu khng bng nhau, gn R1 = 0
V d 7.9: Gi s P1 l mt cng u vo c ni ti mt cm bin nhit. Hy vit chng trnh c nhit v kim tra n i vi gi tr 75. Theo kt qu kim tra hy t gi tr nhit vo cc thanh ghi c ch nh nh sau:
Nu T = 75 Nu T < 75 Nu T > 75 th A = 75 th R1 = T th R2 = T
Li gii:
Lnh so snh thc s l mt php tr, ngoi tr mt iu l gi tr ca cc ton hng khng thay i. Cc c c thay i tu theo vic thc hin lnh tr SUBB. Cn phi c nhn mnh li rng, trong lnh CJNE cc ton hng khng b tc ng bt k kt qu so snh l nh th no. Ch c c CY l b tc ng, iu ny b chi phi bi thc t l lnh CJNE s dng php tr bt v xo c CY. V d 7.10: Vit mt chng trnh hin th lin tc cng P1 i vi gi tr 63H. N ch mt hin th khi P1 = 63H. Li gii:
HERE: MOV MOV CJNE P1, #0FFH A, P1 A, #63, HERE ; Chn P1 lm cng u vo ; Ly ni dung ca P1 ; Duy tr hin th tr khi P1 = 63H
V d 7.11: Gi s cc ngn nh ca RAM trong 40H - 44H cha nhit hng ngy ca 5 ngy nh c ch ra di y. Hy tm xem c gi tr no bng 65 khng? Nu gi tr 65 c trong bng hy t ngn nh ca n vo R4 nu khng th t R4 = 0.
40H = (76); 41H = (79); 42H = (69); 43H = (65); 44H = (64)
Li gii:
MOV MOV MOV MOV CJNE MOV SJMP INC DJNZ ... R4, #0 R0, #40H R2, #05 A, #65 A, @R0, NEXT R4, R0 EXIT R0 R2, BACK ; Xo R4 = 0 ; Np con tr ; Np b m ; Gn gi tr cn tm vo A ; So snh d liu RAM vi 65 ; Nu l 65, lu a ch vo R4 ; Thot ; Nu khng tng b m ; Tip tc kim tra cho n khi b m bng 0.
7.2 Cc lnh quay vo trao i. Trong rt nhiu ng dng cn phi thc hin php quay bit ca mt ton hng. Cc lnh quay 8051 l R1, RR, RLC v RRC c thit k c bit cho mc ch ny. Chng cho php mt chng trnh quay thanh ghi tng sang tri hoc phi. Trong 8051 quay mt byte th ton hng phi trong thanh ghi tng A. C hai kiu quay l: Quay n gin cc bit ca thanh ghi A v quay qua c nh (hay quay c nh).
MSB
LSB
b) Quay tri: C php: RL A ; Quay tri cc bit ca thanh ghi A (hnh v) Trong php quay tri th 8 bit ca thanh ghi A c quay sang tri 1 bit v bit D7 ri khi v tr bit cao nht chuyn sang v tr bit thp nht D0. Xem biu m di y.
MOV RL RL A, #72H A A ; A = 0111 0010 ; A = 1110 0100 ; A = 1100 1001 MSB LSB
Lu rng trong cc lnh RR v RL th khng c c no b tc ng. 7.2.2 Quay c nh. Trong 8051 cn c 2 knh quay na l quay phi c nh v quay tri c nh. C php: RRC A v RLC A a) Quay phi c nh: RRC A Trong quay phi c nh th cc bit ca thanh ghi A c quay t tri sang phi 1 bit v bit thp nht c a vo c nh CY v sau c CY c a vo v tr bit cao nht. Hay ni cch khc, trong php RRC A th LSB c chuyn vo CY v CY c chuyn vo MSB. Trong thc t th c nh CY tc ng nh l mt bit b phn ca thanh ghi A lm n tr thnh thanh ghi 9 bit.
CLR MOV RRC RRC RCC C A #26H A A A ; make CY = 0 ; A = 0010 0110 ; A = 0001 0011 CY = 0 ; A = 0000 1001 CY = 1 ; A = 1000 0100 CY = 1
MSB
LSB
CY
b) Quay tri c nh (hnh v): RLC A. Trong RLC A th cc bit c dch phi mt bit v y bit MSB vo c nh CY, sau CY c chuyn vo bit LSB. Hay ni cch khc, trong RLC th bit MSB c chuyn vo CY v CY c chuyn vo LSB. Hy xem on m sau.
SETB MOV RRC RRC C A #15H A A ; Make CY = 1 ; A = 0001 0101 ; A = 0101 1011 CY = 0 ; A = 0101 0110 CY = 0
CY
MSB
LSB
7.2.3 Lnh trao i thanh ghi A: SWAP A Mt lnh hu ch khc na l lnh trao i SWAP. N ch hot ng trn thanh ghi A, n trao i na phn cao ca byte v na phn thp ca byte vi nhau. Hay ni cch khc 4 bit cao c chuyn thnh 4 bit thp v 4 bit thp thnh 4 bit cao.
before: D7 - D4 D3 - D0 after: D3 - D0 D7 - D0
before:
0111
0010
after:
0010
0111
V d 7.12: a) Hy tm ni dung ca thanh ghi A on m sau. b) Trong trng hp khng c lnh SWAP th cn phi lm nh th no trao i nhng bit ny? Hy vit mt m chng trnh n gin v qu trnh . Li gii:
a) MOV SWAP b) MOV RL RL RL A, #72H ; A = 0111 0010 A ; A = 1110 0100 A ; A = 1100 1001 A ; A = 0010 0111 A, #72H ; A = 72H A ; A = 27H
AGAIN: NEXT:
truyn 1 byte d liu ni tip th d liu c th c chuyn i t song song sang ni tip bng cc lnh quay nh sau:
RRC MOV RRC A P1.3, C A ; Bt th nht a vo c CY ; Xut CY nh mt bit d liu ; Bit th hai a vo CY
on m trn y l mt phng php c s dng rng ri trong truyn d liu ti cc b nh ni tip nh cc EEPROM ni tip. 7.3 Cc chng trnh ng dng ca m BCD v ASCII. Cc s m BCD c trnh chng 6. Nh ni rng trong rt nhiu b vi iu khin mi u c mt ng h thi gian thc RTC (Real Time Clock) gi cho thi gian v c lch cho c khi b tt ngun. Cc b vi iu khin ny cung cp thi gian v lch di dng BCD. Tuy nhin, hin th chng th chng phi c chuyn v m ASCII. Trong phn ny ta trnh by ng dng ca cc lnh quay v cc lnh l-gc trong vic chuyn i m BCD v ASCII. Bng 7.2: M ASCII cho cc ch s t 0- 9. Phm 0 1 2 3 4 5 6 7 8 9 M ASCII (Hex) 30 31 32 33 34 35 36 37 38 39 M ASCII nh phn 011 0000 011 0001 011 0010 011 0011 011 0100 011 0101 011 0110 011 0111 011 1000 011 1001 M BCD (khng ng gi) 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001
7.3.1 Cc s m ASCII. Trn cc bn phm ASCII khi phm 0 c kch hot th 011 0001 (30H) c cp ti my tnh. Tng t nh vy 31H (011 0001) c cp cho phm 1 v.v... nh cyh ra trong bng 7.2. Cn phi ghi nh rng mc d m ASCII l chun m (v nhiu quc gia khc) nhng cc s m BCD l tng qut. V bn phm, my in v mn hnh u s dng m ASCII nn cn phi thc hin i chuyn gia cc s m ASCII v s m BCD v ngc li. 7.3.2 Chuyn i m BCD ng gi v ASCII. Cc b vi iu khin DS5000T u c ng b thi gian thc RTC. N cung cp hin th lin tc thi gian trong ngy (gi, pht v giy) v lch (nm, thng, ngy) m khng quan tm n ngun tt hay bt. Tuy nhin d liu ny c cp dng m BCD ng gi. hin th d liu ny trn mt LCD hoc in ra trn my in th n phi c chuyn v dng m ASCII. chuyn i m BCD ng gi v m ASCII th trc ht n phi c chuyn i thnh m BCD khng ng gi. Sau m BCD cha ng gi c mc vi 011 0000 (30H). Di y minh ho vic chuyn i t m BCD ng gi v m ASCII. Xem v d 7.14.
7.3.3 Chuyn i m ASCII v m BCD ng gi. chuyn i m ASCII v BCD ng gi trc th trc ht n phi c chuyn v m BCD khng ng gi ( c thm 3 s) v sau c kt hp to ra m SCD ng gi. V d s 4 v s 7 th bn phm nhn c 34 v 37. Mc tiu l to ra s 47H hay 0100 0111 l m BCD ng gi. Qa trnh ny nh sau:
Phm 4 7 MOV MOV ANL ANL SWAP ORL M ASCII 34 37 A, # 4 R1, # 7 A, #0FH R1, #0FH A A, R1 M BCD khng ng gi 0000 0100 0000 0111 ; Gn A = 34H m ASCII ca s 4 ; Gn R1 = 37H m ASCII ca s 4 ; Che na byte cao A (A = 04) ; Che na byte cao ca R1 (R1 = 07) ; A = 40H ; A = 47H, m BCD ng gi M BCD ng gi 0100 0111 hay 47H
Sau php chuyn i ny cc s BCD ng gi c x l v kt qu s l dng BCD ng gi. Nh ta bit chng 6 c mt lnh t bit l DA A i hi d liu phi dng BCD ng gi. V d 7.14: Gi s thanh ghi A c s m BCD ng gi hy vit mt chng trnh chuyn i m BCD v hai s ASCII v t chng vo R2 v R6. Li gii:
MOV MOV ANL ORL MOV MOV ANL RR RR RR RR ORL MOV A, #29H R2, A A, #0FH A, #30H R6, A A, R2 A, #0F0H A A A A A, #30H R2, A ; Gn A = 29, m BCD ng gi ; Gi mt bn sao ca BCD trong R2 ; Che phn na cao ca A (A = 09) ; To n thnh m ASCII A = 39H (s 9) ; Lu n vo R6 (R6 = 39H k t ca ASCII) ; Ly li gi tr ban u ca A (A = 29H) ; Che na byte phn thp ca A (A = 20) ; Quay phi ; Quay phi ; Quay phi ; Quay phi (A = 02) ; To n thnh m ASCII (A = 32H, s 2) ; Lu k t ASCII vo R2
Trong v d trn tt nhin l ta c th thay 4 lnh RR quay phi bng mt lnh trao i WAPA.