Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Chng I Cc b vi iu khin 8051 1.1 cc b vi iu khin v cc b x l nhng. Trong mc ny chng ta bn v nhu cu i vi cc b vi iu khin (VK) v so snh chng vi cc b vi x l cng dng chung nh Pentium v cc b vi x l 86 khc. Chng ta cng xem xt vai tr ca cc b vi iu khin trong th trng cc sn phm nhng. Ngoi ra, chng ta cung cp mt s tiu chun v cch la chn mt b vi iu khin nh th no. 1.1.1 B vi iu khin so vi b vi x l cng dng chung S khc nhau gia mt b vi iu khin v mt b vi x l l g? B vi x l y l cc b vi x l cng dung chung nh h Intell 86 (8086, 80286, 80386, 80486 v Pentium) hoc h Motorola 680 0(68000, 68010, 68020, 68030, 68040 v.v...). Nhng b VXL ny khng c RAM, ROM v khng c cc cng vo ra trn chp. Vi l do m chng c gi chung l cc b vi x l cng dng chung.
Data bus CPU CPU GeneralPurpose Microprocessor RAM ROM I/O Port Timer Serial COM Port I/O Address bus (a) General-Purpose Microcessor System (b) Microcontroller Timer RAM ROM
Hnh 1.1: H thng vi x l c so snh vi h thng vi iu khin. a) H thng vi x l cng dng chung b) H thng vi iu khin
1.1.2 Cc b VK cho cc h thng nhng. Trong ti liu v cc b vi x l ta thng thy khi nim h thng nhng (Embeded system). Cc b vi x l v cc b vi iu khin c s dng rng ri trong cc sn phm h thng nhng. Mt sn phm nhng s dng mt b vi x l (hoc mt b vi iu khin thc hin mt nhim v v ch mt m thi. Mt my in l mt v d v mt vic nhng v b x l bn trong n ch lm mt vic l nhn d liu v in n ra. iu ny khc vi mt my tnh PC da trn b x l Pentium (hoc mt PC tng thch vi IBM 86 bt k). Mt PC c th c s dng cho mt s bt k cc trm dch v in, b u cui kim k nh bng, my chi tr chi in t, trm dch v mng hoc trm u cui mng Internet. Phn mm cho cc ng dng khc nhau c th c np v chy. Tt nhin l l do hin nhin mt PC thc hin hng lot cc cng vic l n c b
Cng nn lu rng Motorola, Zilog v Mierochip Technology dnh mt lng ti nguyn ln m bo kh nng sn sng v mt thi gian v phm vi rng cho cc sn phm ca h t khi cc sn phm ca h i vo sn xut n nh, hon thin v tr thnh ngun chnh. Trong nhng nm gn y h cng bt u bn t bo th vin Asic ca b vi iu khin. 1.2 Tng quan v h 8051. Trong mc ny chng ta xem xt mt s thnh vin khc nhau ca h b vi iu khin 8051 v cc c im bn trong ca chng. ng thi ta im qua mt s nh sn xut khc nhau v cc sn phm ca h c trn th trng. 1.2.1 Tm tt v lch s ca 8051. Vo nm 1981. Hng Intel gii thiu mt s b vi iu khin c gi l 8051. B vi iu khin ny c 128 byte RAM, 4K byte ROM trn chp, hai b nh thi, mt cng ni tip v 4 cng (u rng 8 bit) vo ra tt c c t trn mt chp. Lc y n c coi l mt h thng trn chp. 8051 l mt b x l 8 bit c ngha l CPU ch c th lm vic vi 8 bit d liu ti mt thi im. D liu ln hn 8 bit c chia ra thnh cc d liu 8 bit cho x l. 8051 c tt c 4 cng vo - ra I/O mi cng rng 8 bit (xem hnh 1.2). Mc d 8051 c th c mt ROM trn chp cc i l 64 K byte, nhng cc nh sn xut lc cho xut xng ch vi 4K byte ROM trn chp. iu ny s c bn chi tit hn sau ny.
1.2.2 B v iu khin 8051 B vi iu khin 8051 l thnh vin u tin ca h 8051. Hng Intel k hiu n nh l MCS51. Bng 3.1 trnh by cc c tnh ca 8051.
EXTERNAL INTERRUPTS INTERRUPT CONTROL ON - CHIP RAM
COUNTER INPUTS
CPU
OSC
BUS CONTROL
4 I/O PORTS
SERIAL PORT
Hnh 1.2: B tr bn trong ca s khi 8051. 1.2.3 cc thnh vin khc ca h 8051 C hai b vi iu khin thnh vin khc ca h 8051 l 8052 v 8031. a- B vi iu khin 8052: B vi iu khin 8052 l mt thnh vin khc ca h 8051, 8052 c tt c cc c tnh chun ca 8051 ngoi ra n c thm 128 byte RAM v mt b nh thi na. Hay ni cch khc l 8052 c 256 byte RAM v 3 b nh thi. N cng c 8K byte ROM. Trn chp thay v 4K byte nh 8051. Xem bng 1.4. Bng1.4: so snh cc c tnh ca cc thnh vin h 8051. c tnh ROM trn chp RAM B nh thi Chn vo - ra Cng ni tip Ngun ngt 8051 4K byte 128 byte 2 32 1 6 8052 8K byte 256 byte 3 32 1 8 8031 OK 128 byte 2 32 1 6
Nh nhn thy t bng 1.4 th 8051 l tp con ca 8052. Do vy tt c mi chng trnh vit cho 8051 u chy trn 8052 nhng iu ngc li l khng ng. b- B vi iu khin 8031: Mt thnh vin khc na ca 8051 l chp 8031. Chp ny thng c coi nh l 8051 khng c ROM trn chp v n c OK
Ch C trong k hiu AT89C51 l CMOS. Cng c nhng phin bn ng v v tc khc nhau ca nhng sn phm trn y. Xem bng 1.6. V d rng ch C ng trc s 51 trong AT 89C51 -12PC l k hiu cho CMOS 12 k hiu cho 12 MHZ v P l kiu ng v DIP v ch C cui cng l k hiu cho thng mi (ngc vi ch M l qun s ). Thng thng AT89C51 - 12PC rt l tng cho cc d n ca hc sinh, sinh vin. Bng 1.6: Cc phin bn 8051 vi tc khc nhau ca Atmel. M linh kin AT89C5112PC Tc 42MHZ S chn 40 ng v DTP Mc ch Thng mi
c- B vi iu khin DS5000 t hng Dallas Semiconductor. Mt phin bn ph bin khc na ca 8051 l DS5000 ca hng Dallas Semiconductor. B nh ROM trn chp ca DS5000 di dng NV-RAM. Kh nng c/ ghi ca n cho php chng trnh c np vo ROM trn chp trong khi n vn trong h thng (khng cn phi ly ra). iu ny cn c th c thc hin thng qua cng ni tip ca my tnh IBM PC. Vic np chng trnh trong h thng (in-system) ca DS5000 thng qua cng ni tip ca PC lm cho n tr thnh mt h thng pht trin ti ch l tng. Mt u vit ca NV-RAM l kh nng thay i ni dung ca ROM theo tng byte ti mt thi im. iu ny tng phn vi b nh Flash v EPROM m b nh ca chng phi c xo sch trc khi lp trnh li cho chng. Bng 1.7: Cc phin bn 8051 t hng Dallas Semiconductor. M linh ROM RAM kin 128 DS5000-8 8K 128 DS5000-32 32K 128 DS5000T-8 8K 128 DS5000T-8 32K Chn I/O 32 32 32 32 Time Ng Vc r t c 5V 6 2 5V 6 2 5V 6 2 5V 6 2 ng v 40 40 40 40
Ch T ng sau 5000 l c ng h thi gian thc. Lu rng ng h thi gian thc RTC l khc vi b nh thi Timer. RTC to v gi thi gian l pht gi, ngy, thng - nm k c khi tt ngun. Cn c nhiu phin bn DS5000 vi nhng tc v kiu ng gi khc nhau.( Xem bng 1.8). V d DS5000-8-8 c 8K NV-RAM v tc 8MHZ. Thng thng DS5000-8-12 hoc DS5000T-8-12 l l tng i vi cc d n ca sinh vin. Bng 1.8:Cc phin bn ca DS5000 vi cc tc khc nhau M linh kin DS5000-8-8 DS5000-8-12 DS5000-32-8 NV- RAM 8K 8K 32K Tc 8MHz 12MHz 8MHz
d- Phin bn OTP ca 8051. Cc phin bn OTP ca 8051 l cc chp 8051 c th lp trnh c mt ln v c cung cp t nhiu hng sn xut khc nhau. Cc phin bn Flash v NV-RAM thng c dng pht trin sn phm mu. Khi mt sn pohm c thit k v c hon thin tuyt i th phin bn OTP ca 8051 c dng sn hng lot v n s hn rt nhiu theo gi thnh mt n v sn phm e- H 8051 t Hng Philips Mt nh sn xut chnh ca h 8051 khc na l Philips Corporation. Tht vy, hng ny c mt di la chn rng ln cho cc b vi iu khin h 8051. Nhiu sn phm ca hng c km theo cc c tnh nh cc b chuyn i ADC, DAC, cng I/0 m rng v c cc phin bn OTP v Flash.
Trong CPU cc thanh ghi c dng lu ct thng tin tm thi, nhng thng tin ny c th l mt byte d liu cn c s l hoc l mt a ch n d liu cn c np. Phn ln cc thanh ghi ca 8051 l cc thanh ghi 8 bit. Trong 8051 ch c mt kiu d liu: Loi 8 bit, 8 bit ca mt thanh ghi c trnh by nh sau:
D7 D6 D5 D4 D3 D2 D1 D0
Cc thanh ghi.
vi MSB l bit c gi tr cao nht D7 cho n LSB l bit c gi tr thp nht D0. (MSB - Most Sigfican bit v LSB - Leart Significant Bit). Vi mt kiu d liu 8 bit th bt k d liu no ln hn 8 bit u phi c chia thnh cc khc 8 bit trc khi c x l. V c mt s lng ln cc thanh ghi trong 8051 ta s tp trung vo mt s thanh ghi cng dng chung c bit trong cc chng k tip. Hy tham kho ph lc Appendix A.3 bit y v cc thanh ghi ca 8051. Hnh 2.1: a) Mt s thanh ghi 8 bit ca 8051 b) Mt s thanh ghi 16 bit ca 8051
A B R0 R1 R2 R3 R4 R5 R6 R7 DPTR PC DPH DPL
PC (program counter)
Cc thanh ghi c s dng rng ri nht ca 8051 l A (thanh ghi tch lu), B, R0 R7, DPTR (con tr d liu) v PC (b m chng trnh). Tt c cc d liu trn u l thanh g hi 8 bit tr DPTR v PC l 16 bit. Thanh ghi tch lu A c s dng cho tt c mi php ton s hc v l-gc. hiu s dng cc thanh ghi ny ta s gii thiu chng trong cc v d vi cc lnh n gin l ADD v MOV.
2.1.2
Ni mt cch n gin, lnh MOV sao chp d liu t mt v tr ny n mt v tr khc. N c c php nh sau: MOV ; ch, ngun; sao chp ngun vo ch
A, #23H R0, #12H R1, #1FH R2, #2BH B, # 3CH R7, #9DH R5, #0F9H R6, #12
; Np gi tr 23H vo A (A = 23H) ; Np gi tr 12H vo R0 (R0 = 2BH) ; Np gi tr 1FH vo R1 (R1 = 1FH) ; Np gi tr 2BH vo R2 (R2 = 2BH) ; Np gi tr 3CH vo B (B = 3CH) ; Np gi tr 9DH vo R7 (R7 = 9DH) ; Np gi tr F9H vo R5 (R5 = F9H) ;Np gi tr thp phn 12 = 0CH vo R6 (trong R6 c gi tr 0CH).
trong lnh MOV R5, #0F9H th phi c s 0 ng trc F v sau du # bo rng F l mt s Hex ch khng phi l mt k t. Hay ni cch khc MOV R5, #F9H s gy ra li.
2. Nu cc gi tr 0 n F c chuyn vo mt thanh ghi 8 bit th cc bit cn li c coi l tt c cc s 0. V d, trong lnh MOV A,#5 kt qu l A=0.5, l A = 0000 0101 dng nh phn. 3. Vic chuyn mt gi tr ln hn kh nng cha ca thanh ghi s gy ra li v d:
4. np mt gi tr vo mt thanh ghi th phi gn du # trc gi tr . Nu khng c du th n hiu rng np t mt v tr nh. V d MOV A, 17H c ngha l np gi tr trong ngn nh c gi tr 17H vo thanh ghi A v ti a ch d liu c th c bt k gi tr no t 0 n FFH. Cn np gi tr l 17H vo thanh ghi A th cn phi c du # trc 17H nh th ny. MOV A, #17H. Cn lu rng nu thiu du # trc mt th s khng gy li v hp ng cho l mt lnh hp
2.1.3
Lnh cng ADD c cc php nh sau: ADD a, ngun ; Cng ton hng ngun vo thanh ghi A. Lnh cng ADD ni CPU cng byte ngun vo thanh ghi A v t kt qu thanh ghi A. cng hai s nh 25H v 34H th mi s c th chuyn n mt thanh ghi v sau cng li vi nhau nh: MOV A, #25H ; Np gi tr 25H vo A MOV R2, #34H ; Np gi tr 34H vo R2 ADD A, R2 ; Cng R2 vo A v kt qu A = A + R2 Thc hin chng trnh trn ta c A = 59H (v 25H + 34H = 59H) v R2 = 34H, ch l ni dng R2 khng thay i. Chng trnh trn c th vit theo nhiu cch ph thuc vo thanh ghi c s dng. Mt trong cch vit khc c th l: MOV R5, #25H ; Np gi tr 25H vo thanh ghi R5 MOV R7, #34H ; Np gi tr 34H vo thanh ghi R7 MOV A, #0 ; Xo thanh ghi A (A = 0) ADD A, R5 ; Cng ni dung R5 vo A (A = A + R5) ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7 = 25H + 34H) Chng trnh trn c kt qu trong A L 59H, c rt nhiu cch vit chng trnh ging nh vy. Mt cu hi c th t ra sau khi xem on chng trnh trn l liu c cn chuyn c hai d liu vo cc thanh ghi trc khi cng chng vi nhau khng? Cu tr li l khng cn. Hy xem on chng trnh di y: MOV A, #25H ; Np gi tr th nht vo thanh ghi A (A = 25H) ADD A, #34H ; Cng gi tr th hai l 34H vo A (A = 59H)
Trong trng hp trn y, khi thanh ghi A cha s th nht th gi tr th hai i theo mt ton hng. y c gi l ton hng tc thi (trc tip). Cc v d trc cho n gi th lnh ADD bo rng ton hng ngun c th hoc l mt thanh ghi hoc l mt d liu trc tip (tc thi) nhng thanh ghi ch lun l thanh ghi A, thanh ghi tch lu. Hay ni cch khc l mt lnh nh ADD R2, #12H l lnh khng hp l v mi php ton s hc phi cn n thanh ghi A v lnh ADD R4, A cng khng hp l v A lun l thanh ghi ch cho mi php s hc. Ni mt cch n gin l trong 8051 th mi php ton s hc u cn n thanh A vi vai tr l ton hng ch. Phn trnh by trn y gii thch l do v sao thanh ghi A nh l thanh thi tch lu. C php cc lnh hp ng m t cch s dng chng v lit k cc kiu ton hng hp l c cho trong ph lc Appendix A.1. C hai thanh ghi 16 bit trong 8051 l b m chng trnh PC v con tr d liu APTR. Tm quan trng v cch s dng chng c trnh by mc 2.3. Thanh ghi DPTR c s dng truy cp d liu v c lm k chng 5 khi ni v cc ch nh a ch.
Trong phn ny chng ta bn v dng thc ca hp ng v nh ngha mt s thut ng s dng rng ri gn lin vi lp trnh hp ng.
Mt chng trnh hp ng bao gm mt chui cc dng lnh hp ng. Mt lnh hp ng c cha mt t gi nh (mnemonic) v tuy theo tng lnh v sau n c mt hoc hai ton hng. Cc ton hng l cc d liu cn c thao tc v cc t gi nh l cc lnh i vi CPU ni n lm g vi cc d liu. ORG 0H ; Bt u (origin) ti ngn nh 0 MOV R5, #25H ; Np 25H vo R5 MOV R7, #34H ; Np 34H vo R7 MOV A, #0 ; Np 0 vo thanh ghi A ADD A, R5 ; Cng ni dng R5 vo A (A = A + R5) ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7) ADD A, #121H ; Cng gi tr 12H vo A (A = A + 12H) HERE: SJMP HERE ; li trong vng lp ny END ; Kt thc tp ngun hp ng Chng trnh 2.1: V d mu v mt chng trnh hp ng. Chng trnh 2.1 cho trn y l mt chui cc cu lnh hoc cc dng lnh c vit hoc bng cc lnh hp ng nh ADD v MOV hoc bng cc cu lnh c gi l cc ch dn. Trong khi cc lnh hp ng th ni CPU phi lm g th cc ch lnh
Cu trc ca hp ng.
ADD A, B MOV A, #67H th ADD v MOV l nhng t gi nh to ra m lnh, cn A, B v A, #67H l nhng ton hng th hai trng c th cha cc lnh gi hoc ch lnh ca hp ng. Hy nh rng cc ch lnh khng to ra m lnh no (m my) v chng ch dng bi hp ng, ngc li i vi cc lnh l chng c dch ra m my (m lnh) cho CPU thc hin. Trong chng trnh 2.1 cc lnh ORG v END l cc ch lnh (mt s hp ng ca 8051 s dng dng .ORG v .END). Hy c quy nh c th ca hp ng ta s dng.
3. Chng ch gii lun phi bt u bng du chm phy (;). Cc ch gii c th bt u u dng hoc gia dng. Hp ng b qua (lm ng) cc ch gii nhng chng li rt cn thit i vi lp trnh vin. Mc EDITOR d cc ch gii l tu chn, khng bt buc PRAGRAM nhng ta nn dng chng m t chng trnh gip cho ngi khc c v hiu myfile.asm chng trnh d dng hn. 4. Lu n nhn HERE trong trng nhn ASSEMBLER PRAGRAM ca chng trnh 2.1. Mt nhn bt k tham chiu n mt lnh phi c du hai myfile.lst chm (:) ng sau. Trong cu lnh nhy other obj file ngn SJMP th 8051 c ra lnh li myfile.obj trong vng lp ny v hn. Nu h thng ca chng ta c mt chng trnh gim st LINKER th takhng cn dng lnh ny v n c th PRAGRAM c xo i ra khi chng trnh.
myfile.abs OH PRAGRAM myfile.hex
Tp .asm cng c gi l tp ngun v chnh v l do ny m mt s trnh hp ng i hi tp ny phi c mt phn m rng src t ch source l ngun. Hy kim tra hp ng 8051 m ta s dng xem n c i hi nh vy khng? Nh ta ni trc y tp ny c to ra nh mt trnh bin tp chng hn nh Edit ca DOS hoc Notepad ca Windows. Hp ng ca 8051 chuyn i cc tp hp ng trong tp .asm thnh ngn ng m my v cung cp tp i tng .object. Ngoi vic to ra tp i tng trnh hp ng cng cho ra tp lit k lst (List file).
2.3.2
2.3.1
Tp lit k l mt tu chn, n rt hu ch cho lp trnh vin v n lit k tt c mi m lnh v a ch cng nh tt c cc li m trnh hp ng pht hin ra. Nhiu trnh hp ng gi thit rng, tp lit k l khng cn thit tr khi ta bo rng ta mun to ra n. Tp ny c th c truy cp bng mt trnh bin dch nh Edit ca DOS hoc Notepad ca Window v c hin th trn mn hnh hoc c gi ra my in. Lp trnh vin s dng tp lit k tm cc li c php. Ch sau khi sa ht cc li c nh du trong tp lit k th tp i tng mi sn sng lm u vo cho chng trnh lin kt. 1 0000 ORG 0H ; Bt u a ch 0 2 0000 7D25 MOV R5, #25H ; Np gi tr 25H vo R5 3 0002 7F34 MOV R7, #34H ; Np gi tr 34H vo R7 4 0004 7400 MOV A, #0 ; Np 0 vo A (xo A) 5 0006 2D ADD A, R5 ; Cng ni dung R5 vo A (A = A + R5) 6 0007 2F ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7) 7 0008 2412 ADD A, #12H ; Cng gi tr 12H vo A (A = A + 12H)
Tp lit k .lst.
Mt thanh ghi quan trng khc trong 8051 l b m chng trnh . B m chng trnh ch m a ch ca lnh k tip cn c thc hin. Khi CPU np m lnh t b nh ROM chng trnh th b m chng trnh tng ln ch m lnh kt tip. B m chng trnh trong 8051 c th truy cp cc a ch chng trnh trong 8051 rng 16 bit. iu ny c ngha l 8051 c th truy cp cc a cha chng trnh t 0000 n FFFFH tng cng l 64k byte m lnh. Tuy nhin, khng phi tt c mi thnh vin ca 8051 u c tt c 64k byte ROM trn chp c ci t. Vy khi 8051 c bt ngun th n nh thc a cha no?
2.4.2
Mt cu hi m ta phi hi v b vi iu khin bt k l th n c cp ngun th n bt u t a ch no? Mi b vi iu khin u khc nhau. Trong trng hp h 8051 th mi thnh vin k t nh sn xut no hay phin bn no th b vi iu khin u bt u t a ch 0000 khi n c bt ngun. Bt ngun y c ngha l ta cp in p Vcc n chn RESET nh s trnh by chng 4. Hay ni cch khc, khi 8051 c cp ngun th b m chng trnh c gi tr 0000. iu ny c ngha l n ch m lnh u tin c lu a cha ROM 0000H. V l do ny m trong v tr nh 0000H ca b nh ROM chng trnh v y l ni m n tm lnh u tin khi bt ngun. Chng ta t c iu ny bng cu lnh ORG trong chng trnh ngun nh trnh by trc y. Di y l hot ng tng bc ca b m chng trnh trong qa trnh np v thc thi mt chng trnh mu.
2.4.3
hiu tt hn vai tr ca b m chng trnh trong qu trnh np v thc thi mt chng trnh, ta kho st mt hot ng ca b m chng trnh khi mi lnh c np v thc thi. Trc ht ta kho st mt ln na tp lit k ca chng trnh mu v cch t m vo ROM chng trnh 8051 nh th no? Nh ta c th thy, m lnh v ton hng i vi mi lnh c lit k bn tri ca lnh lit k. Chng trnh 2.1: V d mu v mt chng trnh hp ng. Chng trnh 2.1 cho trn y l mt chui cc cu lnh hoc cc dng lnh c vit hoc bng cc lnh hp ng nh ADD v MOV hoc bng cc cu lnh c gi l cc ch dn. Trong khi cc lnh hp ng th ni CPU phi lm g th cc ch lnh (hay cn gi l gi lnh) th a ra cc ch lnh cho hp ng. V d, trong chng trnh 2.1 th cc lnh ADD v MOV l cc lnh n CPU, cn ORG v END l cc ch lnh i vi hp ng. ORG ni hp ng t m lnh ti ngn nh 0 v END th bo cho hp ng bit kt thc m ngun. Hay ni cch khc mt ch lnh bt u v ch lnh th hai kt thc chng trnh. Cu trc ca mt lnh hp ng c 4 trng nh sau: [nhn:] [t gi nh] [cc ton hng] [; ch gii] Cc trng trong du ngoc vung l tu chn v khng phi dng lnh no cng c chng. Cc du ngoc vung khng c vit vo. Vi dng thc trn y cn lu cc im sau:
Bng ni dung ROM ca chng trnh 2.1. Bng lit k ch ra a ch 0000 cha m 7D l m lnh chuyn mt gi tr vo thanh ghi R5 v a ch 0001 cha ton hng ( y l gi tr 254) cn c chuyn vo R5. Do vy, lnh MOV R5, #25H c m l 7D25 trong 7D l m lnh,
Gi s rng chng trnh trn c t vo ROM ca chp 8051 hoc( 8751, AT 8951 hoc DS 5000) th di y l m t hot ng theo tng bc ca 8051 khi n c cp ngun.
1. Khi 8051 c bt ngun, b m chng trnh PC c ni dung 0000 v bt u np m lnh u tin t v tr nh 0000 ca ROM chng trnh. Trong trng hp ca chng trnh ny l m 7D chuyn mt ton hng vo R5. Khi thc hin m lnh CPU np gi tr 25 vo b m chng trnh c tng ln ch n 0002 (PC = 0002) c cha m lnh 7F l m ca lnh chuyn mt ton hng vo R7 MOV R7, .... 2. Khi thc hin m lnh 7F th gi tr 34H c chuyn vo R7 sau PC c tng ln 0004. 3. Ngn nh 0004 cha m lnh ca lnh MOV A, #0. Lnh ny c thc hin v by gi PC = 0006. Lu rng tt c cc lnh trn u l nhng lnh 2 byte, ngha l mi lnh chim hai ngn nh. 4. By gi PC = 0006 ch n lnh k tip l ADD A, R5. y l lnh mt byte, sau khi thc hin lnh ny PC = 0007. 5. Ngn nh 0007 cha m 2F l m lnh ca ADD A, R7. y cng l lnh mt byte, khi thc hin lnh ny PC c tng ln 0008. Qa trnh ny c tip tc cho n khi tt c moi lnh u c np v thc hin. Thc t m b m chng trnh ch n lnh k tip cn c thc hin gii thch ti sao mt s b vi x l (ng ni l 86) gi b m l con tr lnh (Instruction Pointer).
Bn nh ROM trong h 8051.
2.4.5
Nh ta thy chng trc, mt s thnh vin h 8051 ch c 4k byte b nh ROM trn chp (v d 8751, AT 8951) v mt s khc nh AT 8951 c 8k byte ROM, DS 5000-32 ca Dallas Semiconductor c 32k byte ROM trn chp. Dallas Semiconductor cng c mot 8051 vi ROM trn chp l 64k byte. im cn nh l khng c thnh vin no ca h 8051 c th truy cp c hn 64k byte m lnh v b m chng trnh ca 8051 l 16 bit (di a ch t 0000 n FFFFH). Cn phi ghi nh l lnh u tin ca ROM chng trnh u t 0000, cn lnh cui cng ph thuc vo dung lng ROM trn chp ca mi thnh vin h 8051. Trong s cc thnh vin h 8051 th 8751 v AT 8951 c 4k byte ROM trn chp. B nh ROM trn chp ny c cc a ch t 0000 n 0FFFH. Do vy, ngn nh u tin c a ch 0000 v ngn nh cui cng c a cha 0FFFH. Hy xt v d 2.1. V d 2.1: Tm a ch b nh ROM ca mi thnh vin h 8051 sau y.
a) AT 8951 (hoc 8751) vi 4k byte b) DS 5000-32 vi 32k byte
B vi iu khin ch c mt kiu d liu, n l 8 bit v di mi thanh ghi cng l 8 bit. Cng vic ca lp trnh vin l phn chia d liu ln hn 8 bit ra thnh tng khc 8 bit (t 00 n FFH hay t 0 n 255) CPU x l. V d v x l d liu ln hn 8 bit c trnh by chng 6. Cc d liu c s dng bi 8051 c th l s m hoc s dng v v x l cc s c du c bn chng 6. Ch lnh DB l mt ch lnh d liu c s dng rng ri nht trong hp ng. N c dng nh ngha d liu 8 bit. Khi DB c dng nh ngha byte d liu th cc s c th dng thp phn, nh phn, Hex hoc dng thc ASII. i vi d liu thp phn th cn t ch D sau s thp phn, i vi s nh phn th t ch B v i vi d liu dng Hex th cn t ch H. Bt k ta s dng s dng thc no th hp ng u chuyn i chng v thnh dng Hex. bo dng thc dng m ASCII th ch cn n gin t n vo du nhy n nh th ny. Hp ng s gn m ASCII cho cc s hoc cc k t mt cch t ng. Ch lnh DB ch l ch lnh m c th c s dng nh ngha cc chui ASCII ln hn 2 k t. Do vy, n c th c s dng cho tt c mi nh ngha d liu ASCII. Di y l mt s v d v DB:
ORG DATA1: DB DATA2: DB DATA3: DB DATA4: DB DATA5 DB 500H 2B 00110101B 39H ORG 510H 2591 ORG 518H My name is Joe ; S thp phn (1C dng Hex) ; S nh phn (35 dng Hex) ; S dng Hex ; Cc s ASCII ; Cc k t ASCII 2.5.2 Ch lnh DB (nh ngha byte).
2.5.1
1. Ch lnh ORG: Ch lnh ORG c dng bo bt u ca a ch. S i sau ORG c k dng Hex hoc thp phn. Nu s ny c km ch H ng sau th l dng Hex v nu khng c ch H sau l s thp phn v hp ng s chuyn n thnh s Hex. Mt s hp ng s dng du chm ng trc ORG thay cho ORG. Hy c k v trnh hp ng ta s dng. 2. Ch lnh EQU: c dng nh ngha mt hng s m khng chim ngn nh no. Ch lnh EQU khng dnh ch ct cho d liu nhng n gn mt gi tr hng s vi nhn d liu sao cho khi nhn xut hin trong chng trnh gi tr hng s ca n s c thay th i vi nhn. Di y s dng EQU cho hng s b m v sau hng s c dng np thanh ghi RS.
COUNT EQU 25 MOV R3, #count
Cc ch lnh ca hp ng.
Khi thc hin ln MOV R3, #COUNT th thanh ghi R3 s c np gi tr 25 (ch n du #). Vy u im ca vic s dng EQU l g? Gi s c mt hng s (mt gi tr c nh) c dng trong nhiu ch khc nhau trong chng trnh v lp trnh vin mun thay i gi tr ca n trong c chng trnh. Bng vic s dng ch lnh EQU ta c th thay i mt s ln v hp ng s thay i tt c mi ln xut hin ca n l tm ton b chng trnh v gng tm mi ln xut hin. 3. Ch lnh END: Mt lnh quan trng khc l ch lnh END. N bo cho trnh hp ng kt thc ca tp ngun asm ch lnh END l dng cui cng ca chng trnh 8051 c ngha l trong m ngun th mi th sau ch lnh END b trnh hp ng b qua. Mt s trnh hp ng s dng .END c du chm ng trc thay cho END.
2.5.4
Bng cch chn cc tn nhn c ngha l mt lp trnh vin c th lm cho chng trnh d c v d bo tr hn, c mt s quy nh m cc tn nhn phi tun theo. Th nht l mi tn nhn phi thng nht, cc tn c s dng lm nhn trong hp ng gm cc ch ci vit hoa v vit thng, cc s t 0 n 9 v cc du c bit nh: du hi (?), du (), du gch di (_), du l ($) v du chu k (.). K t u tin ca nhn phi l mt ch ci. Hay ni cch khc l n khng th l s Hex. Mi trnh hp ng c mt s t d tr l cc t gi nh cho cc lnh m khng c dng lm nhn trong chng trnh. V d nh MOV v ADD. Bn cnh cc t gi nh cn c mt s t d tr khc, hy kim tra bn lit k cc t d phng ca hp ng ta ang s dng. Cng nh cc b vi x l khc, 8051 c mt thanh ghi c bo cc iu kin s hc nh bit nh. Thanh ghi c trong 8051 c gi l thanh ghi t trng thi chng trnh PSW. Trong phn ny v a ra mt s v d v cch thay i chng.
Thanh ghi PSW l thanh ghi 8 bit. N cng cn c coi nh l thanh ghi c. Mc d thanh ghi PSW rng 8 bit nhng ch c 6 bit c 8051 s dng. Hai bit cha dng l cc c ch ngi dng nh ngha. Bn trong s cc c c gi l cc c c iu kin, c ngha l chng bo mt s iu kin do kt qu ca mt lnh va c thc hin. Bn c ny l c nh CY (carry), c AC (auxiliary cary), c chn l P (parity) v c trn OV (overflow). Nh nhn thy t hnh 2.4 th cc bit PSW.3 v PSW.4 c gn nh RS0 v RS1 v chng c s dng thay i cc thanh ghi bng. Chng s c gii thch phn k sau. Cc bit PSW.5 v PSW.1 l cc bit c trng thi cng dng chung v lp trnh vin c th s dng cho bt k mc ch no.
CY CY AC AC PSW.7 PSW.6 PSW.4 PSW.3 PSW.2 F0 RS1 ; C nh ; C RS0 OV P
RS1 RS0 OV P
PSW.5
PSW.1
PSW.0 ; C chn, l. Thit lp/ xo bng phn cng mi chu k lnh bo tng cc s bit 1 trong thanh ghi A l chn/ l. RS1 RS0 Bng thanh ghi a ch 0 0 0 00H - 07H 0 1 1 08H - 0FH 1 0 2 10H - 17H 1 1 3 18H - 1FH
Hnh 2.4: Cc bit ca thanh ghi PSW Di y l gii thch ngn gn v 4 bit c ca thanh ghi PSW.
1. C nh CY: C ny c thit lp mi khi c nh t bit D7. C ny c tc ng sau lnh cng hoc tr 8 bit. N cng c thit lp ln 1 hoc xo v 0 trc tip bng lnh SETB C v CLR C ngha l thit lp c nh v xo c nh tng ng. V cc lnh nh a ch theo bit c bn k chng 8. 2. C AC: C ny bo c nh t bit D3 sang D4 trong php cng ADD hoc tr SUB. C ny c dng bi cc lnh thc thi php s hc m BCD (xem chng 6). 3. C chn l P: C chn l ch phn nh s bit mt trong thanh ghi A l chn hay l. Nu thanh ghi A cha mt s chn cc bit mt th P = 0. Do vy, P = 1 nu A c mt s l cc bit mt. 4. C chn OV: C ny c thit lp mi khi kt qu ca mt php tnh s c du qu ln to ra bit bc cao lm trn bit du. Nhn chung c nh c dng pht hin li trong cc php s hc khng du. Cn c trn c dng ch pht hin li trong cc php s hc c du v c bn k chng 6.
Lnh ADD v PSW.
2.6.2
By gi ta xt tc ng ca lnh ADD ln cc bit CY, AC v P ca thanh ghi PSW. Mt s v d s lm r trng thi ca chng, mc d cc bit c b tc ng bi lnh ADD l CY, P, AC v OV nhng ta ch tp trung vo cc c CY, AC v P, cn c OV s c ni n chng 6 v n lin quan n php tnh s hc s c du.
Li gii:
+ 38 2F 67 00111000 00101111 01100111
V d 2.3: Hy trnh by trng thi cc c CY, AC v P sau php cng 9CH vi 64H. Li gii:
+ 9C 64 100 10011100 01100100 00000000
V d 2.4: Hy trnh by trng thi cc c CY, AC v P sau php cng 88H vi 93H. Li gii: + 88 93 11B 10001000 10010011 00011011
Nh ni trc, tng cng 32 byte RAM c dnh ring cho cc bng thanh ghi v ngn xp. 32 byte ny c chia ra thnh 4 bng cc thanh ghi trong mi bng c 8 thanh ghi t R0 n R7. Cc ngn nh RAM s 0, R1 l ngn nh RAM s 1, R2 l ngn nh RAM s 2 v.v... Bng th hai ca cc thanh ghi R0 n R7 bt u t thanh nh RAM s 2 cho n ngn nh RAM s 0FH. Bng th ba bt u t ngn nh 10H n 17H v cui cng t ngn nh 18H n 1FH l dng cho bng cc thanh ghi R0 n R7 th t.
00 07 08 0F10 1718 1F 20 2F 7F RAM nh a 30RAM bng nh ch theo bit (Seratch Pad) R0 - R7 R0 - R7 R0 - R7 R0 - R7
2.7.2
Bng0 ...
Bng3
Hnh 2.6: Cc bng thanh ghi ca 8051 v a ch ca chng. Nh ta c th nhn thy t hnh 2.5 bng 1 s dng cng khng gian RAM nh ngn xp. y l mt vn chnh trong lp trnh 8051. Chng ta phi hoc l khng s dng bng 1 hoc l phi nh mt khng gian khc ca RAM cho ngn xp. V d 2.5: Hy pht biu cc ni dung ca cc ngn nh RAM sau on chng trnh sau:
MOV MOV MOV MOV MOV R0, #99H R1, #85H R2, #3FH R7, #63H R5, #12H ; Np R0 gi tr 99H ; Np R1 gi tr 85H ; Np R2 gi tr 3FH ; Np R7gi tr 63H ; Np R5 gi tr12H
Nu cc ngn nh 00 n 1F c dnh ring cho bn bng thanh ghi, vy bng thanh ghi R0 n R7 no ta phi truy cp ti khi 8051 c cp ngun? Cu tr li l cc bng thanh ghi 0. l cc ngn nh RAM s 0, 1, 2, 3, 4, 5, 6 v 7 c truy cp vi tn R0, R1, R2, R3, R4, R5, R6 v R7 khi lp trnh 8051. N d dng hn nhiu khi tham chiu cc ngn nh RAM ny v cc tn R0, R1 v.v... hn l s v tr ca cc ngn nh. V d 2.6 lm r khi nim ny. V d 2.6: Hy vit li chng trnh v d 2.5 s dng cc a ch RAM thay tn cc thanh ghi. Li gii: y c gi l ch nh a ch trc tip v s dng a ch cc v tr ngn nh RAM i vi a ch ch. Xem chi tit chng 5 v ch nh a ch.
MOV MOV MOV MOV MOV 00, #99H 01, #85H 02, #3FH 07, #63H 05, #12H ; Np thanh ghi R0 gi tr 99H ; Np thanh ghi R1 gi tr 85H ; Np thanh ghi R2 gi tr 3FH ; Np thanh ghi R7gi tr 63H ; Np thanh ghi R5 gi tr12H
Bit D3 v D4 ca thanh ghi PSW thng c tham chiu nh l PSW.3 v PSW.4 v chng c th c truy cp bng cc lnh nh a ch theo bit nh SETB v CLR. V d SETB PSW.3 s thit lp PSW.3 v chn bng thanh ghi 1. Xem v d 2.7 di y. V d 2.7: Hy pht biu ni dung cc ngn nh RAM sau on chng trnh di y:
SETB MOV MOV MOV MOV MOV PSW.4 R0, #99H R1, #85H R2, #3FH R7, #63H R5, #12H ; Chn bng thanh ghi 4 ; Np thanh ghi R0 gi tr 99H ; Np thanh ghi R1 gi tr 85H ; Np thanh ghi R2 gi tr 3FH ; Np thanh ghi R7gi tr 63H ; Np thanh ghi R5 gi tr12H
Li gii: Theo mc nh PSW.3 = 0 v PSW.4 = 0. Do vy, lnh SETB PSW.4 s bt bit RS1 = 1 v RS0 = 0, bng lnh nh vy bng thanh ghi R0 n R7 s 2 c chn. Bng 2 s dng cc ngn nh t 10H n 17H. Nn sau khi thc hin on chng trnh trn ta c ni dung cc ngn nh nh sau:
Ngn nh v tr 10H c gi tr 99H Ngn nh v tr 11H c gi tr 85H Ngn nh v tr 12H c gi tr 3FH Ngn nh v tr 17H c gi tr 63H Ngn nh v tr 15H c gi tr 12H
2.6.5
Ngn xp l mt vng b nh RAM c CPU s dng lu thng tin tm thi. Thng tin ny c th l d liu, c th l a c CPU cn khng gian lu tr ny v s cc thanh ghi b hn ch. Nu ngn xp l mt vng ca b nh RAM th phi c cc thanh ghi trong CPU ch n n. Thanh c dng ch n ngn xp c gi l thanh ghi con tr ngn xp SP (Stack Pointer). Con tr ngn xp trong 8051 ch rng 8 bit c ngha l n ch c th c th c cc a ch t 00 n FFH. Khi 8051 c cp ngun th SP cha gi tr 07 c ngha l ngn nh 08 ca RAM l ngn nh u tin c dng cho ngn xp trong 8051. Vic lu li mt thanh ghi
2.6.6 Cch truy cp cc ngn xp trong 8051.
Trong 8051 th con tr ngn xp ch n ngn nh s dng cui cng ca ngn xp. Khi ta ct d liu vo ngn xp th con tr ngn xp SP c tng ln 1. Lu rng iu ny i vi cc b vi x l khc nhau l khc nhau, ng ch l cc b vi x l 86 l SP gim xung khi ct d liu vo ngn xp. Xt v d 2.8 di y, ta thy rng mi khi lnh PUSH c thc hin th ni dung ca thanh ghi c ct vo ngn xp v SP c tng ln 1. Lu l i vi mi byte ca d liu c ct vo ngn xp th SP c tng ln 1 ln. Cng lu rng ct cc thanh ghi vo ngn xp ta phi s dng a ch RAM ca chng. V d lnh PUSH 1 l ct thanh ghi R1 vo ngn xp. V d 2.8: Hy biu din ngn xp v con tr ngn xp i vi on chng trnh sau y. Gi thit vng ngn xp l mc nh.
MOV MOV MOV PUSH PUSH PUSH R6, #25H R1, #12H R4, #0F3H 6 1 4
Li gii:
0B 0A 09 08 Bt u SP = 07 2.6.8 Sau PUSH 6 0B 0A 09 08 25 SP = 08 Sau PUSP 1 0B 0A 09 12 08 25 SP = 09 Sau PUSH 4 0B 0A F3 09 12 08 25 SP = 0A
Vic ly ni dung ra t ngn xp tr lai thanh ghi cho l qa trnh ngc vi cc ni dung thanh ghi vo ngn xp. Vi mi ln ly ra th byte trn nh ngn xp c sao chp vo thanh ghi c xc nh bi lnh v con tr ngn xp c gim xung 1. V d 2.9 minh ho lnh ly ni dung ra khi ngn xp. V d 2.9: Kho st ngn xp v hy trnh by ni dung ca cc thanh ghi v SP sau khi thc hin on chng trnh sau y:
POP POP 3 5 ; Ly ngn xp tr li R3 ; Ly ngn xp tr li R5
Li gii:
0B 54 0A F9 09 76 08 6C Bt u SP = 0B 2.6.9 Sau POP3 0B 0A F9 09 76 08 6C SP = 0A Sau POP 5 0B 0A 09 76 08 6C SP = 09 Sau POP 2 0B 0A 09 08 6C SP = 08
Nh ni trn, cc ngn nh 08 n 1FH ca RAM trong 8051 c th c dng lm ngn nh 20H n 2FH ca RAM c d phng cho b nh nh a ch c theo bit v khng th dng trc cho ngn xp. Nu trong mt chng trnh cho ta cn ngn xp nhiu hn 24 byte (08 n 1FH = 24 byte) th ta c th i SP ch n cc ngn nh 30 n 7FH. iu ny c thc hin bi lnh MOV SP, #XX. Ngoi vic s dng ngn xp lu ct cc thanh ghi th CPU cng s dng ngn xp lu ct tam thi a ch ca lnh ng ngay di lnh CALL. iu ny chnh l PCU bit ch no quay tr v thc hin tip cc lnh sau khi chn chng trnh con. Chi tit v lnh gi CALL c trnh b chng 3. Nh ta a ni trn th thanh ghi con tr ngn xp c th ch n v tr RAM hin thi dnh cho ngn xp. Khi d liu c lu ct co ngn xp th SP c tng ln v ngc li khi d liu c ly ra t ngn xp th SP gim xung. L do l PS c tng ln sau khi PUSH l phi bit ly chc chn rng ngn xp ang tng ln n v tr ngn nh 7FH ca RAM t a ch thp nht n a ch cao nht. Nu con tr ngn xp c gim sau cc lnh PUSH th ta nn s dng cc ngn nh 7, 6, 5 v.v... ca RAM thuc cc thanh ghi R7 n R0 ca bng 0, bng thanh ghi mc nh. Vic tng ny ca con tr ngn xp i vi cc lnh PUSH cng m bo rng ngn xp s khng vi ti ngn nh 0 ca RAM (y ca RAM) v do vy s nhy ra khi khng gian dnh cho ngn xp. Tuy nhin c vn ny sinh vi thit lp mc nh ca ngn xp. V d SP = 07 khi 8051 c bt ngun nn RAM v cng thuc v thanh ghi R0 c bng thanh ghi s 1. Hay ni cch khc bng thanh ghi s 1 v ngn xp ang dng chung mt khng gian ca b nh RAM. Nu chng trnh cho cn s dng cc bng thanh ghi s 1 v s 2 ta c th t li vng nh RAM cho ngn xp. V d, ta c th cp v tr ngn nh 60H ca RAM v cao hn cho ngn xp trong v d 2.10. V d 2.10: Biu din ngn xp v con tr ngn xp i vi cc lnh sau:
MOV MOV MOV MOV PUSH SP, #5FH R2, #25H R1, #12H R4, #0F3H 2 2.6.11 Xung t ngn xp v bng thanh ghi s 1. 2.6.10 Lnh gi CALL v ngn xp.
PUSH 4 Li gii:
63 62 61 60 Bt uSP=5F Sau PUSH 2 63 62 61 60 25 SP = 60 Sau PUSP 3 63 62 61 12 60 25 SP = 61 Sau PUSH 4 63 62 F3 61 12 60 25 SP = 62
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.
P1.0 P1.1 P1.2 P1.4 P1.5 P1.6 P1.7 RST (RXD) P3.0 (TXD) P3.1 (NT0) P3.2 (NT1) P3.3 (T0) P3.4 (T1) P3.5 (WR) P3.6 (RD) P3.7 XTAL2 XTAL1 GND
P1.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
8051 (8031)
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
Vcc P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) P0.3 (AD3) P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.6 (AD6) EA/CPP ALE/PROG PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13) P2.4(A12) P2.3 (A11) P2.2 (A10) P2.1 (A9) P2.0 (AB)
Hnh 4.1: S b tr chn ca 8051. Trn hnh 4.1 l s b tr chn ca 8051. Ta thy rng trong 40 chn th c 32 chn dnh cho cc cng P0, P1, P2 v P3 vi mi cng c 8 chn. Cc chn cn li c dnh cho ngun VCC, t GND, cc chngiao ng XTAL1 v XTAL2 ti lp RST cho php cht a ch ALE truy cp c a ch ngoi EA , cho php ct chng trnh PSEN . Trong 8 chn ny th 6 chn VCC , GND, XTAL1, XTAL2, RST v EA c cc h 8031 v 8051 s dng. Hay ni cch khc l chng phi c
ni cho h thng lm vic m khng cn bit b vi iu khin thuc h 8051 hay 8031. Cn hai chn khc l PSEN v ALE c s dng ch yu trong cc h thng da trn 8031. 1. Chn VCC: Chn s 40 l VCC cp in p ngun cho chp. Ngun in p l +5V. 2. Chn GND: Chn GND: Chn s 20 l GND. 3. Chn XTAL1 v XTAL2: 8051 c mt b giao ng trn chp nhng n yu cu c mt xung ng h ngoi chy n. B giao ng thch anh thng xuyn nht c ni ti cc chn u vo XTAL1 (chn 19) v XTAL2 (chn 18). B giao ng thch anh c ni ti XTAL1 v XTAL2 cng cn hai t in gi tr 30pF. Mt pha ca t in c ni xung t nh c trnh by trn hnh 4.2a. Cn phi lu rng c nhiu tc khc nhau ca h 8051. Tc c coi nh l tn s cc i ca b giao ng c ni ti chn XTAL. V d, mt chp 12MHz hoc thp hn. Tng t nh vy th mt b vi iu khin cng yu cu mt tinh th c tn s khng ln hn 20MHz. Khi 8051 c ni ti mt b giao ng tinh th thch anh v cp ngun th ta c th quan st tn s trn chn XTAL2 bng my hin sng. Nu ta quyt nh s dng mt ngun tn s khc b giao ng thch anh chng hn nh l b giao ng TTL th n s c ni ti chn XTAL1, cn chn XTAL2 th h khng ni nh hnh 4.2b.
C2
XTAL2
Hnh 4.2: a) Ni XTAL ti 8051 b) Ni XTAL ti ngun ng b ngoi. 4. Chn RST. Chn s 9 l chn ti lp RESET. N l mt u vo v c mc tch cc cao (bnh thng mc thp). Khi cp xung cao ti chn ny th b vi iu khin s ti lp v kt thc mi hot ng. iu ny thng c coi nh l s ti bt ngun. Khi kch hot ti bt ngun s lm mt mi gi tr trn cc thanh ghi. Bng 4.1 cung cp mt cch lit k cc thanh ghi ca 8051 v cc gi tr ca chng sau khi ti bt ngun. Bng 4.1: Gi tr mt s thanh ghi sau RESET.
Lu rng gi tr ca b m chng trnh PC l 0 khi ti lp p CPU np m lnh u tin t b nh ROM ti v tr ngn nh 0000. iu ny c ngha l ta phi t dng u tin ca m ngun ti v tr ngn nh 0 ca ROM v y l m CPU tnh thc v tm lnh u tin. Hnh 4.3 trnh by hai cch ni chn RST vi mch bt ngun.
Vcc Vcc
------------------------ 31 30mF
10mF 30mF
8.2K
10mF
31
EA/Vpp X1 X2 RST
9 8.2K
Hnh 4.3: a) Mch ti bt ngun RESET. b) Mch ti bt ngun vi Debounce. Nhm lm cho u vo RESET c hiu qu th n phi c ti thiu 2 chu k my. Hay ni cch khc, xung cao phi ko di ti thiu 2 chu k my trc khi n xung thp. Trong 8051 mt chu k my c nh ngha bng 12 chu k dao ng nh ni chng 3 v c trnh by ti v tr 4.1. 5. Chn EA : Cc thnh vin h 8051 nh 8751, 98C51 hoc DS5000 u c ROM trn chp lu ct chng trnh. Trong cc trng hp nh vy th chn EA c ni ti VCC. i vi cc thnh vin c h nh 8031 v 8032 m khng c ROM trn chp th m chng trnh c lu ct trn b nh ROM ngoi v chng c np cho 8031/32. Do vy, i vi 8031 th chn EA phi c ni t bo rng m chng trnh c ct ngoi. EA c ngha l truy cp ngoi (External Access) l chn s 31 trn v kiu DIP. N l mt chn u vo v phi c ni hoc vi VCC hoc GND. Hay ni cch khc l n khng c h.
chng 14 chng ta s trnh by cch 8031 s dng chn ny kt hp vi PSEN truy cp cc chng trnh c ct trn b nh ROM ngoi 8031. Trong cc chp 8051 vi b nh ROM trn chp nh 8751, 89C51 hoc DS5000 th EA c ni vi VCC. V d 4: Hy tm chu k my i vi a) XTAL = 11.0592MHz b) XTAL = 16MHz. Li gii: a) 11.0592MHz/12 = 921.6kHz. Chu k my = 1/921.6kHz = 1.085ms. b) 16MHz/12 = 1.333MHz Chu k my = 1/1.333MHz = 0.75ms. Cc chn m t trn y phi c ni m khng cn thnh vin no c s dng. Cn hai chn di y c s dng ch yu trong h thng da trn 8031 v s c trnh by chi tit chng 11. 6. Chn PSEN : y l chn u ra cho php ct chng trnh (Program Store Enable) trong h thng da trn 8031 th chng trnh c ct b nh ROM ngoi th chn ny c ni ti chn OE ca ROM. Chi tit c bn chng 14. 7. Chn ALE: Chn cho php cht a ch ALE l chn u ra v c tch cc cao. Khi ni 8031 ti b nh ngoi th cng 0 cng c cp a ch v d liu. Hay ni cch khc 8031 dn a ch v d liu qua cng 0 tit kim s chn. Chn ALE c s dng phn knh a ch v d liu bng cch ni ti chn G ca chp 74LS373. iu ny c ni chi tit chng 14. 8. Cc chn cng vo ra v cc chc nng ca chng. Bn cng P0, P1, P2 v P3 u s dng 8 chn v to thnh cng 8 bt. Tt c cc cng khi RESET u c cu hnh nh cc u ra, sn sng c s dng nh cc cng u ra. Mun s dng cng no trong s cc cng ny lm u vo th n phi c lp trnh. 9. Cng P0. Cng 0 chim tt c 8 chn (t chn 32 n 39). N c th c dng nh cng u ra, s dng cc chn ca cng 0 va lm u ra, va lm u vo th mi chn phi c ni ti mt in tr ko bn ngoi 10kW. iu ny l do mt thc t l cng P0 l mt mng m khc vi cc cng P1, P2 v P3. Khi nim mng m c s dng trong cc chp MOS v chng mc no n ging nh C-lec-t h i vi cc chp TTL. Trong bt k h thng no s dng 8751, 89C51 hoc DS5000 ta thng ni cng P0 ti cc in tr ko, Xem hnh 4.4 bng cch ny ta c c cc u im ca cng P0 cho c u ra v u vo. Vi nhng in tr ko ngoi c ni khi ti lp cng P0 c cu hnh nh mt cng u ra. V d, on m sau y s lin tc gi ra cng P0 cc gi tr 554 v AAH.
BACK: MOV A, #554 MOV P0, A ACALL DELAY
CPL SJMP
Hnh 4.4: Cng P0 vi cc in tr ko. a) Cng P0 u vo: Vi cc in tr c ni ti cng P0 nhm to n thnh cng u vo th n phi c lp trnh bng cch ghi 1 ti tt c cc bit. on m di y s cu hnh P0 lc u l u vo bng cch ghi 1 n n v sau d liu nhn c t n c gi n P1. b)
MOV MOV BACK: MOV MOV SJMP A,#FFH P0, A A, P0 P1, A BACK ; Gn A = FF dng Hex ; To cng P0 lm cng u vo bng cch ; Ghi tt c cc bit ca n. ; Nhn d liu t P0 ; Gi n n cng 1 ; Lp li
b) Vai tr kp ca cng P0: Nh trnh by trn hnh 4.1, cng P0 c gn AD0 AD7 cho php n c s dng va cho a ch, va cho d liu. Khi ni 8051/31 ti b nh ngoi th cng 0 cung cp c a ch v d liu 8051 dn d liu v a ch qua cng P0 tit kim s chn. ALE bo nu P0 c a ch hay d liu khi ALE 0 n cp d liu D0 - D7. Do vy, ALE c s dng tch a ch v d liu vi s tr gip ca cht 74LS373 m ta s bit c th chng 14. 10. Cng P1. Cng P1 cng chim tt c 8 chn (t chn 1 n chn 8) n c th c s dng nh u vo hoc u ra. So vi cng P0 th cng ny khng cn n in tr ko v n c cc in tr ko bn trong. Trong qu trnh ti lp th cng P1 c cu hnh nh mt cng u ra. V d, on m sau s gi lin tc cc gi tr 55 v AAH ra cng P1.
BACK: MOV MOV A, #55H P1, A
Port 0
Cng P1 nh u vo: bin cng P1 thnh u vo th n phi c lp trnh bng cch ghi mt n tt c cc bit ca n. L do v iu ny c bn mc lc Appendix C.2. Trong on m sau, cng P1 lc u c cu hnh nh cng u vo bng cch ghi 1 vo cc bit ca n v sau d liu nhn c t cng ny c ct vo R7, R6 v R5.
MOV MOV MOV MOV ACALL MOV MOV ACALL MOV MOV A, #0FFH P1, A A, P1 R7, A DELAY A, P1 R6, A DELAY A, P1 R5, A ; Np A = FF dng hex ; To cng P1 thnh cng u vo bng ; cch ghi 1 vo cc bit ca n. ; Nhn d liu t P1 ; Ct n vo thanh ghi R7 ; Ch ; Nhn d liu khc t P1 ; Ct n vo thanh ghi R6 ; Ch ; Nhn d liu khc t cng P1 ; Ct n vo thanh ghi R5
11. Cng P2: Cng P2 cng chim 8 chn (cc chn t 21 n 28). N c th c s dng nh u vo hoc u ra ging nh cng P1, cng P2 cng khng cn in tr ko v n c cc in tr ko bn trong. Khi ti lp, th cng P2 c cu hnh nh mt cng u ra. V d, on m sau s gi lin tc ra cng P2 cc gi tr 55H v AAH. l tt c cc bit ca P2 ln xung lin tc.
BACK: MOV MOV ACALL CPL SJMP A, #55H P2,A DELAY A BACK
a) Cng P2 nh u vo. to cng P2 nh u vo th n phi c lp trnh bng cch ghi cc s 1 ti tt c cc chn ca n. on m sau y u tin cu hinh P2 l cng vo bng cch ghi mt n tt c cc chn ca n v sau d liu nhn c t P2 c gi lin tc n P1.
MOV MOV BACK: MOV MOV SJMP A, 0FFH P2, A A, 2 P1, A BACK ; Gn A gi tr FF dng Hex ; To P2 l cng u vo bng cch ; ghi mt n cc chn ca n ; Nhn d liu t P2 ; Gi n n P1 ; Lp li
b) Vai tr kp ca P2.
Trong cc h thng da trn 8751, 89C51 v DS5000 th P2 c dng nh u ra n gin. Tuy nhin trong h thng da trn 80312 th cng P2 phi c dng cng vi P0 to ra a ch 16 brt i vi b nh ngoi. Nh ch ra trn hnh 4.1 cng P2 cng c ch nh nh l A8 - A15 bo chc nng kp ca n. V mt b 8031 c kh nng trung cp 64k byte b nh ngoi, n cn mt ng a ch 16 bt. Trong khi P.0 cung cp 8 bit thp qua A0 - A7. Cng vic ca P2 l cung cp cc bt a ch A8 - A15. Hay ni cch khc khi 8031c ni ti b nh ngoi th P2 c dng cho 8 bt ca a ch 16 bit v n khng th dng cho vo ra. iu ny s c trnh by chi tit chng 14. T nhng trnh by trn y ta c th kt lun rng trong cc h thng da trn cc b vi iu khin 8751, 89C51 hoc DS5000 th ta c 3 cng P0, P1v P2 cho cc thao tc vo ra v nh th l c th cho cc ng dng vi hu ht cc b vi iu khin. Cn cp P3 l dnh cho ngt v ta s cng bn di y. 11 - Cng P3: Cng P3 chim tng cng l 8 chn t chn 10 n chn 17. N c th c s dng nh u vo hoc u ra. Cng P3 khng cn cc in tr ko cng nh P1 v P2. Mc d cng P3 c cu hnh nh mt cng u ra khi ti lp, nhng y khng phi l cch n c ng dng ph bin nht. Cng P3 c chc nng b xung l cung cp mt s tn hiu quan trng c bit chng hn nh cc ngt. Bng 4.2 cung cp cc chc nng khc ca cng P3. Thng tin ny p dng cho c 8051 v 8031. Bng 4.2: Cc chc nng khc ca cng P3
Bt ca cng P3 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Chc nng Nhn d liu (RXD) Pht d liu (TXD) Ngt 0(INT0) Ngt 1(INT1) B nh thi 0 (TO) 1 B nh thi 1(T1) Ghi (WR) c (RD) chn s 10 11 12 13 14 15 16 17
Cc bit P3.0 v P3.1 c dng cho cc tn hiu nhn v pht d liu trong truyn thng d liu ni tip. Xem chng 10 t bit cc chng c ni ghp nh th no. Cc bit P3.2 v P3.3 c dnh cho cc ngt ngoi v chng c trnh by chi tit chng 11. Bit P3.4 v P3.5 c dng cho cc b nh thm 0 v 1v chi tit c trnh by chng 9. Cui cng cc bit P3.6 v P3.7 c cp cho cc tn hiu ghi v c cc b nh ngoi c ni ti cc h thng da trn 8031. Chng 14 s trnh by cch chng c s dng nh th no trong cc h thng da trn 8031. Trong cc h thng da trn 8751, 89C51 hoc D35000 th cc chn P3.6 v P3.7 c dng cho vo - ra cn cc chn khc ca P3 c s dng bnh thng trong vai tr chc nng thay i. 4.2 Lp trnh vo - ra: thao tc bit. 4.2.1 cc cch khc nhau truy cp ton b 8 bit.
on m trn cht mi bit ca P1 mt cch lin tc. Chng ta thng mt bin th ca chng trnh trn trc . By gi ta c th vit li on m trn theo cch hiu qu hn bng cch truy cp trc tip cng m khng qua thanh ghi tng nh sau:
BACK: MOV ACALL MOV CALL SJMP P1, # 55H DELAY P1, #00H DELAY BACK
Ta c th vit mt dng khc ca on m trn bng k thut c - sa i ghi nh mc 4.2.2 di y. 4.2.2 c im c- sa i - ghi (Read - Modify Write). Cc cng trong 8051 c th c truy cp bngk thut c gi l c-sa i-ghi. c im ny tit kim rt nhiu dng lnh bng cch kt hp tt c 3 thao tc: 1c cng, 2 sa i nv 3 ghi n ra cng vo mt lnh n. on m di y trc ht t 01010101(nh phn) vo cng 1. Sau lnh XLR P1, #0FFH thc hin php l-gch OR loi tr l XOR trn cng p1 vi 1111 1111 ( nh phn ) v sau ghi kt qu tr li cng P1.
AGAIN: MOV XLR ACALL SJMP P1, #55H P1,# 0FFH DELAY AGAIN ; P1 = 01010101 ; EX - 0R P1 vi 1111 1111
Lu rng lnh X0R ca 55H v FFH s cho kt qu l AAH. Tng t nh vy lnh X0R ca AAH vi FFH li cho gi tr kt qu l 55H. Cc lnh l-gch c trnh by chng 7. 4.2.3. Kh nng nh a ch theo bt ca cc cng C nhiu lc chng ta cn truy cp ch 1 hoc2 bt ca cng thay v truy cp c 8 bit ca cng. Mt im mnh ca cc cng 8051 l chng c kh nng truy cp tng bt ring r m khng lm thay i cc bt cn li trong cng v d, on m di y cht bit P1.2 lin tc:
BACK: CPL P1.2 ; Ly b 2 ch ring bit P1.2
Lu rng bt P1.2 l bt th 3 ca cng P1, v bt th nht l P1.0 v bit th hai l P1.1 v.v... Bng 4.3 trnh by cc bt ca cc cng vo ra ca 8051. Xem v d 4.2 v thao tc bt ca cc bt vo - ra. Lu rng trong v d 4.2 cc bit khng dng n l khng b nh hng. y l kh nng nh a ch theo bit ca cc cng vo - ra v l mt trong nhng im mnh nht ca b vi iu khin 8051. V d 4.2: hy vit chng trnh thc hin cc cng vic sau: a) Duy tr hin th bit P1.2 cho n khi n ln cp b) Khi P1.2 ln cao, hy ghi gi tr 45H vo cng P0 c) Gi mt xung cao xung thp (H-to-L) ti P2.3 Li gii:
SET MOV JNB MOV SETB CLR P1.2 A, #45H P1.2, AGAIN P0, A P2.3 P2.3 ; To bit P1.2 l u vo ; Gn A = 45H ; Thot khi P1.2 = 1 ; Xut A ti cng P0 ; a P2.3 ln cao ; To P2.3 xung thp c xung H-T0-L
AGAIN:
Trong chng trnh ny lnh JNB P1.2, AGCN (JNB c ngha l nhy nu khng bit) li vng lp cho n khi P1.2 cha ln cao. Khi P1.2 ln cao n thot ra khi vng lp ghi gi tr 45H ti cng P0 v to ra xung H-to-L bng chui cc lnh SETB v CLR.
Mc d thanh ghi DPTR l 16 bit n cng c th c truy cp nh 2 thanh ghi 8 bit DPH v DPL trong DPH l byte cao v DPL l byte thp. Xt on m di y:
MOV MOV MOV DPTR, #2550H A, #50H DPH, #25H
Cng nn lu rng cc thanh ghi ngun v ch phi ph hp v kch thc. Hay ni cch khc, nu vit MOV DPTR, A s cho mt li v ngun l thanh ghi 8 bit v ch li l thanh ghi 16 bit. Xt on m sau:
MOV MOV MOV DPTR, #25F5H R7, DPL R6, DPH
rng ta c th chuyn d liu gia thanh ghi tch lu A v thanh ghi Rn (n t 0 n 7) nhng vic chuyn d liu gia cc thanh ghi Rn th khng c php. V d, lnh MOV R4, R7 l khng hp l. Trong hai ch nh a ch u tin, cc ton hng c th hoc bn trong mt trong cc thanh ghi hoc c gn lin vi lnh. Trong hu ht cc chng trnh d liu cn c x l thng trong mt s ngn ca b nh RAM hoc trong khng gian m ca ROM. C rt nhiu cch truy cp d liu ny m phn tip theo s xt n. 5.2 Truy cp b nh s dng cc ch nh a ch khc nhau. 5.2.1 Ch nh a ch trc tip. Nh ni chng 2 trong 8051 c 128 byte b nh RAM. B nh RAM c gn cc a ch t 00 n FFH v c phn chia nh sau: 1. Cc ngn nh t 00 n 1FH c gn cho cc bng thanh ghi v ngn xp. 2. Cc ngn nh t 20H n 2FH c dnh cho khng gian nh a ch theo bit lu cc d liu 1 bit. 3. Cc ngn nh t 30H n 7FH l khng gian lu d liu c kch thc 1byte. Mc d ton b byte ca b nh RAM c th c truy cp bng ch nh a ch trc tip, nhng ch ny thng c s dng nht truy cp cc ngn nh RAM t 30H n 7FH. y l do mt thc t l cc ngn nh dnh cho bng ghi c truy cp bng thanh ghi theo cc tn gi ca chng l R0 - R7 cn cc ngn nh khc ca RAM th khng c tn nh vy. Trong ch nh a ch trc tip th d liu trong mt ngn nh RAM m a ch ca n c bit v a ch ny c cho nh l mt phn ca lnh. Khc vi ch nh a ch tc th m ton hng t n c cp vi lnh. Du (# 0 l s phn bit gia hai ch nh a ch. Xt cc v d di y v lu rng cc lnh khng c du (#):
MOV R0, 40H ; Lu ni dung ca ngn nh 40H ca RAM vo R0
Nh ni trc th cc ngn nh tr 0 n 7 ca RAM c cp cho bng 0 ca cc thanh ghi R0 - R7. Cc thanh ghi ny c th c truy cp theo 2 cch nh sau:
MOV MOV MOV MOV A, 4 A, R4 A, 7 A,R7 ; Hai lnh ny ging nhau u sao ni dung thanh ghi R4 vo A ; Hai lnh ny u nh nhau l sao ni dung R7 vo thanh ghi A
nhn mnh s quan trng ca du (#) trong cc lnh ca 8051. Xt cc m cho sau y:
MOV MOV MOV MOC R2, #05 A, 2 B, 2 7,2 ; Gn R2=05 ; Sao ni dung thanh ghi R2 vo A ; Sao ni dung thanh ghi R2 vo B ; Sao ni dung thanh ghi R7 v lnh MOV R7, R2 l khng hp l.
Mc d s dng cc tn R0 - R7 d hn cc a ch b nh ca chng nhng cc ngn nh 30H n 7FH ca RAM khng th c truy cp theo bt k cch no khc l theo a ch ca chng v chng khng c tn. 5.2.2 cc thanh ghi SFSR v cc a ch ca chng. Trong cc thanh ghi c ni n t trc n gi ta thy rng cc thanh ghi R0 - R7 l mt phn trong 128 byte ca b nh RAM. Vy cn cc thanh ghi A, B, PSW v DPTR l mt b phn ca nhm cc thanh ghi nhn chung c gi l cc thanh ghi c bit SFR (Special Funtion Register). C rt nhiu thanh ghi vi chc nng c bit v chng c s dng rt rng ri m ta s trnh by cc chng su. Cc thanh ghi FR c th c truy cp theo tn ca chng (m d hn rt nhiu) hoc theo cc a ch ca chng. V d a ch ca thanh ghi A l EOH v thanh ghi B l FOH nh cho trong bng 5.1. Hy n nhng cp lnh c cng ngha di y:
MOV MOV MOV MOV MOV MOV MOV MOV 0E0H, #55H A, #55H 0F0H, #25H 3, #25H 0E0H A, R2 0F0 B, R0 ; Np 55H vo thanh ghi A(A=55H) ; ; Np 2SH vo thanh ghi B ( B = 25) ; ; Sao ni dung thanh ghi R2 vo A ; ; Sao ni dung thanh ghi R0 vo B ;
Bng 5.l di y lit k cc thanh ghi chc nng c bit SFR ca 8051 v cc a ch ca chng. Cn phi lu n hai im sau v cc a ch ca SFR:
*Cc thanh ghi c th nh a ch theo bit. Xt theo ch nh a ch trc tip th cn phi lu rng gi tr a ch c gii hn n 1byte, 00 - FFH. iu ny c ngha l vic s dng ca ch nh a ch ny b gii hn bi vic truy cp cc v tr ngn nh ca RAM v cc thanh ghi vi a ch c cho bn trong 8051. V d 5.1: Vit chng trnh gi 55H n cng P1 v P2 s dng hoc a) Tn cc cng b) Hoc a ch cc cng Li gii:
a) MOV A, #55H ; A = 55H
5.2.3 Ngn xp v ch nh a ch trc tip. Mt cng dng chnh khc ca ch nh a ch trc tip l ngn xp. Trong h 8051 ch c ch nh a ch trc tip l c php y vo ngn xp. Do vy, mt lnh nh PVSH A l khng hp l. Vic y thanh ghi A vo ngn xp phi c vit di dng PVAH 0E0H vi 0E0H l a ch ca thanh ghi A. Tng t nh vy y thanh ghi R3 rnh 0 vo ngn xp ta phi vit l PVSH 03. Ch nh a ch trc tip phi c s dng cho c lnh POP. V d POP 04 s ko nh ca ngn xp vo thanh ghi R4 rnh 0. V d 5.2: Trnh by m y thanh ghi R5, R6 v A vo ngn xp v sau ko chng ngc tr li R2, R3 v B tng ng. Li gii:
PUSH PUSH PUSH POP POP POP 05 06 0E0H 0F0H 02 03 ; y R5 vo ngn xp ; y R6 vo ngn xp ; y thanhghi A vo ngn xp ; Ko nh ngn xp cho vo thanh ghi B ; By gi B = A ; Ko nh ngn xp cho vo thanh ghi R2 ; By gi R2= R6 ; Ko nh ngn xp cho vo thanh ghi ; By gi R3 = R5
5.2.4 ch nh a ch gin tip thanh ghi. Trong ch ny, mt thanh ghi c s dng nh mt con tr n d liu. Nu d liu bn trong CPU th ch cc thanh ghi R0 v R1 c s dng cho mc ch ny. Hay ni cch khc cc thanh ghi R2 - R7 khng c th dng c gi a ch ca ton hng nm trong RAM khi s dng ch nh a ch ny khi Ro v R1 c dng nh cc con tr, ngha l khi chng gi cc a ch ca cc ngn nh RAM th trc chng phi t du (@) nh ch ra di y.
MOV MOV A, @ R0 @ R1, B ; Chuyn ni dung ca ngn nh RAM c a ch trong RO v A ; Chuyn ni dung ca B vo ngn nh RAM c a ch R1
Lu rng R0 cng nh R1 lun c du @ ng trc. Khi khng c du ny th l lnh chuyn ni dung cc thanh ghi Ro v R1 ch khng phi d liu ngn nh m a ch c trong R0 v R1. V d 5.3:
b)
; Np vo A gi tr 55H ; Np con tr R0 = 40 H ; Sao chp A vo v tr ngn nh RAM do R0 ch n ; Tng con tr. By g R0 = 41H ; Sao chp A vo v tr ngn nh RAM do R0 ch ; Tng con tr. By gi R0 = 42H ; Sao chp Avo v tr ngn nh RAM do R0 ch ; Tng con tr. By gi R0 = 43H ; Sao chp A vo v tr ngn nh RAM do R0 ch ;Tng con tr. By g R0 = 44H
AGAIN:
5.2.5 u im ca ch nh a ch gin tip thanh ghi. Mt trong nhng u im ca ch nh a ch gin tip thanh ghi l n lm cho vic truy cp d liu nng ng hn so vi ch nh a ch trc tip. V d 5.3 trnh by trng hp sao chp gi tr 55H vo cc v tr ngn nh ca RAM t 40H n 44H . Lu rng li gii b) c hai lnh c lp li vi mt s ln. Ta c th to ra vng lp vi hai lnh ny nh li gii c). Li gii c) l hiu qu nht v ch c th khi s dng ch nh a ch gin tip qua thanh ghi. Vng lp l khng th trong ch nh a ch trc tip. y l s khc nhau ch yu gia nh a ch trc tip v gin tip. V d 5.4: Hy vit chng trnh xo 16 v tr ngn nh RAM bt u ti a ch 60H. Li gii:
CLR MOV MOV A R1, #60H R7, #16H ; Xo A=0 ; Np con tr. R1= 60H ;Np b m, R7 = 1 6 (10 H dng hex)
Mt v d v cch s dng c R0 v R1 trong ch nh a ch gin tip thanh ghi khi truyn khi c cho trong v d 5.5. V d 5.5: Hy vit chng trnh sao chp mt khi 10 byte d liu t v tr ngn nh RAM bt u t 35H vo cc v tr ngn nh RAM bt u t 60H Li gii:
MOV R0, # 35H MOV R1, #60H MOV R3, #10 BACK: MOV A, @R0 MOV @R1, A INC R0 INC R1 DJNZ R3, BACK ; Con tr ngun ; Con tr ch ; B m ; Ly 1byte t ngun ; Sao chp n n ch ; Tng con tr ngun ; Tng con tr ch ; Lp li cho n khi sao chp ht 10 byte
5.2.6 Hn ch ca ch nh a ch gin tip thanh ghi trong 8051. Nh ni phn trc rng R0 v R1 l cc thanh ghi duy nht c th c dng lm cc con tr trong ch nh a ch gin tip thanh ghi. V R0 v R1 l cc thanh ghi 8 bit, nn vic s dng ca chng b hn ch vic truy cp mi thng tin trong cc ngn nh RAM bn trong (cc ngn nh t 30H n 7FH v cc thanh ghi SFR). Tuy nhin, nhiu khi ta cn truy cp d liu c ct trong RAM ngoi hoc trong khng gian m lnh ca ROM trn chip. Hoc l truy cp b nh RAM ngoi hoc ROM trn chp th ta cn s dng thanh ghi 16 bit l DPTR. 5.2.7 Ch nh a ch theo ch s v truy cp b nh ROM trn chp. Ch nh a ch theo ch s c s dng rng ri trongvic truy cp cc phn t d liu ca bng trong khng gian ROM chng trnh ca 8051. Lnh c dng cho mc ch ny l Move A, @ A + DPTR. Thanh ghi 16 bit DPTR l thanh ghi A c dng to ra a ch ca phn t d liu c lu ct trong ROM trn chp. Do cc phn t d liu c ct trong khng gian m (chng trnh) ca ROM trn chip ca 8051, n phi dng lnh Move thay cho lnh Mov (ch C cui lnh l ch m lnh Code). Trong lnh ny th ni dung ca A c b xung vo thanh ghi 16 bit DPTR to ra a ch 16 bit ca d liu cn thit. Xt v d 5.6. V d 5.6: Gi s t VSA c lu trong ROM c a ch bt u t 200H v chng trnh c ghi vo ROM bt u t a ch 0. Hy phn tch cch chng trnh hot ng v hy pht biu xem t VSA sau chng trnh ny c ct vo u? Li gii:
ORG MOV CLA MOVC MOV 0000H DPTR, #200H A A, @A + DPTR R0, A ; Bt u t ROM ti a ch 00H ; a ch bng trnh by DPTR = 200H ; Xo thanh ghi A (A = 0) ; Ly k t t khng gian nh chng trnh ; Ct n vo trong R0
trong chng trnh ni trn th cc v tr ngn nh ROM chng trnh 200H - 2002H c cc ni dung sau: 200 = (U); 201= (S) v 202 = (A). Chng ta bt u vi DPTR = 200H v A = 0.Lnh MOVC A, @ A + DPTR chuyn ni dung ca v tr nh 200H trong ROM (200H + 0 = 200H) vo A. Thanh ghi A cha gi tr 55H l gi tr m ASC ca k t U. k t ny c ct vo R0. K , DPTR c tng ln to thnh DPTR = 201H. A li c xo v 0 ly ni dung ca v tr nh k tip trong ROM l 201H cha k t S. Sau khi chng trnh ny chy ta c R0 = 55H, R1 = 53H v R2 = 41H l cc m ASCII ca cc k t U, S v A. V d 5.7: Gi s khng gian ROM bt u t a ch 250H c cha America, hy vit chng trnh truyn cc byte vo cc v tr ngn nh RAM bt u t a ch 40H. Li gii
; (a) Phng php ny s dng mt b m ORG 000 MOV DPTR, # MYDATA ; Np con tr ROM MOV R0, #40H ; Np con tr RAM MOV R2, #7 ; Np b m BACK: CLR A ; Xo thanh ghi A MOVC A, @A + DPTR ;Chuyn d liu t khong gian m MOV R0, A ;Ct n vo ngn nh RAM INC DPTR ; Tng con tr ROM INC R0 ; Tng con tr RAM DJNZ R2, BACK ; Lp li cho nkhi b m = 0 HERE: SJMP HERE ;-------------- -- khng gian m ca ROM trn chp dng ct d liu ORG 250H MYDATA: DB END AMER1CA
;(b) phng php ny s dng k t null kt thc chui ORG MOV MOV CLR 000 DPTR, #MYDATA R0, #40 A S ; Np con tr ROM ; Np con tr RAM ; Xo thanh ghi A(A=0)
BACK:
Lu n cch ta s dng lnh JZ pht hin k t NOLL khi kt thc chui 5.2.8 Bng xp xp v s dng ch nh a ch theo ch s. Bng xp x l khi nim c s dng rt rng ri trong lp trnh cc b vi x l. N cho php truy cp cc phn t ca mt bng thng xuyn c s dng vi thao tc cc tiu. Nh mt v d, hy gi thit rng i vi mt ng dng nht nh ta cn x2 gi tr trong phm vi 0 n 9. Ta c th s dng mt bng xp xp thay cho vic tnh ton n. iu ny c ch ra trong v d 5.8. V d 5.8 Hy vit mt chng trnh ly x gi tr cng P1 v gi gi tr x2 ti cng P2 lin tc. Li gii:
ORG MOV MOV MOV MOV MOVC MOV SJMP ORG DB END 000 DPTR, #300 H A, #0FFH P1, A A, P1 A, @A + DPTR P2, A BACK 300H 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ; Np a ch bng xp xlps ; Np A gi tr FFH ; t cng P1 l u vo ; Ly gi tr X t P1 ; Ly gi tr X t bng XSDQ-TABLE ; Xut n ra cng P2 ; Lp li
BACK:
XSQR - TABLE:
Lu bng lnh u tin c th thay bng MOV DPTR, #XSQR - TABLE. V d 5.9: Tr li cc cu hi sau cho v d 5.8. a) Hy ch ra ni dung cc v tr 300 - 309H ca ROM b) Ti v tr no ca ROM c gi tr 6 v gi tr bo nhiu c) Gi s P1 c gi tr l 9 th gi tr P2 l bao nhiu ( dng nh phn)? Li gii: a) Cc gi tr trong cc ngn nh 300H - 309H ca ROM l: 300 = (00) 301 = (01) 302 = (04) 303 = (09) 304 = (10) 4 4 = 16 = 10 in hex 305 = (19) 5 5 = 25 = 19 in hex 306 = (24) 6 6 = 36 = 24H 307 = (31) 308 = (40) 309 = (51)
Li gii:
F5H + 0BH 100H + 1111 0000 0000 0101 1011 0000
Sau php cng, thanh ghi A (ch) cha 00 v cc c s nh sau: CY = 1 v c php nh t D7 PF = 1 v s cc s 1 l 0 (mt s chn) c PF c t ln 1. AC = 1 v c php nh t D3 sang D4 6.1.1.1 Php cng cc byte ring r. chng 2 trnh by mt php cng 5 byte d liu. Tng s c ct theo ch nh hn FFH l gi tr cc i mt thanh ghi 8 bit c th c gi. tnh tng s ca mt s bt k cc ton hng th c nh phi c kim tra sau mi ln cng mt ton hng. V d 6.2 dng R7 tch lu s ln nh mi khi cc ton hng c cng vo A. V d 6.2: Gi s cc ngn nh 40 - 44 ca RAM c gi tr sau: 40 = (7D); 41 = (EB); 42 = (C5); 43 = (5B) v 44 = (30). Hy vit mt chng trnh tnh tng ca cc gi tr trn. Cui chng trnh gi tr thanh ghi A cha byte thp v R7 cha byte cao (cc gi tr trn c cho dng Hex).
AGAIN: NEXT:
Phn tch v d 6.2: Ba ln lp li ca vng lp c ch ra di y. Phn d theo chng trnh dnh cho ngi c t thc hin. Trong ln lp li u tin ca vng lp th 7DH c cng vo A vi CY = 0 v R7 = 00 v b m R2 = 04. Trong ln lp li th hai ca vng lp th EBH c cng vo A v kt qu trong A l 68H vi CY = 1. V c nh xut hin, R7 c tng ln. Lc ny b m R2 = 03. Trong ln lp li th ba th C5H c cng vo A nn A = 2DH v c nh li bn. Do vy R7 li c tng ln v b m R2 = 02. phn cui khi vng lp kt thc, tng s c gi bi thanh ghi A v R7, trong A gi byte thp v R7 cha byte cao. 6.1.1.2 Php cng v nh v php cng cc s 16 bit. Khi cng hai ton hng d liu 16 bit th ta cn phi quan tm n php truyn ca c nh t byte thp n byte cao. Lnh ADDC (cng c nh) c s dng trong nhng trng hp nh vy. V d, xt php cng hai s sau: 3CE7H + 3B8DH.
+ 3C E7 3B 8D 78 74 79
Khi byte th nht c cng (E7 + 8D = 74, CY = 1). C nh c truyn ln byte cao to ra kt qu 3C + 3B + 1 = 78. Di y l chng trnh thc hin cc bc trn trong 8051. V d 6.3: Hy vit chng trnh cng hai s 16 bit. Cc s l 3CE7H v 3B8DH. Ct tng s vo R7v R6 trong R6 cha byte thp. Li gii:
CLR MOV ADD MOV MOV ADDC A, #0E7H A, #8DH R6, A A, #3CH A, #3BG ; Xo c CY = 0 ; Np byte thp vo A A = E7H ; Cng byte thp vo A a = 74H v CY = 1 ; Lu byte thp ca tng vo R6 ; Np byte cao vo A A = 3CH ; Cng byte cao c nh vo A A = 78H ;
6.1.1.3 H thng s BCD (s thp phn m ho theo nh phn). S BCD l s thp phn c m ho theo nh phn 9 m khng dng s thp phn hay s thp lc (Hex). Biu din nh phn ca cc s t 0 n 9 c gi l BCD (xem hnh 6.1). Trong ti liu my tnh ta thng gp hai khi nim i vi cc s BCD l: BCD c ng gi v BCD khng ng gi.
Digit 0 1 2 3 4 BCD 0000 0001 0010 0011 0100 Digit 5 6 7 8 9 BCD 0101 0110 0111 1000 1001
Hnh 6.1: M BCD. a- BCD khng ng gi. Trong s BCD khng ng gi th 4 bt thp ca s biu din s BCD cn 4 bit cn li l s 9. V d 00001001 v 0000 0101 l nhng s BCD khng ng gi ca s 9 v s 5. S BCD khng ng gi i hi mt byte b nh hay mt thanh ghi 8 bit cha n. b- BCD ng gi. Trong s BCD ng gi th mt byte c 2 s BCD trong n mt trong 4 bit thp v mt trong 4 bit cao. V d 0101 1001 l s BCD ng gi cho 59H. Ch mt 1 byte b nh lu cc ton hng BCD. y l l do dng s BCD ng gi v n hiu qu gp i trong lu gi liu. C mt vn khi cng cc s BCD m cn phi c khc phc. Vn l sau khi cng cc s BCD ng gi th kt qu khng cn l s BCD. V d:
MOV ADD A, #17H A, #28H
Cng hai s ny cho kt qu l 0011 1111B (3FH) khng cn l s BCD! Mt s BCD ch nm trong gii 0000 n 1001 (t s 0 n s 9). Hay ni cch khc php cng hai s BCD phi cho kt qu l s BCD. Kt qu trn ng l phi l 17 + 28 = 45 (0100 0101). gii quyt vn ny lp trnh vin phi cng 6 (0110) vo s thp 3F + 06 = 45H. Vn tng t cng c th xy ra trong s cao (v d khi cng hai s 52H + 87H = D94). gii quyt vn ny ta li phi cng 6 vo s cao (D9H + 60H = 139). Vn ny ph bin n mc mi b x l nh 8051 u c mt lnh s l vn ny. Trong 8051 l lnh DA A gii quyt vn cng cc s BCD. 6.1.1.4 Lnh DA. Lnh DA (Decimal Adjust for addition iu chnh thp phn i vi php cng) trong 8051 dng hiu chnh s sai lch ni trn y lin quan n php cng cc s BCD. Lnh gi DA. Lnh DA s cng 6 vo 4 bit thp hoc 4 bit cao nu cn. Cn bnh thng n nguyn kt qu tm c. V d sau s lm r cc im ny.
Sau khi chng trnh c thc hin thanh ghi A s cha 72h (47 + 25 = 72). Lnh DA ch lm vic vi thanh ghi A. Hay ni cch khc trong thanh ghi ngun c th l mt ton hng ca ch nh a ch bt k th ch phi l thanh ghi A DA c th lm vic c. Cng cn phi nhn mnh rng lnh DA phi c s dng sau php cng cc ton hng BCD v cc ton hng BCD khng bao gi c th c s ln hn 9. Ni cch khc l khng cho php c cc s A - F. iu quan trng cng phi lu l DA ch lm vic sau php cng ADD, n s khng bao gi lm vic theo lnh tng INC. Tm tt v hot ng ca lnh DA. Hot ng sau lnh ADD hoc ADDC. 1. Nu 4 bi t thp ln hn 9 hoc nu AC = 1 th n cng 0110 vo 4 bt thp. 2. Nu 4 bit cao ln hn 9 hoc c CY = 1 th n cng 0110 vo 4 bit cao. Trong thc t th c AC ch dng phc v cho php cng cc s BCD v hiu chnh n. V d, cng 29H v 18H s c kt qu l 41H sai vi thc t khi cc s BCD v sa li th lnh DA s cng 6 vo 4 bit thp c kt qu l ng (v AC = 1) dng BCD.
+ + 29H 18H 41H 6 47H + + 0010 0001 0100 0100 1001 1000 0001 0110 0111
AC = 1
V d 6.4: Gi s 5 d liu BCD c lu trong RAM ti a ch bt u t 40H nh sau: 40 = (71), 41 = (11), 42 = (65), 43 = (59) v 44 = (37). Hy vit chng trnh tnh tng ca tt c 5 s trn v kt qu phi l dng BCD. Li gii:
MOV MOV CLR MOV ADD DA JNC JNC INC DJNZ R0, #40H R2, #5 A R7, A A, @R0 A NEXT R7 R0 R2, AGAIN ; Np con tr ; Np b m ; Xo thanh ghi A ; Xo thanhg ghi R7 ; Cng byte con tr ch bi R0 ; iu chnh v dng BCD ng ; Nu CY = 0 khng tch lu c nh ; Tng R7 bm theo s ln nh ; Tng R0 dch con tr ln nh k tip ; Lp li cho n khi R2 = 0
AGAIN:
NEXT:
6.1.2 Php tr cc s khng du. C php: SUBB A, ngun; A = A - ngun - CY. Trong rt nhiu cc b x l c hai lnh khc nhau cho php tr l SUB v SUBB (tr c mn - Sub, tract with Borrow). Trong 8051 ta ch c mt lnh SUBB
Li gii:
A = 3F R3 = 23 1C 0011 0010 1111 0011 + 0011 1101 1 0001 1111 1101 b 2 ca R3 (bc 1) 1100 - 1C (bc 2)
0 CF = 0 (bc 3)
Cc c s c thit lp nh sau: CY = 0, AC = 0 v lp trnh vin phi c nhn n c nh xc nh xem kt qu l m hay dng. Nu sau khi thc hin SUBB m CY = 0 th kt qu l dng. Nu CY = 1 th kt qu m v ch c gi tr b 2 ca kt qu. Thng thng kt qu c dng b 2 nhng cc lnh b CPL v tng INC c th c s dng thay i n. Lnh CPL thc hin b 1 ca ton hng sau ton hng c tng ln 1 (INC) tr thnh dng b 2. Xem v d 6.6. V d 6.6: Phn tch chng trnh sau:
CLR MOV SUBB JNC CPL INC MOV C A, #4CH A, #6EH NEXT A A R1, A ; Np A gi tr 4CH (A = 4CH) ; Tr A cho 6EH ; Nu CY = 0 nhy n ch NEXT ; Nu CY = 1 thc hin b 1 ; Tng 1 c b 2 ; Lu A vo R1
NEXT:
C CY = 1, kt qu m dng b 2. 6.1.2.2 Lnh SUBB khi CY = 1. Lnh ny c dng i vi cc s nhiu byte v s theo di vic mn ca ton hng thp. Nu CY = 1 trc khi xem thc hin SUBB th n cng tr 1 t kt qu. Xem v d 6.7. V d 6.7: Phn tch chng trnh sau:
CLR MOV SUBB MOV MOV SUBB MOV C A, #62 A, #96H R7, A A, #27H A, #12H R6, A ; CY = 0 ; A = 62H ; 62H - 96H = CCH with CY = 1 ; Save the result ; A = 27H ; 27H - 12H - 1 = 14H ; Save the result
Li gii: Sau khi SUBB th A = 62H - 96H = CCH v c nh c lp bo rng c mn. V CY = 1 nn khi SUBB c thc hin ln th 2 th a = 27H - 12H - 1 = 14H. Do vy, ta c 2762H - 1296H = 14CCH. 6.2 Nhn v chia cc s khng du. Khi nhn v chia hai s trong 8051 cn phi s dng hai thanh ghi A v B v cc lnh nhn v chia ch hot ng vi nhng thanh ghi ny. 6.2.1 Nhn hai s khng du. B vi iu khin ch h tr php nhn byte vi byte. Cc byte c gi thit l d liu khng du. Cu trc lnh nh sau: MOV AB ; L php nhn A B v kt qu 16 bit c t trong A v B. Khi nhn byte vi byte th mt trong cc ton hng phi trong thanh ghi A v ton hng th hai phi trong thanh ghi B. Sau khi nhn kt qu trong cc thanh ghi A v B. Phn tip thp trong A, cn phn cao trong B. V d di y trnh by php nhn 25H vi 65H. Kt qu l d liu 16 bit c t trong A v B.
MOV MOV MUL A, #25H B, 65H AB ; Np vo A gi tr 25H ; Np vo B gi tr 65H ; 25H*65H = E99 vi B = 0EH v A = 99H
Lu cc im sau khi thc hin DIV AB Lnh ny lun bt CY = 0 v OV = 0 nu t s khng phi l s 0 Nu t s l s 0 (B = 0) th OV =1 bo li v CY = 0. Thc t chun trong tt c mi b vi x l khi chia mt s cho 0 l bng cch no bo c kt qu khng xc nh. Trong 8051 th c OV c thit lp ln 1. Bng 6.2: Tm tt php chia khng du (DIV AB).
Php chia Byte cho Byte T s A Mu s B Thng s A S d B
6.2.3 Mt ng dng cho cc lnh chia. C nhng thi im khi mt b ADC c ni ti mt cng v ADC biu din mt s d nhit hay p sut. B ADC cp d liu 8 bit dng Hex trong di 00 - FFH. D liu Hex ny phi c chuyn i v dng thp phn. Chng ta thc hin chia lp nhiu ln cho 10 v lu s d vo nh v d 6.8. V d 6.8: a- Vit mt chng trnh nhn d liu dng Hex trong phm vi 00 - FFH t cng 1 v chuyn i n v dng thp phn. Lu cc s vo trong cc thanh ghi R7, R6 v R5 trong s c ngha nh nht c ct trong R7. b- Phn tch chng trnh vi gi thit P1 c gi tr FDH cho d liu. Li gii:
a) MOV MOV MOV MOV DIV MOV MOV DIV MOV MOV A, #0FFH P1, A A, P1 B, #10 AB R7, B B, #10 AB R6, B R5, A ; To P1 l cng u vo ; c d liu t P1 ; B = 0A Hex (10 thp phn) ; Chia cho 10 ; Ct s thp ; ; Chia 10 ln na ; Ct s tip theo ; Ct s cui cng
b) chuyn i s nh phn hay Hex v s thp phn ta thc hin chia lp cho 10 lin tc cho n khi thng s nh hn 10. Sau mi ln chia s d c lu ct.
(S u)
Do vy, ta c FDH = 253. hin th d liu ny th n phi c chuyn i v ASCII m s c m t chng sau. 6.3 Cc khi nim v s c du v cc php tnh s hc. Tt c mi d liu t trc n gi u l cc s khng du, c ngha l ton b ton hng 8 bit u c dng cho b ln. C nhiu ng dng yu cu d liu c du, phn ny s bn v nhng lnh lin quan n cc s c du. 6.3.1 Khi nim v cc s c du trong my tnh. Trong cuc sng hng ngy cc s c dng c th l s m hoc dng. V d 5 di 00C c biu din l -50C v 20 trn 00C c biu din l +200C. Cc my tnh cng phi c kh nng p ng ph hp vi cc s y. lm c iu y cc nh khoa hc my tnh pht minh ra s xp xp biu din cc s m c du v s dng c du nh sau: Bit cao nht MSB c dnh cho bit du (+) hoc (-), cn cc bit cn li c dng biu din ln. Du c biu din bi 0 i vi cc s dng v mt s i vi cc s m (-). Biu din ca mt byte c du c trnh by trn hnh 6.2.
D7 Sign D6 D5 D4 D3 D2 D1 D0
Magnitu
Hnh 6.2: Cc ton hng 8 bit c du. a- Cc ton hng 8 bit c du: Trong cc ton hng A byte c du th bit cao nht MSB l D7 c dng biu din du, cn 7 bit cn li t D6 - D0 dng biu din ln ca s . Nu D7 = 0 th l ton hng dng v nu D7 = 1 th n l ton hng m. b- Cc s dng: Di ca cc s dng c th c biu din theo dng cho trn hnh 6.2 l t 0 n +127 th phi s dng ton hng 16 bit. V 8051 khng h tr d liu 16 bit nn ta khng bn lun n. c- Cc s m: i vi cc s m th D7 = 1, tuy nhin ln c biu din dng s b 2 ca n. Mc d hp ng thc hin vic chuyn i song iu quan trng l hiu vic chuyn i din ra nh th no. chuyn i v dng biu din s m (b 2) th tin hnh theo cc bc sau: 1. Vit ln ca s dng nh phn 8 bit (khng du). 2. o ngc tt c cc bit 3. Cng 1 vo n. V d 6.9: Hy trnh by cch 8051 biu din s - 5.
Do vy, s FBH l biu din s c du dng b 2 ca s - 5. V d 6.10: Trnh by cch 8051 biu din - 34H. Li gii: Hy quan st cc bc sau:
0011 1100 1100 0200 1011 1100 S 34 c cho dng nh phn o cc bit Cng 1 (thnh s CC dng Hex)
Vy s CCH l biu din dng b 2 c du ca - 34H. V d 6.11: Trnh by cch 8051 biu din - 128: Li gii: Quan st cc bc sau:
1000 0111 1000 0000 1111 0000 S 128 dng nh phn 28 bit o cc bit Cng 1 (tr thnh s 80 dng Hex)
Vy - 128 = 80H l biu din s c du dng b 2 ca - 128. T cc v d trn y ta thy r rng rng di ca cc s m c du 8 bit l - 1 n - 128. Di y l lit k cc s c du 8 bit:
S thp phn -128 -127 -126 ... -2 -1 0 +1 +2 ... -127 S nh phn 1000 0000 1000 0001 1000 0010 ................. 1111 1110 1111 1111 0000 0000 0000 0001 0000 0010 .................. 0111 1111 S Hex 80 81 82 ... FE FF 00 01 02 ... FE
6.3.2 Vn trn trong cc php ton vi s c du. Khi s dng cc s c du xut hin mt vn rt nghim trng m phi c s l. l vn trn, 8051 bo c li bng cch thit lp c trn OV nhng trch nhim ca lp trnh vin l phi cn thn vi kt qu sai. CPU ch hiu 0 v 1 v n lm ng vi vic chuyn i s m, s dng ca con ngi. Vy trn s l g? Nu kt qu ca mt php ton trn cc s c du m qu ln i vi thanh ghi th xut hin s trn s v lp trnh vin phi c cnh bo. Xt v d 6.12 di y.
Li gii:
+ + 96 + 70 - 166 0110 0100 1010 0000 0110 0110
v OV = 1
Theo CPU kt qu l -90 v l kt qu sai nn CPU bt c OV = 1 bo trn s. Trong v d 6.12 th + 96 c cng vi + 70 v kt qu theo CPU l - 90. Ti sao vy? L do l kt qu ca + 96 + 70 = 172 ln hn s m thanh ghi A c th cha c. Cng nh tt c mi thanh ghi 8 bit khc, thanh ghi A ch cha c n s + 127. Cc nh thit k ca PCU to ra c trn OV phc v ring cho mc ch bo cho lp trnh vin rng kt qu ca php ton s c du l sai. 6.3.3 Khi no th c trn OV c thit lp? Trong cc php ton vi s c du 8 bit th c OV c bt ln 1 khi xut hin mt trong hai iu kin sau: 1. C nh t D6 sang D7 nhng khng c nh ra t D7 (c CY = 0) 2. C nh ra t D7 (c CY = 1) nhng khng c nh t D6 sang D7 Hay ni cch khc l c trn OV c bt ln 1 nu c nh t D6 sang D7 hoc t D7 nhng khng ng thi xy ra c hai. iu ny c ngha l nu c nh c t D6 sang D7 v t D7 ra th c OV = 0. Trong v d 6.12 v ch c nh t D7 ra nn c OV = 1. Trong v d 6.13, v d 6.14 v 6.15 c minh ho thm v s dng c trn trong cc php s hc vi s c du. V d 6.13: Hy quan st on m sau n vai tr ca c OV.
MOV MOV ADD A, # -128 R4, # -2 A, R4 ; A = 1000 ; R4 = 1111 ; A = 0111 0000 (A= 80H) (R4 = FEH) 1110 (A = 7EH = +126, invalid)
Li gii:
- 128 +-2 -130 1000 1111 0111 0000 1110 1110
v OV = 1
Li gii:
-2 +-5 - 7 1111 1111 1111 1110 1011 1001
v OV = 0
Li gii:
7 - 18 25 0000 0001 0001 0111 0010 1001
v OV = 0
Theo CPU th kt qu - 25 l ng nn c OV = 0. T cc v d trn y ta c th kt lun rng trng bt k php cng s c du no, c OV u bo kt qu l ng hay sai. Nu c OV = 1 th kt qu l sai, cn nu OV = 0 th kt qu l ng. Chng ta c th nhn mnh rng, trong php cng cc s khng du ta phi hin th trng thi ca c CY (c nh) v trong php cng cc s c du th c trn OV phi c theo di bi lp trnh vin. Trong 8051 th cc lnh nh JNC v JC cho php chng trnh r nhnh ngay sau php cng cc s khng du nh phn 6.1. i vi c trn OV th khng c nh vy. Tuy nhin, iu ny c th t c bng lnh JB PSW.2 hoc JNB PSW.2 v PSW thanh ghi c c th nh a ch theo bit.
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.
8.1.2 Cc cng I/O v kh nng nh a ch theo bt. B vi iu khin 8051 c bn cng I/O 8 bt l P0, P1, P2 v P3. Chng ta c th truy cp ton b 8 bt hoc theo mt bt bt k m khng lm thay i cc bt khc cn li. Khi truy cp mt cng theo tng bt, chng ta s dng cc c php SETB Y, Y vi X l s ca cng 0, 1, 2 hoc 3, cn Y l v tr bt t 0 n 7 i vi cc bt d liu o n 7. V d SETB P1.5 l thit lp bt cao s 5 ca cng 1. Hy nh rng do l bt c ngha thp nht LSB v D7 l bt c ngha l cao nht MSB. Xem v d 8.1. V d 8.1: Vit cc chng trnh sau: a) To mt sng vung (hm xung vung) vi y xung 50% trn bt 0 ca cng 1. b) To mt hm xung vung vi 66% y xung trn bt 3 ca cng 1. Li gii: a) Hm xung vung vi y xung 50% c ngha l trng thi bt v tt (hoc phn cao v thp ca xung) c cng di. Do vy ta cht P1.0 vi thi gian gi chm gia cc trng thi.
b) Hm xung vung vi y xung 66% c ngha l trng thi bt c di gp i trng thi tt.
BACK: SETB P1.3 LCALL DELAY LCALL DELAY CLR P1.3 LCALL DELAY SJMP BACK 8051 P1.0 ;Thit lp bt 3 cng 1 ln 1. ;Gi chng trnh con DELAY ;Gi chng trnh con DELAY ln na. ;Xo bt 3 ca cng 1 v 0. ;Gi chng trnh con DELAY ;Tip tc thc hin n.
Lu rng, khi m P1.0 c hp dch n tr thnh SETB 90H v P1.0 c a ch trong RAM l 90h. T hnh v 8.1 ta thy rng cc a ch bt cho P0 l 80H n 87H v cho P l 90H n 97H v.v... Hnh 8.1 cng ch ra tt c cc thanh ghi c kh nng nh a ch theo bt. Bng 8.2: Kh nng nh a ch theo bt ca cc cng.
P0 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Port's Bit D0 D1 D2 D3 D4 D5 D6 D7
Li gii
86H l dnh cho SETB 87H l dnh cho CLR 92H l dnh cho SETB
8.1.3 Kim tra mt bt u vo. Lnh JNB (nhy nu bt = 0) v JB (nhy nu bt bng 1) cng l cc php thao tc n bt c s dng rng ri. Chng cho php ta hin th mt bt v thc hin quyt nh ph thuc vo vic liu n l 0 hay l 1. V d 8.3: gi s bt P2.3 l mt u vo v biu din iu kin ca mt l. Nu n bt ln 1 th c ngha l l nng. Hy hin th lin tc, mi khi n ln cao th hy gi mt xung cao-xung-thp (Aigh-to-low) n cng P1.5 bt ci bo. Li gii:
HERE: JNB P2.3, HERE SETB P1.5 CLR P1.5 ; Duy tr hin th cao. ; Thit lp P1.5 = 1 ; Thc hien chuyn xung t cao-xung-thp
Cc lnh JNB v JB c th c dng i vi cc bt bt k ca cc cng I/O 0, 1, 2 v 3 v tt c cc cng ny u c kh nng nh a ch theo bt. Tuy nhin, cng 3 hu nh dng cho cc tn hiu ngt v truyn thng ni tip v thng thng khng dng cho bt c vo/ ra theo bt hoc theo byte no. iu ny s c bn chng 10 v 11. 8.1.4 Cc thanh ghi v kh nng nh a ch theo bt. Trong tt c cc cng I/O u c kh nng nh a ch theo bt th cc thanh ghi li khng c nh vy. Ta c th nhn thy iu t hnh 8.1: Ch thanh gh B, PSW, IP, IE, ACC, SCON v TCON l c th nh a ch theo bt, y ta s tp trung vo cc thanh ghi A, B v PSW cn cc thanh ghi khc s cp cc chng sau. T hnh 8.1 hy rng cng PO c gn a ch bt 80H-87H. Cn i ch bt 88-8FH c gn cho thanh ghi TCON. Cui cng a ch bt F0-F7H c gn cho thanh ghi B. Xt v d 8.4 v 8.5 v vic s dng cc thanh ghi ny vi kh nng nh a ch theo bt.
Bit address F4 E4 F3 E3 F2 E2 D2 F1 E1 F0 E0 B ACC PSW IP F3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0
D4 D3 BC BB B4 AC B3
D1 D0 B8
BA B9 B2
B1 B0 A9 A1 A8 A0
AB AA A3 A2
A5 A4
9F 97
9E 96
99 90
8F
8E
not bit addressable not bit addressable not bit addressable not bit addressable not bit addressable 8D 8C 8B 8A not bit addressable
89
88
87
not bit addressable not bit addressable not bit addressable 86 85 84 83 82 81 Special Function Registers
80
Hnh 8.1: a cha theo Byte v bt ca b nh RAM cc thanh ghi chc nng c bit. V d 8.4: Hy vit chng trnh kim tra xem thanh ghi tch lu c cha mt s chn khng? Nu c th chia n cho 2, nu khng th hy lm chn n v sau chia n cho 2. Li gii:
MOV JNB JNC DIX B, # 2 ACC 0, YES A AB ; Gn B = 2 ; DO ca thanh ghi A c bng 0? ; Nu c th nhy v YES ; Nu l s l th tng ln 1 thnh chn ; Chia A/B
YES:
V d 8.5: Hy vit on chng trnh kim tra xem cc bt 0 v 5 ca thanh ghi B c gi tr cao khng? Nu khng phi th t chng ln 1 v lu vo thanh ghi b.
CY RS1 0 0 1 1
AC RS0 0 1 0 1
--
RS0
OV
Hnh 8.2: Cc bt ca thanh ghi PSW. Nh ni chng 2, trong than ghi PSW c hai bt dnh ring chn cc bng thanh ghi. Khi RESET th bng 0 c chn, chng ta c th chn cc bng bt k khc bng cch s dng kh nng nh a ch theo bt ca PSW. V d 8.6: Hy vit chng trnh lu thanh ghi tch lu vo R7 ca bng 2. Li gii:
CLR SETB MOV PSW.3 PSW.4 R7.A
V d 8.7: Trong khi c hai lnh JNC v JC kim tra bt c nh CY th li khng c cc lnh cho bt c trn (0V) lm th no ta c th vit m kim tra 0V. Li gii: C 0V l bt PSW.2 ca thanh ghi PSW. PSW l thanh ghi c th nh a ch theo bt, do vy ta c th s dng lnh sau kim tra c 0V:
JB PSW.2, TARGET ; Nhy v TARGET nu 0V = 1
8.15 Vng nh RAM c th nh a ch theo bt. Trong 128 byte RAM trong ca 8051 th ch c 16 byte ca n l c th nh a ch theo bt c. Phn cn li c nh dng byte. Cc cng RAM c th nh a ch theo bt l 20H n 2FH. Vi 16 byte ny ca RAM c th cung cp kh nng nh a ch theo bt l 128 bt, v 16 8 = 128. Chng c nh a ch t 0 n 127. Do vy, nhng a ch bt t 0 n 7 dnh cho byte u tin, v tr RAM trong 20H v cc bt t 8 n OFH l a ch bt ca byte th hai ca v tr RAM trong 21H v.v... Byte cui cng ca 2FH c a ch bt t 78H n 7FH (xem hnh 8.3). Lu rng cc v tr RAM trong 20H n 2FH va c th nh a ch theo byte va c th nh a ch theo bt. t hnh 8.3 v 8.1 ta thy rng cc a ch bt 00 - 7FH thuc v cc a ch byte ca RAM t 20 - 2FH v cc a ch bt t 80 n F7H thuc cc thanh ghi c bit SFR, cc cng P0, P1, v.v... V d 8.8: Hy kim tra xem cc bt sau y thuc byte no? Hy cho a ch ca byte RAM dng Hex.
a) SETB 42H b) CLR 67H c) CLR 0FH d) SETB 28H ; Set bit 42H to 1 ; Clear bit 67 ; Clear bit OFH ; Set bit 28H to 1
Li gii:
a) a ch bt 42H ca RAM thuc bt D2 ca v tr RAM 28H. b) a ch bt 67H ca RAM thuc bt D7 ca v tr RAM 20H. c) a ch bt 0FH ca RAM thuc bt D7 ca v tr RAM 21H. d) a ch bt 28H ca RAM thuc bt D0 ca v tr RAM 25H. e) a ch bt 12H ca RAM thuc bt D4 ca v tr RAM 21H. f) a ch bt 05H ca RAM thuc bt D5 ca v tr RAM 20H.
V d 8.9: Trng thi ca cc bt P1.2 v P1.3 ca cng vo/ra P1 phi c lu ct trc khi chng c thay i. Hy vit chng trnh lu trng thi ca P1.2 vo v tr bt 06 v trng thi P1.3 vo v tr bt 07. Li gii:
CLR CLR JNB SETB OVER: JNB SETB NEXT: .... 06 07 P1.2, OVER 06 P1.3, NEXT 07 ;Xo a ch bt 06 ; Xo a ch bt 07 ;Kim tra bt P1.2 nhy v OVER nu P1.2 = 0 ; Nu P1.2 th thit lp v tr bt 06 = 0 ;Kim tra bt P1.3 nhy v NEXT nu n = 0 ;Nu P1.3 = 1th thit lp v tr bt 07 = 1
Cc cu hi n luyn: 1. Tt c cc cng I/O ca 8051 u c kh nng nh a ch theo bt? (ng sai) 2. Tt c mi thanh ghi ca 8051 u c kh nng nh a ch theo bt? (ng sai) 3. Tt c cc v tr RAM ca 8051 u c kh nng nh a ch theo bt? (ng sai) 4. Hy ch ra nhng thanh ghi no sau y c kh nng nh a ch theo bt: 5. Trong 128 byte RAM ca 8051 nhng byte no c kh nng nh a ch theo bt. Hy lit k chng. 6. Lm th no c th kim tra xem bt D0 ca R3 l gi tr cao hay thp. 7. Hy tm xem cc bt dau thuc nhng byte no? Hy cho a ch ca cc byte RAM theo s Hex: 8. Cc a ch bt 00 - 7FH v 80 - F7H thuc cc v tr nh no? 9. Cc cng P0, P1, P2 v P3 l mt b phn ca SFR? (ng sai) 10. Thanh ghi TCON c th nh a ch theo bt (ng sai) 8.2 Cc php ton mt bt vi c nh CY. Ngoi mt thc t l c nh CY c thay i bi cc lnh l-gc v s hc th trong 8051 cn c mt s lnh m c th thao tc trc tip c nh CY. Cc lnh ny c cho trong bng 8.3. Trong cc lnh c ch ra sau trong bng 8.3 th chng ta trnh by cng dng ca lnh JNC, CLR v SETB trong nhiu v d trong mt s chng trc y. Di y ta tip tc lm quen vi mt s v d v cch s dng mt s lnh khc t bng 8.3.
a) SETB 20 d) SETB 95 b) CLR 32 e) SETB 0ETB 12H c) SETB 12H a) A, b) B, (c) R4 (d) PSW (e) R7
V d 8.10: Hy vit mt chng trnh lu ct trng thi ca cc bt P1.2 v P1.3 vo v tr nh tng ng trong RAM 6 v 7. Li gii:
MOV MOV MOV MOV C, P1.2 06, C C, P1.3 07, C ; Lu trng thi P1.2 vo CY. ; Lu trng thi CY vo bt 6 ca RAM ; Lu trng thi P1.2 vo CY ; Lu trng thi CY vo v tr RAM 07
V d 8.11: gi s v tr nh 12H trong RAM gi trng thi ca vic c in thoi hay khng. Nu n trng thi cao c ngha l c mt cuc gi mi v n c kim tra ln cui. Hy vit mt chng trnh hin th c li nhn mi (New Message) trn mn hnh LCD nu bt 12H ca RAM c gi tr cao. Nu n c gi tr thp th LCD hin th khng c li nhn mi (No New Message). Li gii:
MOV C, 12H JNC NO MOV DPTR, # 400H LCAL DISPLAY SJMP NEXT MOV DSTR, #420H LCAL DISPLAY ORG DB ORG DB ; Sao trng thi bt 12H ca RAM vo CY ; Kim tra xem c CY c gi tr cao khng. ; Nu n np a ch ca li nhn. ; Hin th li nhn. ; Thot ; Np a ch khng c li nhn. ; Hin th n. Thot data to be displayed on LCD
NO: EXIT: ;
YES-MG: NO-MG:
V d 8.12:
2. Hy trnh by cch lm th no lu trng thi bt P2.7 vo v tr bt 31 ca RAM. 3. Hy trnh by cc chuyn trng thi bt 09 ca RAM n bt P1.4. 8.3 c cc chn u vo thng qua cht cng. Trong vic c cng th mt s lnh c trng thi ca cc chn cng, cn mt s lnh khc th c mt s trng thi ca cht cng trong. Do vy, khi c cc cng th c hai kh nng: 1. c trng thi ca chn vo. 2. c cht trong ca cng ra. Chng ta phi phn bit gia hai dng lnh ny v s ln ln gia chng l nguyn nhn chnh ca cc li trong lp trnh cho 8051, c bit khi kt ni vi phn cng bn ngoi. Trong phn ny ta bn v s qua cc lnh ny. Tuy nhin, c gi phi nghin cu v hiu v cc ni dung ca ch ny v v hot ng bn trong ca cc cng c cho trong ph lc Appendix C2. 8.3.1 Cc lnh c cng vo. Nh ni chng 4 th bin mt bt bt k ca cng 8051 no thnh mt cng u vo, chng ta phi ghi (l-gc cao) vo bt . Ssu khi cu hnh cc bt ca cng l u vo, ta c th s dng nhng lnh nht nh nhn d liu ngoi trn cc chn vo trong CPU. Bng 8.4 l nhng lnh ni trn. Bng 8.4: Cc lnh c mt cng vo.
MOV JNB JB MOV Gi lnh A, PX PX.Y, ... PX.Y, C, PX.Y MOV JNB JB MOV V d A, P2 P2.1, ch P1.3, ch C, P2.4 M t Chuyn d liuj chn P2 vo ACC Nhy ti ch nu, chn P2.1 = 0 Nhy ch nu, chn P1.3 = 1 Sao trng thi chn P2.4 vo CY
8.3.2 c cht cho cng u ra. Mt s lnh ni dung ca mt cht cng trong thay cho vic c trng thi ca mt chn ngoi. Bng 8.5 cung cp danh sch nhng lnh ny. V d, xt lnh ANL P1, A. Trnh t thao tc c thc hin bi lnh ny nh sau:
1. 2. 3. 4.
Lu : Chng ta nn nghin cu phn C2 ca ph lc Appendix C nu ta ni phn cng ngoi vo h 8051 ca mnh. Thc hin sai cc ch dn hoc ni sai cc chn c th lm hng cc cng ca h 8051. 8.4 Tm lc. Chng ny m t mt trong cc c tnh mnh nht ca 8051 l php ton mt bt. Cc php ton mt bt ny cho php lp trnh vin thit lp, xo, di chuyn v b cc bt ring r ca cc cng, b nh hoc cc thanh ghi. Ngoi ra c mt s lnh cho php thao tc trc tip vi c nh CY. Chng ta cng bn v cc lnh c cc chn cng thng qua vic c cht cng. 8.5 Cc cu hi kim tra. 1. Cc lnh SETB A, CLR A, CPL A ng hay sai? 2. Cc cng vo/ ra no v cc thanh ghi no c th nh a ch theo bt. 3. Cc lnh di y ng hay sai? nh du lnh ng.
a) SETB b) SETB c) CLR d) CRL P1 P2.3 ACC.5 90H e) SETB B4 f) CLR 80H g) CLR PSW.3 h) CLR 87H
4. Hy git chng trnh to xung vung vi y xung 75%, 80% trn cc chn P1.5 v P2.7 tng ng. 5. Vit chng trnh hin th P1.4 nu n c gi tr cao th chng trnh to ra mt m thanh (sng dung vung 50% y xung) trn chn P2.7. 6. Nhng a ch bt no c gn cho cc cng P0, P1, P2 v P3 cho cc thanh ghi PCON, A, B v PSW. 7. Nhng a ch bt di y thuc v cng hay thanh ghi no?
a) 85H f) A5H b)87H c) 88H d)8DH g)A7H h) B3H i) D4H j) D8H e)93H
Hnh 9.1: Cc thanh ghi ca b Timer 0. 9.1.1.2 Cc thanh ghi ca b Timer 1. B nh thi gian Timer 1 cng di 16 bt v thanh ghi 16 bt ca n c chia ra thnh hai byte l TL1 v TH1. Cc thanh ghi ny c truy cp v c ging nh cc thanh ghi ca b Timer 0 trn.
TH1 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 TL1 D4 D3 D2 D1 D0
Hnh 9.2: Cc thanh ghi ca b Timer 1. 9.1.2 Thanh ghi TMOD (ch ca b nh thi). C hai b nh thi Timer 0 v Timer 1 u dng chung mt thanh ghi c gi l IMOD thit lp cc ch lm vic khc nhau ca b nh thi. Thanh ghi TMOD l thanh ghi 8 bt gm c 4 bt thp c thit lp dnh cho b Timer 0 v 4 bt cao dnh cho Timer 1. Trong hai bt thp ca chng dng thit lp ch ca b nh thi, cn 2 bt cao dng xc nh php ton. Cc php ton ny s c bn di y.
Hnh 9.3: Thanh ghi IMOD. 9.1.2.1 Cc bt M1, M0: L cc bt ch ca cc b Timer 0 v Timer 1. Chng chn ch ca cc b nh thi: 0, 1, 2 v 3. Ch 0 l mt b nh thi 13, ch 1 l mt b nh thi 16 bt v ch 2 l b nh thi 8 bt. Chng ta ch tp chung vo cc ch thng c s dng rng ri nht l ch 1 v 2. Chng ta s sm khm ph ra cc c tnh c cc ch ny sau khi khm phn cn li ca thanh ghi TMOD. Cc ch c thit lp theo trng thi ca M1 v M0 nh sau: M1 0 0 1 1 M0 0 1 0 1 Ch 0 1 2 3 Ch hot ng B nh thi 13 bt gm 8 bt l b nh thi/ b m 5 bt t trc B nh thi 16 bt (khng c t trc) B nh thi 8 bt t np li Ch b nh thi chia tch
9.1.2.2 C/ T (ng h/ b nh thi). Bt ny trong thanh ghi TMOD c dng quyt nh xem b nh thi c dng nh mt my to tr hay b m s kin. Nu bt C/T = 0 th n c dng nh mt b nh thi to ch thi gian. Ngun ng h cho ch tr thi gian l tn s thch anh ca 8051. phn ny ch bn v la chn ny, cng dng ca b nh thi nh b m s kin th s c bn phn k tip. V d 9.1: Hy hin th xem ch no v b nh thi no i vi cc trng hp sau: a) MOV TMOD, #01H b) MOV TMOD, #20H c) MOV TMDO, #12H Li gii: Chng ta chuyn i gi tr t s Hex sang nh phn v i chiu hnh 93 ta c:
a) TMOD = 0000 0001, ch 1 ca b nh thi Timer 0 c chn. b) TMOD = 0010 0000, ch 1 ca b nh thi Timer 1 c chn. c) TMOD = 0001 0010, ch 1 ca b nh thi Timer 0 v ch 1 ca Timer 1 c chn.
9.1.2.3 Ngun xung ng h cho b nh thi: Nh chng ta bit, mi b nh thi cn mt xung ng h gi nhp. Vy ngun xung ng h cho cc b nh thi trn 8051 ly u? Nu C/T = 0 th tn s thch anh i lin vi 8051 c lm ngun cho ng h ca b nh thi. iu c ngha l ln ca tn s thch anh i km vi 8051 quyt nh tc nhp ca cc b nh thi trn 8051. Tn s ca b nh thi lun bng 1/12 tn s ca thch anh gn vi 8051. Xem v d 9.2. V d 9.2: Hy tm tn s ng b v chu k ca b nh thi cho cc h da trn 8051 vi cc tn s thch anh sau:
Tn s ng h ca b nh thi
Li gii: a)
1 1 12MHz = 1MHz v T = = 1ms 12 1 / 1MHz 1 1 = 0,75ms 16MHz = 1,111Mz v T = b) 12 1,333MHz 1 1 = 1,085ms c) 11,0592MHz = 921,6kHz v T = 12 0,9216MHz
Mc d cc h thng da trn 8051 khc vi tn s thch anh t 10 n 40MHz, song ta ch tp chung vo tn s thch anh 11,0592MHz. L do ng sau mt s l nh vy l hi lm vic vi tn sut bouid i vi truyn thng ni tip ca 8051. Tn s XTAL = 11,0592MHz cho php h 8051 truyn thng vi IBM PC m khng c li, iu m ta s bit chng 10. 9.1.3 Bt cng GATE. Mt bt khc ca thanh ghi TMOD l bt cng GATE. trn hnh 9.3 ta thy c hai b nh thi Timer0 v Timer1 u c bt GATE. Vy bt GATE dng lm g? Mi b nh thi thc hin im khi ng v dng. Mt s b nh thi thc hin iu ny bng phn mm, mt s khc bng phn cng v mt s khc va bng phn cng va bng phn mm. Cc b nh thi tren 8051 c c hai. Vic khi ng v dng b nh thi c khi ng bng phn mm bi cc bt khi ng b nh thi TR l TR0 v TR1. iu ny c c nh cc lnh SETB TR1 v CLR TR1 i vi b Timer1 v SETB TRO v CLR TR0 i vi b Timer0. Lnh SETB khi ng b nh thi v lnh CLR dng dng n. Cc lnh ny khi ng v dng cc b nh thi khi bt GATE = 0 trong thanh ghi TMOD. Khi ng v ngng b nh thi bng phn cng t ngun ngoi bng cch t bt GATE = 1 trong thanh ghi TMOD. Tuy nhin, trnh s ln ln ngay t by gi ta t GATE = 0 c ngha l khng cn khi ng v dng cc b nh thi bng phn cng t bn ngoi. s dng phn mm khi ng v dng cc b nh thi phn mm khi ng v dng cc b nh thi khi GATE = 0. Chng ta ch cn cc lnh SETB TRx v CLR TRx. Vic s dng phn cng ngoi khi ng v dng b nh thi ta s bn chng 11 khi bn v cc ngt. V d 9.3: Tm gi tr cho TMOD nu ta mun lp trnh b Timer0 ch 2 s dng thch anh XTAL 8051 lm ngun ng h v s dng cc lnh khi ng v dng b nh thi. Li gii: TMOD = 0000 0010: B nh thi Timer0, ch 2 C/T = 0 dng ngun XTAL GATE = 0 dng phn mm trong khi ng v dng b nh thi. Nh vy, by gi chng ta c hiu bit c bn v vai tr ca thanh ghi TMOD, chng ta s xt ch ca b nh thi v cch chng c lp trnh nh th no to ra mt tr thi gian. Do ch 1 v ch 2 c s dng rng ri nn ta i xt chi tit tng ch mt. 9.1.4 Lp trnh cho mi ch Mode1.
XTAL oscillator
12
TH
TL
TF overflow flag
C/T = 0
TR
4. Sau khi b nh thi t c gii hn ca n v quay quan gi tr FFFFH, mun lp li qu trnh th cc thanh ghi TH v TL phi c np li vi gi tr ban u v TF phi c duy tr v 0. 9.1.4.1 Cc bc lp trnh ch Mode 1. to ra mt tr thi gian dng ch 1 ca b nh thi th cn phi thc hin cc bc di y. 1. Np gi tr TMOD cho thanh ghi bo nh thi no (Timer0 hay Timer1) c s dng v ch no c chn. 2. Np cc thanh ghi TL v TH vi cc gia tr m ban u. 3. Khi ng b nh thi. 4. Duy tr hin th c b nh thi TF bng lnh JNB TFx, ch xem n c bt khng. Thot vng lp khi TF c ln cao. 5. Dng b nh thi. 6. Xo c TF cho vng k tip. 7. Quay tr li bc 2 np li TL v TH. tnh ton thi gian tr chnh xc v tn s sng vung c to ra trn chn P1.5 th ta cn bit tn s XTAL (xem v d 9.5). T v d 9.6 ta c th pht trin mt cng thc tnh ton tr s dng ch Mode1 (16 bt) ca b nh thi i vi tn s thch anh XTAL = 11, 0592MHz (xem hnh 9.4). My tnh trong th mc Accessrry ca Microsoft Windows c th gip ta tm cc gi tr TH v TL. My tnh ny h tr cc php tnh theo s thp phn, nh phn v thp lc.
Hnh 9.4: Cng thc tnh ton tr thi gian i vi tn s XTAL = 11, 0592MHz. V d 9.4: Trong chng trnh di y ta to ra mt sng vung vi y xung 50% (cng t l gia phn cao v phn thp) trn chn P1.5. B nh thi Timer0 c dng to tr thi gian. Hy phn tch chng trnh ny.
HERE: MOV TMOD, #01 MOV TL0, #0F2H MOV TH0, #0FFH CPL P1.5 ACALL DELAY SJMP HERE delay using timer0. SETB JNB CLR CLR RET TR0 TF0, AGAIN TR0 TF0 ; S dng Timer0 v ch 1(16 bt) ; TL0 = F2H, byte thp ; TH0 = FFH, byte cao ; S dng chn P1.5 ; Np li TH, TL ; Khi ng b nh thi Timer0 ; Hin th c b nh thi cho n khi n vt qua FFFFH. ; Dng b Timer ; Xo c b nh thi 0
; DELAY: AGAIN:
Li gii: Trong chng trnh trn y ch cc bc sau: 1. TMOD c np. 2. gi tr FFF2H c np v TH0 - TL0 3. Chn P1.5 c chn dng cho phn cao thp ca xung. 4. Chng trnh con DELAY dng b nh thi c gi. 5. Trong chng trnh con DELAY b nh thi Timer0 c khi ng bi lnh SETB TR0 6. B Timer0 m ln vi mi xung ng h c cp bi my pht thch anh. Khi b nh thi m tng qua cc trng thi FFF3, FFF4 ... cho n khi t gi tr FFFFH. V mt xung na l n quay v khng v bt c b nh thi TF0 = 1. Ti thi im ny th lnh JNB hn xung. 7. B Timer0 c dng bi lnh CLR TR0. Chng trnh con DELAY kt thc v qu trnh c lp li. Lu rng lp li qu trnh trn ta phi np li cc thanh ghi TH v TL v khi ng li b nh thi vi gi thit tn s XTAL = 11, 0592MHz.
FFF2 TF = 0 FFF3 TF = 0 FFF4 TF = 0 FFFF TF = 0 0000 TF = 1
V d 9.5:
to ra b tr bng s m 1,085ms. S m bng FFFFH - FFF2H = ODH (13 theo s thp phn). Tuy nhin, ta phi cng 1 vo 13 v cn thm mt nhp ng h n quay t FFFFH v 0 v bt c TF. Do vy, ta c 14 1,085ms = 15,19ms cho na chu k v c chu k l T = 2 15,19ms = 30, 38ms l thi gian tr c to ra bi b nh thi. V d 9.6: Trong v d 9.5 hy tnh ton tn s ca xung vung c to ra trn chn P1.5. Li gii: Trong tnh ton thi gian tr ca v d 9.5 ta khng tnh n tng ph ca cc lnh trong vng lp. tnh ton chnh xc hn ta cn b xung thm cc chu k thi gian ca cc lnh trong vng lp. lm iu ta s dng cc chu k my t bng A-1 trong ph lc Appendix A c ch di y.
HERE: MOV TL0, #0F2H MOV TH0, #0FFH CPL P1-5 ACALL DELAY SJMP HERE delay using timer0 SETB JNB CLR CLR RET TR0 TF0, AGAIN TR0 TF0 2 2 1 2 2 1 1 1 1 1
; DELAY: AGAIN:
Tng s chu k b xung l x7 nn chu k thi gian tr l T = 2 27 1.085ms = 58,59ms v tn s l F = 17067,75Hz. V d 9.7: Hy tm ra tr c to ra bi Timer0 trong on m sau s dng c hai phng php ca hnh 9.4. Khng tnh cc tng ph ca cc lnh.
CLR MOV MOV MOV SETB SETB JNB P2.3 TMOD, #01 TL0, #3EH TH0, #0B8G P2.3 TR0 TF0, AGAIN ; Xo P2.3 ; Chn Timer0, ch 1 (16 bt) ; TL0 = 3EH, byte thp ; TH0 = B8H, byte cao ; Bt P2.3 ln cao ; Khi ng Timer0 ; Hin th c b nh thi TF0
27
HERE:
AGAIN:
Li gii: a) tr c to ra trong m trn l: (FFFF - B83E + 1) = 47C2H = 18370 h thp phn 18370 1,085ms = 19, 93145ms. b) V TH - TL = B83EH = 47166 (s thp phn) ta c 65536 - 47166 = 18370. iu ny c ngha l b nh thi gian m t B83EH n FFFF. N c cng vi mt s m v 0 thnh mt b tng l 18370ms. Do vy ta c 18370 1,085ms = 19,93145ms l rng xung. V d 9.8: Sa gi tr ca TH v TL trong v d 9.7 nhn c tr thi gian ln nht c th. Hy tnh tr theo miligiy. Trong tnh ton cn a vo c tng ph ca cc lnh. nhn tr thi gian ln nht c th ta t TH v TL bng 0. iu ny lm cho b nh thi m t 0000 n FFFFH v sau quay qua v 0.
CLR MOV MOV MOV SETB SETB JNB CLR CLR CLR P2.3 TMOD, #01 TL0, #0 TH0, #0 P2.3 TR0 TF0, AGAIN TR0 TF0 P2.3 ; Xo P2.3 ; Chn Timer0, ch 1 (16 bt) ; t TL0 = 0, byte thp ; t TH0 = 0, byte cao ; Bt P2.3 ln cao ; Khi ng b Timer0 ; Hin th c b nh thi TF0 ; Dng b nh thi. ; Xo c TF0
HERE:
AGAIN:
Thc hin bin TH v TL bng 0 ngha l b nh thi m tng t 0000 n FFFFH v sau quay qua v 0 bt c b nh thi TF. Kt qu l n i qua 65536 trng thi. Do vy, ta c tr = (65536 - 0) 1.085ms = 71.1065ms. Trong v d 9.7 v 9.8 chng ta khng np li TH v TL v n l mt xung n. Xt v d 9.9 di y xem vic np li lm vic nh th no ch 1. V d 9.9: Chng trnh di y to ra mt sng vung trn chn P2.5 lin tc bng vic s dng b Timer1 to ra tr thi gian. Hy tm tn s ca sng vung nu tn s XTAL = 11.0592MHz. Trong tnh ton khng a vo tng ph ca cc lnh vng lp:
HERE: MOV MOV MOV SETB JNB CLR CPL CLR SJMP TMOD, #01H TL1, #34H TH0, #76H TR1 TF1, BACK TR1 P1.5 TF AGAIN ; Chn Timer0, ch 1 (16 bt) ; t byte thp TL1 = 34H ; t byte cao TH1 = 76H ; (gi tr b nh thi l 7634H) ; Khi ng b Timer1 ; li cho n khi b nh thi m qua 0 ; Dng b nh thi. ; B chn P1.5 nhn Hi, L0 ; Xo c b nh thi ; Np li b nh thi do ch 1 khng t ng np li .
AGAIN:
Li gii:
HERE:
AGAIN:
V d 9.11: gi s ta c tn s XTAL l 11,0592MHz hy vit chng trnh to ra mt sng vung tn s 2kHz trn chn P2.5. y l trng hp ging vi v d 9.10 ngoi tr mt vic l ta phi chn bt to ra sng vung. Xt cc bc sau:
a) T =
cn tm l 65536 - 230 = 65306 v dng hex l FF1AH. d) gi tr np vo TL l 1AH v TH l FFH. Chng trnh cn vit l:
AGAIN: BACK: MOV TMOD, #10H MOV TL1, #1AH MOV TH1, #0FFH SETB TR1 JNB TF1, BACK CLR TR1 CPL P1.5 CLR TF1 SUMP AGAIN ; Chn b nh thi Timer0, ch 1 (16 bt) ; Gn gi tr byte thp TL1 = 1AH ; Gn gi tr byte cao TH1 = FFH ; Khi ng Timer1 ; gi nguyn cho n khi b nh thi quay v 0 ; Dng b nh thi. ; B bt P1.5 nhn gi tr cao, thp. ; Xo c TF1 ; Np li b nh thi v ch 1 khng t np li.
d) Tnh gi tr cn np vo TH v TL: 65536 - 9216 = 56320 chuyn v dng Hex l DC00H v TH = DCH v TL = 00H.
AGAIN: BACK: MOV TMOD, #10H MOV TL1, #00 MOV TH1, #0DHCH SETB TR1 JNB TF1, BACK CLR TR1 CPL P2.3 CLR TF1 SUMP AGAIN ; Chn b nh thi Timer0, ch 1 (16 bt) ; Gn gi tr byte thp TL1 = 00 ; Gn gi tr byte cao TH1 = DC ; Khi ng Timer1 ; gi nguyn cho n khi b nh thi quay v 0 ; Dng b nh thi. ; B bt P1.5 nhn gi tr cao, thp. ; Xo c TF1 ; Np li b nh thi v ch 1 khng t np li.
9.1.4.3 To mt tr thi gian ln. Nh ta bit t cc v d trn l lng thi gian tr cn to ra ph thuc vo hai yu t: a) Tn s thch anh XTAL b) Thanh ghi 16 bt ca b nh thi ch 1 C hai yu t ny nm ngoi kh nng iu chnh ca lp trnh vin 8051. V nh ta bit gi tr ln nht ca tr thi gian c th t c bng cch t c TH v TL
BACK:
9.1.5 Ch O. Ch 0 hon ton ging ch 1 ch khc l b nh thi 16 bt c thay bng 13 bt. B m 13 bt c th gi cc gi tr gia 0000 n 1FFFF trong TH - TL. Do vy khi b nh thi t c gi tr cc i ca n l 1FFFH th n s quay tr v 0000 v c TF c bt ln. 9.1.6 Lp trnh ch 2. Cc c trng v cc php tnh ca ch 2: 1. N l mt b nh thi 8 bt, do vy n ch cho php cc gi tr t 00 n FFH c np vo thanh ghi TH ca b nh thi. 2. Sau khi TH c np vi gi tr 8 bt th 8051 ly mt bn sao ca n a vo TL. Sau b nh thi phi c khi ng. iu ny c thc hin bi lnh SETB TR0 i vi Timer0 v SETB TR1 i vi Timer1 ging nh ch 1. 3. Sau khi b nh thi c khi ng, n bt u m tng ln bng cch tng thanh ghi TL. N m cho n khi i gi tr gii hn FFH ca n. Khi n quay tr v 00 t FFH, n thit lp c b nh thi TF. Nu ta s dng b nh thi Timer0 th l c TF0, cn Timer1 th l c TF1.
XTAL oscillator
-
12
TL reload
C/T = 0
TR
TF
4. Khi thanh ghi TL quay tr v 00 t FFH th TF c bt ln 1 th thanh ghi TL c t ng np li vi gi tr ban u c gi bi thanh ghi TH. lp li qu trnh chng ta n gin ch vic xo c TF v cho n chy m khng cn s can thip ca lp trnh vin np li gi tr ban u. iu ny lm cho ch 2 c gi l ch t np li so vi ch 1 th ta phi np li cc thanh ghi TH v TL. Cn phi nhn mnh rng, ch 2 l b nh thi 8 bt. Tuy nhin, n li c kh nng t np khi t np li th TH thc cht l khng thay i vi gi tr ban u c gi nguyn, cn TL c np li gi tr c sao t TH. Ch ny c nhiu ng dng bao gm vic thit lp tn s baud trong truyn thng ni tip nh ta s bit chng 10. 9.1.5.1 Cc bc lp trnh cho ch 2. to ra mt thi gian tr s dng ch 2 ca b nh thi cn thc hin cc bc sau: 1. Np thanh ghi gi tr TMOD bo b nh thi gian no (Timer0 hay Timer1) c s dng v ch lm vic no ca chng c chon. 2. Np li cc thanh ghi TH vi gi tr m ban u. 3. Khi ng b nh thi. 4. Duy tr hin th c b nh thi TF s dng lnh JNB TFx, ch xem n s c bt cha. Thot vng lp khi TF ln cao. 5. Xo c TF. 6. Quay tr li bc 4 v ch 2 l ch t np li. V d 9.14 minh ho nhng iu ny. c c ch ln chng ta c th dng nhiu thanh ghi nh c ch ra trong v d 9.15. V d 9.14: gi s tn s XTAL = 11.0592MHz. Hy tm a) tn s ca sng vung c to ra trn chn P1.0 trong chng trnh sau v b) tn s nh nht c th c c bng chng trnh ny v gi tr TH t c iu .
MOV MOV SETB JNB CPL CLR SJMP TMOD, #20H TH1, #5 TR1 TF1, BACK P1.0 TF1 BACK ; Chn Timer1/ ch 2/ 8 bt/ t np li. ; TH1 = 5 ; Khi ng Timer1 ; gi nguyn cho n khi b nh thi quay v 0 ; Dng b nh thi. ; Xo c b nh thi TF1 ; Ch 2 t ng np li.
BACK:
Li gii:
Li gii: Chng ta c th s dng bn tnh Calculator ca Windows kim tra kt qu c cho bi trnh hp ng. Hy chn Calculator ch Decimal v nhp vo s 200. Sau chn Hex, ri n +/ - nhn gi tr ca TH. Hy nh rng chng ta ch s dng ng hai ch s v b qua phn bn tri v d liu chng ta l 8 bt. Kt qu ta nhn c nh sau: Dng thp phn S b hai (gi tr TH)
- 200 - 60 -3 - 12 - 48 38H C4H FDH F4H DOH
9.1.5.2 Cc trnh hp ng v cc gi tr m.
AGAIN:
BACK:
; Khi ng Timer0 ;gi nguyn cho n khi b nh thi quay v 0 ; Dng Timer0 ; Xo c TF cho vng sau.
Li gii: tm gi tr cho TH ch 2 th trnh hp ng cn thc hin chuyn i s m khi ta nhp vo. iu ny cng lm cho vic tnh ton tr n d dng. V ta ang s dng 150 xung ng h, nn ta c thi gian tr cho chng trnh con DELAY l 150 1.085ms v tn s l f =
1 = 2,048kHz. T
rng trong nhiu tnh ton thi gian tr ta b cc xung ng h lin quan n tng ph cc lnh trong vng lp. tnh ton chnh xc hn thi gian tr v c tn s ta ang cn phi a chng vo. Nu ta dng mt my hin sng s v ta khng nhn c tn s ng nh ta tnh ton th l do tng ph lin quan n cc lnh gi trong vng lp. Trong phn ny ta dng b nh thi 8051 to thi gian tr. Tuy nhin, cng dng mnh hn v sng to hn ca cc b nh thi ny l s dng chng nh cc b m s kin. Chng ta s bn v cng dng ca b m ny phn k tip. 9.2 Lp trnh cho b m. phn trn y ta s dng cc b nh thi ca 8051 to ra cc tr thi gian. Cc b nh thi ny cng c th c dng nh cc b m cc s kin xy ra bn ngoi 8051. Cng dng ca b m/ b nh thi nh b m s kin s c tnh by phn ny. Chng no cn lin quan n cng dng c b nh thi nh b m s kin th mi vn m ta ni v lp trnh b nh thi phn trc cng c p dng cho vic lp trnh nh l mt b m ngoi tr ngun tn s. i vi b nh thi/ b m khi dng n nh b nh thi th ngun tn s l tn s thch anh ca 8051. Tuy nhin, khi n c dng nh mt b m th ngun xung tng ni dung cc thanh ghi TH v TL l t bn ngoi 8051. ch b m, hy lu rng cc thanh ghi TMOD v TH, TL cng ging nh i vi b nh thi c bn phn trc, thm ch chng vn c cng tn gi. Cc ch ca cc b nh thi cng ging nhau. 9.2.1 Bt C/T trong thanh ghi TMOD.
V d 9.18: gi s rng xung ng h c cp ti chn T1, hy vit chng trnh cho b m 1 ch 2 m cc xung v hin th trng thi ca s m TL1 trn cng P2. Li gii:
MOV MOV SETB SETB MOV MOV JNB CLR CLR SJMP TMOD, #01100000B TH1, #0 P3.5 TR1 A, TL1 P2, A TF1, Back TR1 TF1 AGAIN ; Chn b m 1, ch 2, bt C/T = 1 xung ngoi. ; Xo TH1 ; Ly u vo T1 ; Khi ng b m ; Ly bn sao s m TL1 ; a TL1 hin th ra cng P2. ; Duy tr n nu TF = 0 ; Dng b m ; Xo c TF ; Tip tc thc hin
AGAIN: BACK:
trong chng trnh trn v vai tr ca lnh SETB P3.5 v cc cng c thit lp dnh cho u ra khi 8051 c cp ngun nn ta mun P3.5 tr thnh u vo th phi bt n ln cao. Hay ni cch khc l ta phi cu hnh (a ln cao) chn T1 8051 (P3.5) cho php cc xung c cp vo n.
P2
T1 P3.5 to LEDs
Trong v d 9.18 chng ta s dng b Timer1 nh b m s kin n m ln mi khi cc xung ng h c cp n chn P3.5. Cc xung ng h ny c th biu din s ngi i qua cng hoc s vng quay hoc bt k s kin no khc m c th chuyn i thnh cc xung. Trong v d 9.19 cc thanh ghi TL c chuyn i v m ASCII hin th trn mt LCD.
overflow flag TH0 TL0 TR0 TF0 goes high when FFFF 0 TF0
C/T =1
C/T =1
Hnh 9.5: a) B Timer0 vi u vo ngoi (ch 1) b) B Timer1 vi u vo ngoi (ch 1) V d 9.19: gi s rng mt xung tn s 1Hz c ni ti chn u vo P3.4. Hy vit chng trnh hin th b m 0 trn mt LCD. Hy t s ban u ca TH0 l - 60. Li gii: hin th s m TL trn mt LCD ta phi thc hin chuyn i gi liu 8 bt nh phn v ASCII.
; Gi chng trnh con khi to CLD ; Chn b m 0, ch 2, bt C/T = 1 ; m 60 xung ; Ly u vo T0 AGAIN: ; Sao chp s m TL0 BACK: ; Gi chng trnh con chuyn i trong cc thanh ghi R2, R3, R4. ACALL CONV ; Gi chng trnh con hin th trn LCD ACALL DISLAY ; Thc hin vng lp nu TF = 0 JNB TF0, BACK ; Dng b m 0 CLR TR0 ; Xo c TF0 = 0 CLR TF0 ; Tip tc thc hin SJMP AGAIN ; Vic chuyn i nh phn v m ASCII khi tr d liu ASCII c trong cc thanh ghi R4, R3, R2 (R2 c LSD) - ch s nh nht. CONV: MOV B, #10 ; Chia cho 10 DIV AB MOV R2, B ; Lu gi s thp MOV B, #10 ; Chia cho 10 mt ln na DIV AB ORL A, #30H ; i n v ASCII MOV R4, A ; Lu ch s c ngha ln nht MSD MOV A, B ; ORL A, #30H ; i s th hai v ASCII MOV R3, A ; Lu n MOV A, R2 ORL A, #30H ; i s th ba v ASCII MOV R2, A ; Lu s ASCII vo R2. RET ACALL MOV MOV SETB SETB MOV LCD-SET UP TMOD, #000110B TH0, # - 60 P3.4 TR0 A, TL0
S dng tn s 60Hz ta c th to ra cc giy, pht, gi. Lu rng trong vng u tin, n bt u t 0 v khi RESET th TL0 = 0; gii quyt vn ny hy np TL0 vi gi tr - 60 u chng trnh.
Timer0 exterrnal input Pin 3.4 overflow flag TL0 TR0 TH0 reload TF0 goes high when FF 0 TF0 Timer01e xterrnal input Pin 3.5 overflow flag TL1 TR1 TH1 reload TF1 goes high when FF 0 TF1
C/T =1
C/T =1
Hnh 9.6: B Timer0 vi u vo ngoi (ch 2) Hnh 9.7: B Timer0 vi u vo ngoi (ch 2) Nh mt v d ng dng khc ca b nh thi gian vi bt C/T = 1, ta c th np mt sng vung ngoi vi tn s 60Hz vo b nh thi. Chng trnh s to ra cc n v thi gian chun theo giy, pht, gi. T u vo ny ta hin th ln mt LCD. y s l mt ng h s tuyt vi nhng n khng tht chnh xc. V d ny c th tm thy ph lc Appendix E. Trc khi kt thc chng ny ta cn nhc li hai vn quan trng. 1. Chng ta c th ngh rng cng dng ca lnh JNB TFx, ch hin th mc cao ca c TF l mt s lng ph thi gian ca BVK. iu ng c mt gii php cho vn ny l s dng cc ngt. Khi s dng cc ngt ta c th i thc hin cc cng vic khc vi BVK. Khi c TF c bt th n bo cho ta bit y l im quan trng v th mnh ca 8051 (m ta s bn chng 11). 2. Chng ta mun bit cc thanh ghi TR0 v TR1 thuc v u. Chng thuc v mt thanh ghi gi l TCON m s c ban sau y (TCON - l thanh ghi iu khin b m (b nh thi)). Bng 9.2: Cc lnh tng ng i vi thanh ghi iu khin b nh thi.
i vi Timer0 SETB TR0 = SETB TCON.4 CLR TR0 = CLR TCON.4 SETB TF = SETB TCON.5 CLR TF0 = CLR TCON.5 i vi Timer1 SETB TR1 = SETB TCON.6
9.2.2 Thanh ghi TCON. Trong cc v d trn y ta thy cng dng ca cc c TR0 v TR1 bt/ tt cc b nh thi. Cc bt ny l mt b phn ca thanh ghi TCON (iu khin b nh thi). y l thanh ghi 8 bt, nh c ch ra trong bng 9.2 th bn bt trn c dng lu ct cc bt TF v TR cho c Timer0 v Timer1. Cn bn bt thp c thit lp dnh cho iu khin cc bt ngt m ta s bn chng 11. Chng ta phi lu rng thanh ghi TCON l thanh ghi c th nh a ch theo bt c. Nn ta c th thay cc lnh nh SETB TR1 l CLR TR1 bng cc lnh tng ng nh SET TCON.6 v CLR TCON.6 (Bng 9.2). 9.3 Trng hp khi bt GATE = 1 trong TMOD. Trc khi kt thc chng ta cn bn thm v trng hp khi bt GATE = 1trong thanh ghi TMOD. Tt c nhng g chng ta va ni trong chng ny u gi thit GATE = 0. Khi GATE = 0 th b nh thi c khi ng bng cc lnh SETB TR0 v SETB TR1 i vi Timer0 v Timer1 tng ng. Vy iu g xy ra khi bt GATE = 1? Nh ta c th nhn thy trn hnh 9.8 v 9.9 th nu GATE = 1 th vic khi ng v dng b nh thi c thc hin t bn ngoi qua chn P2.3 v P3.3 i vi Timer0 v Timer1 tng ng. Mc d rng TRx c bt ln bng lnh SETB TRx th cng cho php ta khi ng v dng b nh thi t bn ngoi ti bt k thi im no thng qua cng tc chuyn mch n gin. Phng php iu khin phn cng dng v khi ng b nh thi nay c th c rt nhiu ng dng. V d, chng hn 8051 c dng trong mt sn phm pht bo ng mi giy dng b Timer0 theo nhiu vic khc. B Timer0 c bt ln bng phn mm qua lnh SETB TR0 v nm ngoi s kim sot ca ngi dng sn phm . Tuy nhin, khi ni mt cng tc chuyn mch ti chn P2.3 ta c th dng v khi ng b nh thi gian bng cch tt bo ng.
XTAL oscillator 12
C/T = 0
T0 Pin Pin 3.4 TR0 Gate
C/T =1
XTAL oscillator
12
C/T =1
Sender
Receiver
Sender
Receiver
D7
Hnh 10.1: S truyn d liu ni tip so vi s truyn song song. Thc t l trong truyn thng ni tip l mt ng d liu duy nht c dng thay cho mt ng d liu 8 bt ca truyn thng song song lm cho n khng ch r hn rt nhiu m n cn m ra kh nng hai my tnh cch xa nhau c truyn thng qua ng thoi. i vi truyn thng ni tip th lm c cc byte d liu phi c chuyn i thnh cc bt ni tip s dng thanh ghi giao dch vo - song song - ra ni tip. Sau n c th c truyn quan mt ng d liu n. iu ny cng c ngha l u thu cng phi c mt thanh ghi vo - ni tip - ra - song song nhn d liu ni tip v sau gi chng thnh tng byte mt. Tt nhin, nu d liu c truyn qua ng thoi th n phi c chuyn i t cc s 0 v 1 sang m thanh dng sng hnh sin. Vic chuyn i ny thc thi bi mt thit b c tn gi l Modem l ch vit tt ca Modulator/ demodulator (iu ch/ gii iu ch).
Bn n cng
B pht B thu
B thu B pht
Song cng
B pht B thu
B thu B pht
Hnh 10.2: Truyn d liu n cng, bn cng v song cng. 10.1.1 Truyn d liu bn cng v song cng. Trong truyn d liu nu d liu c th c va pht v va c thu th gi l truyn song cng. iu ny tng phn vi truyn n cng chng hn nh cc my in ch nhn d liu t my tnh. Truyn song cng c th c hai loi l bn song cng v song cng hon ton ph thuc vo truyn d liu c th xy ra ng thi khng? Nu d liu c truyn theo mt ng ti mt thi im th c gi l truyn bn song cng. Nu d liu c th i theo c hai ng cng mt lc th gi l song cng ton phn. Tt nhin, truyn song cng i hi hai ng d liu (ngoi ng m ca tn hiu), mt pht v mt thu d liu cng mt lc. 10.1.2 Truyn thng ni tip d b v ng khung d liu. D liu i vo u thu ca ng d liu trong truyn d liu ni tip ton l cc s 0 v 1, n tht l kh lm cho d liu y c ngha l nu bn pht v bn thu khng cng thng nht v mt tp cc lut, mt th tc, v cch d liu c ng gi, bao nhiu bt to nn mt k t v khi no d liu bt u v kt thc. 10.1.3 Cc bt bt u v dng. Truyn thng d liu ni tip d b c s dng rng ri cho cc php truyn hng k t, cn cc b truyn d liu theo khi th s dng phng pht ng b. Trong phng php d b, mi k t c b tr gia cc bt bt u (start) v bt dng
Stop bt d7
d0
Hnh 10.3: ng khung mt k t A ca m ASCII (41H) c tn hiu l 1 (cao) c coi nh l mt du (mark), cn khng c tn hiu tc l 0 (thp) th c coi l khong trng (space). Lu rng php truyn bt u vi start sau bt D0, bt thp nht LSB, sau cc bt cn li cho n bt D7, bt cao nht MSB v cui cng l bt dng stop bo kt thc k t A. Trong truyn thng ni tip d b th cc chp IC ngoi vi v cc modem c th c lp trnh cho d liu vi kch thc theo 7 bt hoc 8 bt. y l cha k cc bt dng stop c th l 1 hoc 2 bt. Trong khi cc h ASCII c hn (trc y) th cc k t l 7 bt th ngay nay do vic m rng cc k t ASCII nn d liu nhn chung l 8 bt. Trong cc h c hn do tc chm ca cc thit b thu th phi s dng hai bt dng m bo thi gian t chc truyn byte k tip. Tuy nhin, trong cc my tnh PC hin ti ch s dng 1 bt stop nh l chun. Gi s rng chng ta ang truyn mt tp vn bn cc k t ASCII s dng 1 bt stop th ta c tng cng l 10 bt cho mi k t gm: 8 bt cho k t ASCII chun v 1 bt start cng 1 bt stop. Do vy, i vi mi k t 8 bt th cn thm 2 b v chi l mt 25% tng ph. Trong mt s h thng nhm duy tr tnh ton vn ca d liu th ngi ta cn thm mt bt l (parity bt). iu ny c ngha l i vi mi k t (7 hoc 8 bt tu tng h) ta c thm mt bt ngoi cc bt start v stop. Bt chn l l bt chn hoc bt l. Nu l bt l l s bt ca d liu bao gm c bt chn l s l mt s l cc s 1. Tng t nh vy i vi trng hp bt chn th s bt ca d liu bao gm c bt chn - l s l mt s chn ca cc s 1. V d, k t A ca m ASCII dng nh phn l 0100 0001, c bt 0 l bt chn. Cc chp UART u cho php vic lp trnh bt chn - l v chn, l hoc khng phn bit chn l. 10.1.4 Tc truyn d liu. Tc truyn d liu trong truyn thng d liu ni tip c gi l bt trong giy bps (bt per second). Ngoi ra, cn c s dng mt thut ng rng ri na l tc baud. Tuy nhin, cc tc baud v bps l hon ton khng bng nhau. iu ny l do tc baud l thut ng ca modem v c nh ngha nh l s ln thay i ca tn hiu trong mt giy. Trong cc modem c nhng trng hp khi mt s thay i ca tn hiu th n truyn vi bt d liu. Nhng i vi mt dy dn th tc baud v bps l nh nhau nn trong cun sch ny chng ta c th dng thay i cc thut ng ny cho nhau.
14
25
Hnh 10.4: u ni DB - 25 ca RS232. V khng phi tt c mi chn u c s dng trong cp cu my tnh PC, nn IBM a ra phin bn ca chun vo/ra ni tip ch s dng c 9 chn gi l DB 9 nh trnh by bng 10:2 v hnh 10.5. Bng 10.1: Cc chn ca RS232, 25 chn (DB - 25).
S chn 1 2 3 4 5 6 7 8 9/10 M t t cch ly (Protective Cround) D liu c truyn TxD (TrNsmitted data) D liu c phn RxD (Received data) Yu cu gi RTS (Request To Send) Xo gi CIS (Clear To Send) D liu sn sng DSR (Data Set Ready) t ca tn hiu GND (Signal Cround) Tch tn hiu mng d liu DCD (Data Carrier Detect) Nhn kim tra d liu (Received for data testing)
10.1.7 Phn loi truyn thng d liu. Thut ng hin nay phn chia thit b truyn thng d liu thnh mt thit b u cui d liu DTE (Data Terminal Equipment) hoc thit b truyn thng d liu DCE (Data Communication Equipment). DTE ch yu l cc my tnh v cc thit b u cui gi v nhn d liu, cn DCE l thit b truyn thng chng hn nh cc modem chu trch nhim v truyn d liu. Lu rng tt c mi nh ngha v chc nng cc chn RS232 trong cc bng 10.1 v 10.2 u xut pht t gc ca DTE. Kt ni n gin nht gia mt PC v b vi iu khin yu cu ti thiu l nhng chn sau: TxD, RxD v t nh ch ra hnh 10.6. rng trn hnh ny th cc chn TxD v RxD c i cho nhau. Hnh 10.5: S u ni DB - 9 ca RS232.
1 5
DTE
TxD RxD TxD RxD
DTE
ground Hnh 10.6: Ni kt khng modem. 10.1.8 Kim tra cc tn hiu bt tay ca RS232. bo m truyn d liu nhanh v tin cy gia hai thit b th vic truyn d liu phi c phi hp tt. Chng hn nh trong trng hp ca my in, do mt thc t l trong truyn thng d liu ni tip thit b thu c th khng c ch cha d liu, do phi c cch bo cho bn pht dng gi d liu. Rt nhiu chn ca RS232 c dng cho cc tn hiu bt tay. Di y l m t v chng nh l mt tham kho v chng c th c b qua v chng khng c h tr bi chp UART ca 8051. 1. u d liu sn sng DTR: Khi thit b u cui (hoc mt cng COM ca PC) c bt th sau khi t kim tra n gi mt tn hiu DTR bo rng n sn sng cho truyn thng. Nu c mt ci g trc trc vi cng COM th tn hiu ny khng c kch hot. y l tn hiu tch cc mc thp v c th c dng bo cho modem bit rng my tnh ang hot ng v ang sn sng. y l chn u ra t DTC (cng COM ca PC) v chn u ra ca modem. 2. D liu sn sng QSR: Khi DCE (chng hn modem) c bt ln v chy xong chng trnh t kim tra th n i hi DSR bo rng c sn sng cho truyn thng. Do vy, n l u ra ca modem (DCE) v u vo ca PC (DTE). y l tn hiu tch cc mc thp. Nu v l do no m modem khng kch hot bo cho PC bit (hoc thit b u cui) rng n khng th nhn hoc gi d liu. 3. Yu cu gi RTS: Khi thit b DTE (chng hn mt PC) c mt byte d liu cn gi th n yu cu RTS bo cho modem bit rng n c mt byte cn phi gi i. RTS l mt u ra tch cc mc thp t DTE v mt u vo ti modem. 4. Tn hiu xo gi CTS: p li RTS th khi modem c cha d liu m n cn nhn th n gi mt tn hiu CTS ti DTE (PC) bo rng by gi n c th nhn d liu. Tn hiu u vo ny ti DTE dng khi ng vic truyn d liu. 5. Tch tn hiu mang d liu DCD: Modem yu cu tn hiu DCD bo cho DTE bit rng tch c mt tn hiu mang d liu hp l v rng kt ni gia n v modem khc c thit lp. Do vy, DCD l mt u ra ca modem v u vo ca PC (DTE). 6. Bo chung RI: Mt u ra t modem (DCE) v mt u vo ti my tnh PC (DTE) bo rng in thoi ang bo chung. N tt v bt ng b vi m thanh ang chung. Trong 6 tn hiu bt tay th tn hiu ny l t c dng nht do mt thc t l cc modem chu trch nhim v tr li in thoi. Tuy nhin, nu trong mt h thng cho m PC phi chu trch nhim tr li in thoi th tn hiu ny c th c dng.
2 3
Max232
2 5
10
4 2 DB - 9
TTL side
Rs232 side
Hnh 10.7: a) S bn trong ca MAX232 b) S ni ghp ca MAX232 vi 8051 theo moden khng. B MAX232 i hi 4 t in gi tr t 1 n 22mF. gi tr ph bin nht cho cc t ny l 22mF. 10.2.3 B iu khin MAX232. tit kim khng gian trn bng mch, nhiu nh thit k s dng chp MAX232 t hng Maxim. B iu khin MAX232 thc hin cng nhng cng vic nh MAX232 li khng cn n cc t in. Tuy nhin, chp MAX232 li t hn rt nhiu so vi MAX233 khng c s chn ging nhau (khng tng thch). Chng ta khng th ly mt chp MAX232 ra khi mt bng mch v thay vo RS233. Hy xem hnh 10.8 thy MAX233 khng cn n t.
Vcc 7 11 15 16 10 T1OUT R1IIN T2OUT R2IIN 9 8051
P3.1 11 TxD P3.0 RxD
13 14 12 17 2 3 1 20 T1IIN
2 3
Max232
5 4
2 5 2 DB - 9
5 4 18 19
T1IIN
10
TTL side
Rs232 side
Hnh 10.8: a) S bn trong ca MAX233. b) S ni ghp ca MAX233 vi 8051 theo modem khng. 10.3 Lp trnh truyn thng ni tip cho 8051.
V d 10.1: Vi tn s XTAL l 11.0592MHz. Hy tm gi tr TH1 cn thit c tc baud sau: a) 9600 b) 2400 c) 1200 Li gii: Vi tn s XTAL l 11.0592MHz th ta c tn s chu trnh my ca 8051 l 11.0592MHz : 12 = 921.6kHz v sau ly 921.6kHz/32 = 28.800Hz l tn s c cp bi UART ti b nh thi Timer1 thit lp tc . a) 28.800/3 = 9600 trong - 3 = FD c np vo TH1 b) 28.800/12 = 2400 trong - 12 = F4 c np vo TH1 c) 28.800/24 = 1200 trong - 24 = F8 c np vo TH1 Lu rng vic chia 1/12 ca tn s thch anh cho 32 l gi tr mc nh khi kch hot chn RESET ca 8051. Chng ta c th thay i gi tr ci t mc nh ny. iu ny s c gii thch cui chng.
28800Hz
XTAL oscillator
12
921.6kHz
32 by UART
10.3.1 Tc baud trong 8051. 8051 truyn v nhn d liu ni tip theo nhiu tc khc nhau. Tc truyn ca n c th lp trnh c. iu y thc hin nh s tr gip ca b nh thi Timer1. Trc khi ta i vo bn cch lm iu nh th no th ta s xt quan h gia tn s thch anh v tc baud trong 8051. Nh ta ni chng trc y th 8051 chia so thch anh cho 12 ly tn s chu trnh my. Trong trng hp XTAL = 11.0592MHz th tn s chu trnh l 921.6kHz (11.0592MHz : 12 = 921.6kHz). Mch in UART truyn thng ni tip ca 8051 li chia tn s chu trnh my cho 32 mt ln na trc khi n c dng bi b nh thi gian Timer1 to ra tc baud. Do vy, 921.6kHz : 32 = 28.800Hz. y l s ta s dng trong c phn ny tm gi tr ca Timer1 t tc baud. Mun Timer1 t tc baud th n phi c lp trnh v ch lm vic mode2, l ch thanh ghi 8 bt t ng np li. c tc baud tng thch vi PC ta phi
10.3.2 Thanh ghi SBUF. SBUF l thanh ghi 8 bt c dng ring cho truyn thng ni tip trong 8051. i vi mt byte d liu cn phi c truyn qua ng TxD th n phi c t trong thanh ghi SBUF. Tng t nh vy SBUF gi mt byte d liu khi n c nhn b ng RxD ca 8051. SBUF c th c truy cp bi mi thanh ghi bt k trong 8051. Xt mt v d di y thy SBUF c truy cp nh th no?
MOV MOV MOV SBUF, # D SBUF, A A, SBUF ; Np vo SBUF gi tr 44H m ACSII ca k t D. ; Sao thanh ghi A vo SBUF. ; Sao SBUF vo thanh ghi A.
Khi mt byte c ghi vo thanh ghi SBUF n c ng khung vi cc bt Start v Stop v ng truyn ni tip quan chn TxD. Tng t nh vy, khi cc bt c nhn ni tip t RxD th 8051 m khung n loi tr cc bt Start v Stop ly ra mt byte t d liu nhn c v t n vo thanh ghi SBUF. 10.3.3 Thanh ghi iu khin ni tip SCON. Thanh ghi SCON l thanh ghi 8 bt c dng lp trnh vic ng khung bt bt u Start, bt dng Stop v cc bt d liu cng vi vic khc. Di y l m t cc bt khc nhau ca SCON:
SM0 SM1 SM2 REN TB8 RB8 T1 R1
S xc nh ch lm vic cng ni tip S xc nh ch lm vic cng ni tip Dng cho truyn thng gia cc b vi x l (SM2 = 0) Bt/xo bng phn mm cho php/ khng cho thu Khng s dng rng ri Khng s dng rng ri C ngt truyn t bng phn cng khi bt u bt Stop ch 1. C ngt thu Xo bng phn mm.
Ch : Hnh 10.2: Thanh ghi iu khin cng ni tip SCON. 10.3.3.1 Cc bt SM0, SM1. y l cc bt D7 v D6 ca thanh ghi SCON. Chng c dng xc nh ch ng khung d liu bng cch xc nh s bt ca mt k t v cc bt Start v Stop. Cc t hp ca chng l:
Trong bn ch ta ch quan tm n ch 1, cc ch khc c gii thch Appendisk A3. Trong thanh ghi SCON khi ch 1 c chn th d liu c ng khung gm 8 bt d liu, 1 bt Start, 1 bt Stop tng thch vi cng COM ca IBM PC v cc PC tng thch khc. Quan trng hn l ch ni tip 1 cho php tc baud thay i v c thit lp bi Timer1 ca 8051. Trong ch ni tip 1 th mi k t gm c 10 bt c truyn trong c bt u l bt Start, sau l 8 bt d liu v cui cng l bt Stop. 10.3.3.2 Bt SM2. Bt SM2 l bt D5 ca thanh ghi SCON. Bt ny cho php kh nng a x l ca 8051 v n nm ngoi phm vi trnh by ca chng ny. i vi cc ng dng ca chng ta t SM2 = 0 v ta khng s dng 8051 trong mi trng a x l. 10.3.3.3 Bt REN. y l bt cho php thu (Receive Enable), bt D4 ca thanh ghi SCON. Bt REN cng c tham chiu nh l SCON.4 v SCON l thanh ghi c th nh a ch theo bt. Khi bt REN cao th n cho php 8051 thu d liu trn chn RxD ca n. V kt qu l nu ta mun 8051 va truyn v nhn d liu th bt REN phi c t ln 1. Khi t REN th b thu b cm. Vic t REN = 1 hay REN = 0 c th t c bng lnh SETB SCON.4 v CLR SCON.4 tng ng. Lu rng cc lnh ny s dng c im nh a ch theo bt ca thanh ghi SCON. Bt ny c th c dng khng ch mi vic nhn d liu ni tip v n l bt cc k quan trng trong thanh ghi SCON. 10.3.3.4 Bt TB8 v RB8. Bt TB8 l bt SCON.3 hay l bt D3 ca thanh ghi SCON. N c dng cho ch ni tip 2 v 3. Ta t TB8 v n khng c s dng trong cc ng dng ca mnh. Bt RB8 (bt thu 8) l bt D2 ca thanh ghi SCON. Trong ch ni tip 1 th bt ny nhn mt bn sao ca bt Stop khi mt d liu 8 bt c nhn. Bt ny cng nh bt TB8 rt him khi c s dng. Trong cc ng dng ca mnh ta t RB8 = 0 v n c s dng cho ch ni tip 2 v 3. 10.3.3.5 Cc bt TI v RI. Cc bt ngt truyn TI v ngt thu RI l cc bt D1 v D0 ca thanh ghi SCON. Cc bt ny l cc k quan trng ca thanh ghi SCON. Khi 8051 kt thc truyn mt k t 8 bt th n bt TI bo rng n sn sng truyn mt byte khc. Bt TI c bt ln trc bt Stop. Cn khi 8051 nhn c d liu ni tip qua chn RxD v n tch cc bt Start v Stop ly ra 8 bt d liu t vo SBUF, sau khi hon tt n bt c RI bo rng n nhn xong mt byte v cn phi ly i ko n b mt c RI c bt khi ang tch bt Stop. Trong cc v d di y s ni v vai tr ca cc bt TI v RI. 10.3.4 Lp trnh 8051 truyn d liu ni tip. Khi lp trnh 8051 truyn cc byte k t ni tip th cn phi thc hin cc bc sau y: 1. Np thanh ghi TMOD gi tr 204 bo rng s dng Timer1 ch 2 thit lp ch baud.
AGAIN: HERE:
V d 10.3: Hy vit chng trnh truyn ch YES ni tip lin tc vi tc 9600 baud (8 bt d liu, 1 bt Stop). Li gii:
MOV TMOD, #20H MOV TH1, # - 3 MOV SCON, #50H SETB TR1 AGAIN: MOV A, # "Y" ACALL TRANS MOV A, # "E" ACALL TRANS MOV A, # "S" ACALL TRANS SJMP AGAIN ; Chng trnh con truyn d liu ni tip. TRANS: MOV SBUF, A HERE: JNB TI, HERE CLR TI RET ; Chn b Timer1, ch 2 ; Chn tc 9600 baud ; Truyn 8 bt d liu, 1 bt Stop cho php thu ; Khi ng Timer1 ; Truyn k t Y ; Truyn k t E ; Truyn k t S ; Tip tc ; Np SBUF ; Ch cho n khi truyn bt cui cng ; Ch sn cho mt byte k tip
10.3.4.1 Tm quan trng ca c TI. hiu tm quan trng ca c ngt TI ta hy xt trnh t cc bc di y m 8051 phi thc hin khi truyn mt k t quan ng TxD: 1. Byte k t cn phi truyn c ghi vo SBUF. 2. Truyn bt Start 3. Truyn k t 8 bt ln lt tng bt mt. 4. Bt Stop c truyn xong, trong qu trnh truyn bt Stop th c TI c bt (TI = 1) bi 8051 bo sn sng truyn k t k tip.
V d 10.5: Gi s cng ni tip ca 8051 c ni vo cng COM ca my tnh IBM CP v m ang s chng trnh Termina. Exe gi v nhn d liu ni tip. Cng P1 v P2 ca 8051 c n ti cc LED v cc cng tc chuyn mch tng ng. Hy vit mt chng trrnh cho 8051. a) Gi thng bo We Are Ready (chng ti sn sng) ti my tnh PC.
H - 1:
B - 1:
; SEND: H- 2: ; RECV:
; RECV:
; MYDATA:
SETB TR1 MOV DPTR, #MYDATA CLR A MOVC A, A + DPTR ; Ly k t JZ DPTR ; Nu k t cui cng mun gi ra ACALL SEND ; Nu cha th gi chng trnh con SEND INC DPTR ; Chy tip SJMP H - 1 ; Quay li vng lp MOV A, P2 ; c d liu trn cng P2 ACALL RECV ; Truyn n ni tip ACALL RECV ; Nhn d liu ni tip MOV F1, A ; Hin th n ra cc n LED SJMP B - 1 ; li vng lp v hn Truyn d liu ni tip ACC c d liu MOV SBUF, A ; Np d liu JNB TI, H - 2 ; li vng lp v hn CLR TI ; Truyn d liu ni tip RET ; Nhn d liu Truyn d liu ni tip ACC c d liu JNB RI, RECV ; Np d liu MOV A, SBUF ; li y cho n khi gi bt cui cng CLR RI ; Sn sng cho k t mi RET ; Tr v mi gi Nhn d liu ni tip trong ACC JNB RI, RECV ; i y nhn k t MOV A, SBUF ; Lu n vo trong ACC CLR RI ; Sn sng nhn k t m tip theo RET ; Tr v ni gi Ngn xp cha thng bo DB Chng ti sn sng 0 END 8051 To PC COM port P1 TxD RxD P2 SW LED
10.3.5.1 Tm quan trng ca c RT. Khi nhn cc bt quan chn RxD ca n th 8051 phi i quan cc bc sau: 1. N nhn bt Start bo rng bt sau n l bt d liu u tin cn phi nhn.
Phng n mt l khng thc thi trong nhiu trng hp v tn s thch anh ca h thng l c nh. Quan trng hn l n khng kh thi v tn s thch anh mi khng tng thch vi tc baud ca cc cng COM ni tip ca IBM PC. Do vy, ta s tp trung thm d phng n hai, c mt cch nhn i tn s baud bng phn mm trong 8051 vi tn s thch anh khng i. iu ny c thc hin nh thanh ghi PCON, y l thanh ghi 8 bt. Trong 8 bt ny th c mt s bt khng c dng iu khin cng sut ca 8051. Bt dnh cho truyn thng l D7, bt SMOD (ch ni tip - serial mode). Khi 8051 c bt ngun th bt SMOD ca thanh ghi PCON mc thp 0. Chng ta c th t n ln 1 bng phn mm v do vy nhn i c tc baud. Th t cc lnh c s dng thit lp bt D7 ca PCON ln cao nh sau (thanh ghi PCON l th nh a ch theo bt).
MOV SETB MOV A, PCON ACC.7 PCON, A ; t bn sao ca PCON vo ACC ; t D7 ca ACC ln 1. ; By gi SMOD = 1 m khng thay i bt k bt no khc.
bit tc baud c tng ln gp i nh th no bng phng php ny ta xt vai tr ca bt SMOD trong PCON khi n l 0 v 1. a) Khi SMOD = 0. Khi SMOD = 0 th 8051 chia 1/12 tn s thch anh cho 32 v s dng n cho b Timer1 thit lp tc baud. Trong trng hp XTAL = 11.0592MHz th ta c: Tn s chu trnh my = 0.
11.0592MHz 921.6kHz = 921.6 kHz v = 28.800Hz v SMOD = 12 32
V d 10.6: gi s tn s XTAL = 11.0592MHz cho chng trnh di y, hy pht biu a) chng trnh ny lm g? b) hy tnh ton tn s c Timer1 s dng t tc baud? v c) hy tm tc baud truyn d liu.
MOV SETB MOV MOV MOV MOV SETB MOV CLR MOV JNB SJMP A, PCON ACC.7 PCON, A TMOD, #20H TH1, - 3 SCON, #50H TR1 A, #B TI SBUF, A TI, H-1 A-1 ; Sao ni dung thanh ghi PCON vo thanh ghi ACC ; t D7 = 0 ; t SMOD = 1 tng gp i tn s baud vi tn s XTAL c nh ; ; Chn b Timer1, ch 2, t ng np li ; Chn tc baud 19200 (57600/3=19200) v SMOD = 1 ; ; ng khung d liu gm 8 bt d liu, 1 Stop v cho php RI. ; Khi ng Timer1 ; Truyn k t B ; Khng nh TI = 0 ; Truyn n ; Ch y cho n khi bt cui c gi i ; Tip tc gi B
A-1: H-1:
Li gii: a) Chng trnh ny truyn lin tc m ASCII ca ch B ( dng nh phn l 0100 0010) b) Vi tn s XTAL = 11.0592MHz v SMOD = 1 trong chng trnh trn ta c: 11.0592MHz/12 = 921.6kHz l tn s chu trnh my 921.6kHz/16 = 57.6kHz l tn s c Timer1 s dng t tc baud c) 57.6kHz/3 = 19.200 l tc cn tm V d 10.7: Tm gi tr TH1 ( dng thp phn v hex) t tc baud cho cc trng hp sau.
V d 10.8: Hy tm tc baud nu TH1 = -2, SMOD = 1 v tn s XTAL = 11.0592MHz. Tc ny c c h tr bi cc my tnh IBM PC v tng thch khng? Li gii: Vi tn s XTAL = 11.0592MHz v SMOD = 1 ta c tn s cp cho Timer1 l 57.6kHz. Tc baud l 57.600kHz/2 = 28.800. Tc ny khng c h tr bi cc my tnh IBM PC v tng thch. Tuy nhin, PC c th c lp trnh truyn d liu vi tc nh vy. Phn mm ca nhiu modem c th lm cho iu ny v Hyperterminal ca Windows 95 cng c th h tr tc ny v cc tc khc na. 10.3.7 Truyn d liuda trn cc ngt. Ta phi thy rng tht lng ph cc b vi iu khin phi bt ln xung cc c TI v RI. Do vy, tng hiu sut ca 8051 ta c th lp trnh cc cng truyn thng ni tip ca n bng cc ngt. y chnh l ni dung chnh s bn lun chng 11 di y.
11.1.5 Cho php v cm ngt. Khi bt li ngun th tt c mi ngt u b cm (b che) c ngha l khng c ngt no s c b vi iu khin p ng nu chng c kch hot. Cc ngt phi c kch hot bng phn mm b vi iu khin p ng chng. C mt thanh ghi c gi l cho php ngt IE (Interrupt Enable) chu trch nhim v vic cho php (khng che) v cm (che) cc ngt. Hnh 11.2 trnh by thanh ghi IE, lu rng IE l thanh ghi c th nh a ch theo bt. T hnh 11.2 ta thy rng D7 ca thanh ghi IE c gi l bt cho php tt c cc ngt EA (Euable All). Bt ny phi c thit lp ln 1 phn cn li ca thanh ghi hot ng c. Bt D6 cha c s dng. Bt D54 c dnh cho 8051, cn bt D4 dng cho ngt ni tip v.v 11.1.6 Cc bc khi cho php ngt. cho php mt ngt ta phi thc hin cc bc sau: 1. Bt D7 ca thanh ghi IE l EA phi c bt ln cao cho php cc bt cn li ca thanh ghi nhn c hiu ng. 2. Nu EA = 1 th tt c mi ngt u c php v s c p ng nu cc bt tng ng ca chng trong IE c mc cao. Nu EA = 0 th khng c ngt no s c p ng cho d bt tng ng ca n trong IE c gi tr cao. hiu im quan trong ny hy xt v d 11.1. Hnh 11.2: Thanh ghi cho php ngt IE.
D7 D0
EA
EA
--
ET2
ES
ET1
EX1
ET0
EX0
IE.7 Nu EA = 0 th mi ngt b cm Nu EA = 1 th mi ngun ngt c cho php hoc b cm bng cc bt hoc xo bt cho php ca n. -IE.6 D phng cho tng lai ET2 IE.5 Cho php hoc cm ngt trn hoc thu ca Timer2 (8051) ES IE.4 Cho php hoc cm ngt cng ni tip ET1 IE.3 Cho php hoc cm ngt trn ca Timer1 EX1 IE.2 Cho php hoc cm ngt ngoi 1 ET0 IE.1 Cho php hoc cm ngt trn ca Timer0 EX0 IE.0 Cho php hoc cm ngt ngoi 0 * Ngi dng khng phi ghi 1 vo bt d phng ny. Bt ny c th dng cho cc b vi iu khin nhanh vi c tnh mi V d 11.1:
V IE l thanh ghi c th nh a ch theo bt nn ta c th s dng cc lnh sau y truy cp n cc bt ring r ca thanh ghi:
SETB SETB SETB SETB IE.7 IE.4 IE.1 IE.2 ; EA = 1, Cho php tt c mi ngt ; Cho php ngt ni tip ; Cho php ngt Timer1 ; Cho php ngt phn cng ngoi 1
(tt c nhng lnh ny tng ng vi lnh MOV IE, #10010110B trn y).
b) CLR IE.1 c) CLR IE.7 ; Xo (che) ngt Timer0 ; Cm tt c mi ngt.
11.2 Lp trnh cc ngt b nh thi. Trong chng 9 ta ni cch s dng cc b nh thi Timer0 v Timer1 bng phng php thm d. Trong phn ny ta s s dng cc ngt lp trnh cho cc b nh thi ca 8051. 11.2.1 C quay v 0 ca b nh thi v ngt. Trong chng 9 chng ta ni rng c b nh thi TF c t ln cao khi b nh thi t gi tr cc i v quay v 0 (Roll - over). Trong chng trnh ny chng ta cng ch ra cch hin th c TF bng lnh JNB TF, ch. Khi thm d c TF th ta phi i cho n khi c TF c bt ln. Vn vi phng php ny l b vi iu khin b tri buc khi c TF c bt ln v khng th lm c bt k vic g khc. S dng cc ngt gii quyt c vn ny v trnh c s tri buc ca b vi iu khin. Nu b ngt nh thi trong thanh ghi IE c php th mi khi n quay tr v 0 c TF c bt ln v b vi iu khin b ngt ti bt k vic g n ang thc hin v nhy ti bng vc t ngt phc v ISR. Bng cch ny th b vi iu khin c th lm nhng cng vic khc cho n khi no n c thng bo rng b nh thi quay v 0. Xem hnh 11.3 v v d 11.2.
TF0 1 Jumps to Timer 0 Interruptor 000BH TF1 1 Jumps to Timer 1 Interruptor 001BH
Hnh 11.3: Ngt b nh thi TF0 v TF1. Hy nhng im chng trnh di y ca chng trnh trong v d 11.2. 1. Chng ta phi trnh s dng khng gian b nh dnh cho bng vc t ngt. Do vy, ta t tt c m khi to ti a ch 30H ca b nh. Lnh LJMP l lnh u
Trong v d 11.2 trnh phc v ngt ISR ngn nn n c th t va vo khng gian a ch dnh cho ngt Timer0 trong bng vc t ngt. Tt nhin khng phi lc no cng lm c nh vy. Xt v d 11.3 di y. V d 11.3: Hy vit li chng trnh v d 11.2 to sng vung vi mc cao ko di 1085ms v mc thp di 15ms vi gi thit tn s XTAL = 11.0592MHz. Hy s dng b nh thi Timer1. Li gii:
Lu rng phn xung mc thp c to ra bi 14 chu k mc MC v mi MC = 1.085ms v 14 1.085ms = 15.19ms. V d 11.4: Vit mt chng trnh to ra mt sng vung tn s 50Hz trn chn P1.2. V d ny tng t v d 9.12 ngoi tr ngt Timer0, gi s XTAL = 11.0592MHz. Li gii:
ORG 0 LJMP MAIN ORG 000BH CPL P1.2 MOV TL0, # 00 MOV TH0, # 0DCH RETI ORG 30H ; ------------ main program for initialization MAIN: MOV TMOD, # 00000001B ; Chng trnh con phc v ngt cho Timer0
; Chn Timer0 ch 1
HERE: SJMP
P1.2
11.3 Lp trnh cc ngt phn cng bn ngoi. B vi iu khin 8051 c hai ngt phn cng bn ngoi l chn 12 (P3.2) v chn 13 (P3.3) dng cho ngt INT0 v INT1. Khi kch hot nhng chn ny th 8051 b ngt ti bt k cng vic no m n ang thc hin v n nhy n bng vc t ngt thc hin trnh phc v ngt.
Level - tringgered INTO (Pin 3.2) 0 1 Edge - triggered ITO IE0 (TCON.1) 0003
Level - tringgered INTO (Pin 3.3) 0 1 Edge - triggered IT1 IE0 (TCON.3) 0013
11.3.1 Cc ngt ngoi INT0 v INT1. Ch c hai ngt phn cng ngoi trong 8051 l INT0 v INT1. Chng c b tr trn chn P3.2 v P3.3 v a ch ca chng trong bng vc t ngt l 0003H v 0013H. Nh ni mc 11.1 th chng c ghp v b cm bng vic s dng thanh ghi IE. Vy chng c kch hot nh th no? C hai mc kch hot cho cc ngt phn cng ngoi: Ngt theo mc v ngt theo sn. Di y l m t hot ng ca mi loi. 11.3.2 Ngt theo mc. ch ngt theo mc th cc chn INT0 v INT1 bnh thng mc cao (ging nh tt c cc chn ca cng I/O) v nu mt tn hiu mc thp c cp ti chng th n ghi nhn ngt. Sau b vi iu khin dng tt c mi cng vic n
n cng tc xung s lm cho n LED sng. Nu n c gi trng thi c kch hot th n LED sng lin tc.
Vcc 8051 P1.3 INTI to LED
Trong chng trnh ny b vi iu khin quay vng lin tc trong vng lp HERE. Mi khi cng tc trn chn P3.3 (INT1) c kch hot th b vi iu khin thot khi vng lp v nhy n bng vc t ngt ti a ch 0013H. Trnh ISR cho INT1 bt n LED ln gi n mt lc v tt n trc khi tr v. Nu trong lc n thc hin lnh quay tr v RET1 m chn INT1 vn cn mc thp th b vi iu khin khi to li ngt. Do vy, gii quyt vn ny th chn INT1 phi c a ln cao ti thi im lnh RET1 c thc hin. 11.3.3 Trch mu ngt theo mc.
4 1.085ms Ghi ch: Khi bt li ngun (RESET) th c hai chn INT0 v INT1 u mc thp to cc ngt ngoi theo mc. Hnh 11.5: Thi gian ti thiu ca ngt theo mc thp (XTAL = 11.0592MHz) 11.3.4 Cc ngt theo sn. Nh ni trc y trong qu trnh bt li ngun th 8051 lm cc chn INT0 v INT1 l cc ngt theo mc thp. bin cc chn ny tr thnh cc ngt theo sn th chng ta phi vit chng trnh cho cc bt ca thanh ghi TCON. Thanh thi TCON gi cc bt c IT0 v IT1 xc nh ch ngt theo sn hay ngt theo mc ca cc ngt phn cng IT0 v IT1 l cc bt D0 v D2 ca thanh ghi TCON tng ng. Chng c th c biu din nh TCON.0 v TCON.2 v thanh ghi TCON c th nh a ch theo bt. Khi bt li ngun th TCON.0 (IT0) v TCON.2 (IT1) u mc thp (0) ngha l cc ngt phn cng ngoi ca cc chn INT0 v INT1 l ngt theo mc thp. Bng vic chuyn cc bt TCON.0 v TCON.2 ln cao qua cc lnh SETB TCON.0 v SETB TCON.2 th cc ngt phn cng ngoi INT0 v INT1 tr thnh cc ngt theo sn. V d, lnh SETB TCON.2 lm cho INT1 m c gi l ngt theo sn trong khi mt tn hiu chuyn t cao xung thp c cp n chn P3.3 th trng hp ny b vi iu khin s b ngt v b cng bc nhy n bng vc t ngt ti a ch 0013H thc hin trnh phc v ngt. Tuy nhin l vi gii thit rng bt ngt c cho php trong thanh ghi IE.
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Hnh 11.6: Thanh ghi TCON. Bt TF1 hay TCON.7 l c trn ca b Timer1. N c lp bi phn cng khi b m/ b nh thi 1 trn, n c xo bi phn cng khi b x l ch n trnh phc v ngt. Bt TR1 hay TCON.6 l bt iu khin hot ng ca Timer1. N c thit lp v xo bi phn mm bt/ tt Timer1. Bt TF0 hay TCON.5 tng t nh TF1 dnh cho Timer0. Bt TR0 hay TCON.4 tng t nh TR1 dnh cho Timer0. Bt IE1 hay TCON.3 c ngt ngoi 1 theo sn. N c thit lp bi CPU khi sn ngt ngoi (chuyn t cao xung thp) c pht hin. N c xa bi CPU khi ngt c x l. Lu : C ny khng cht nhng ngt theo mc thp. Bt IT1 hay TCON.2 l bt iu khin kiu ngt. N c thit lp v xo bi phn mm xc nh kiu ngt ngoi theo sn xung hay mc thp. Bt IE0 hay TCON.1 tng t nh IE1 dnh cho ngt ngoi 0. Bt IT0 hay TCON.0 tng t nh bt IT1 dnh cho ngt ngoi 0. Xt v d 11.6, ch rng s khc nhau duy nht gia v d ny v v d 11.5 l trong hng u tin ca MAIN khi lnh SETB TCON.2 chuyn ngt INT1 v kiu ngt theo sn. Khi sn xung ca tn hiu c cp n chn INT1 th n LED s bt ln mt lc. n LED c thi gian sng ph thuc vo tr bn trong ISR ca INT1. bt li n LED th phi c mt sn xung xung khc c cp n chn P3.3. iu ny ngc vi v d 11.5. Trong v d 11.5 do bn cht ngt theo mc ca ngt th n LED cn sng chng no tn hiu chn INT1 vn cn mc thp. Nhng trong v d ny bt li n LED th xung chn INT1 phi c a ln cao ri sau b h xung thp to ra mt sn xung lm kch hot ngt. V d 11.6: Gi thit chn P3.3 (INT1) c ni vi mt my to xung, hy vit mt chng trnh trong sn xung ca xung s gi mt tn hiu cao n chn P1.3 ang c ni ti n LED (hoc mt ci bo). Hay ni cch khc, n LED c bt v tt cng tn s vi cc xung c cp ti chn INT1. y l phin bn ngt theo sn xung ca v d 11.5 trnh by trn. Li gii:
ORG 0000H LJMP MAIN ; - - Trnh phc v ngt ISR dnh cho ngt INT1 bt n LED ORG 0013H ; Nhy n a ch ca trnh phc v ngt INT1 SETB P1.3 ; Bt n LED (hoc ci) MOV R3, #225 BACK: DJNZ R3, HERE ; gi n LED (hoc ci) mt lc CLR P1.3 ; Tt n LED (hoc ci) RETI ; Quay tr v t ngt ; - - Bt u chng trnh chnh ORG 30H SETB TCON.2 ; Chuyn ngt INT1 v kiu ngt theo sn xung
11.3.5 Trnh mu ngt theo sn. Trc khi kt thc phn ny ta cn tr li cu hi vy th ngt theo sn c trch mu thng xuyn nh th no? Trong cc ngt theo sn, ngun ngoi phi gi mc cao ti thiu l mt chu trnh my na m bo b vi iu khin nhn thy c s chuyn dch t cao xung thp ca sn xung.
1MC 1.085ms 1MC
1.085ms
Thi hn xung ti thiu pht hin ra cc ngt theo sn xung vi tn s XTAL = 11.0592MHz Sn xung ca xung c cht bi 8051 v c gia bi thanh ghi TCON. Cc bt TCON.1 v TCON.3 gi cc sn c cht ca chn INT0 v INT1 tng ng. TCON.1 v TCON.3 cng cn c gi l cc bt IE0 v IE1 nh ch ra trn hnh 11.6. Chng hot ng nh cc c ngt ang c phc v (Interrupt-inserver). Khi mt c ngt ang c phc v bt ln th n bo cho th gii thc bn ngoi rng ngt hin nay ang c x l v trn chn INTn ny s khng c ngt no c p ng chng no ngt ny cha c phc v xong. y ging nh tn hiu bo bn my in thoi. Cn phi nhn mnh ht im di y khi quan tm n cc bt IT0 v IT1 ca thanh ghi TCON. 1. Khi cc trnh phc v ngt ISR kt thc (ngha l trong thanh ghi thc hin lnh RETI). Cc bt ny (TCON.1 v TCON.3) c xo bo rng ngt c hon tt v 8051 sn sng p ng ngt khc trn chn . ngt khc c nhn v th tn hiu trn chn phi tr li mc cao v sau nhy xung thp c pht hin nh mt ngt theo sn. 2. Trong thi gian trnh phc v ngt ang c thc hin th chn INTn b lm ng khng quan tm n n c bao nhiu ln chuyn dch t cao xung thp. Trong thc t n l mt trong cc chc nng ca lnh RETI xo bt tng ng trong thanh ghi TCON (bt TCON.1 v TCON.3). N bo cho ta rng trnh phc v ngt xp kt thc. V l do ny m cc bt TCON.1 v TCON.3 c gi l cc c bo ngt ang c phc v c ny s ln cao khi mt sn xung c pht hin trn chn INT v dng mc cao trong ton b qu trnh thc hin ISR. N ch b xo bi lnh RETI l lnh cui cng ca ISR. Do vy, s khng bo gi cn n cc lnh xo bt ny nh CLR TCON.1 hay CLR TCON.3 trc lnh RETI trong trnh phc v ngt i vi cc ngt cng INT0 v INT1. iu ny khng ng vi trng hp ca ngt ni tip. V d 11.7: S khc nhau gia cc lnh RET v RETI l g? Gii thch ti sao ta khng th dng lnh RET thay cho lnh RETI trong trnh phc v ngt. Li gii:
TI RI
0023H
Hnh 11.7: Ngt truyn thng c th do hai c TI v RI gi. 11.4.2 S dng cng COM ni tip trong 8051. Trong phn ln cc ng dng, ngt ni tip ch yu c s dng nhn d liu v khng bao gi c s dng truyn d liu ni tip. iu ny ging nh vic bo chung nhn in thoi, cn nu ta mun gi in thoi th c nhiu cch khc ngt ta ch khng cn n chung. Tuy nhin, trong khi nhn in thoi ta phi tr li ngay khng bit ta ang lm g nu khng thuc gi s (mt) i qua. Tng t nh vy, ta s dng cc ngt ni tip khi nhn d liu i n sao chp cho n khng b mt: Hy xt v d 11.9 di y. V d 11.8:
MAIN:
BACK:
; Nhy n trnh phc v ngt truyn thng ni tip ; Ly cng P1 lm cng u vo ; Chn Timer1, ch 2 t np li ; Chn tc baud = 9600 ; Khung d liu: 8 bt d liu, 1 stop cho php REN ; Cho php ngt ni tip ; Khi ng Timer1 ; c d liu t cng P1 ; Ly mt bn sao ti SBUF ; Gi n n cng P2 ; li trong vng lp
; ; --------------------------Trnh phc v ngt cng ni tip ORG 100H SERIAL: JB TI,TRANS ; Nhy n c TI cao MOV A, SBUF ; Nu khng tip tc nhn d liu CLR RI ; Xo c RI v CPU khng lm iu ny RETI ; Tr v t trnh phc v ngt TRANS: CLR TI ; Xo c TI v CPU khng lm iu ny RETI ; Tr v t ISR END
Trong vn trn thy ch n vai tr ca c TI v RI. Thi im mt byte c ghi vo SBUF th n c ng khung v truyn i ni tip. Kt qu l khi bt cui cng (bt stop) c truyn i th c TI bt ln cao v n gy ra ngt ni tip c gi khi bt tng ng ca n trong thanh ghi IE c a ln cao. Trong trnh phc v ngt ni tip, ta phi kim tra c c TI v c RI v c hai u c th gi ngt hay ni cch khc l ch c mt ngt cho c truyn v nhn. V d 11.9: Hy vit chng trnh trong 8051 nhn d liu t cng P1 v gi lin tc n cng P2 trong khi d liu i vo t cng ni tip COM c gi n cng P0. Gi thit tn s XTAL l 11.0592MHz v tc baud 9600. Li gii:
ORG LJMP ORG LJMP ORG MOV MOV MOV 0 MAIN 23H SERIAL 03H P1, # FFH TMOD, # 20H TH1, # 0FDH ; Ly cng P1 l cng u vo ; Chn Timer v ch hai t np li ;Khung d liu: 8 bt d liu, 1 stop, cho php REN
MAIN:
11.4.3 Xo c RI v TI trc lnh RETI. rng lnh cui cng trc khi tr v t ISR l RETI l lnh xo cc c RI v TI. y l iu cn thit bi v l ngt duy nht dnh cho nhn v truyn 8051 khng bit c ngun gy ra ngt l ngun no, do vy trnh phc v ngt phi c xo cc c ny cho php cc ngt sau c p ng sau khi kt thc ngt. iu ny tng phn vi ngt ngoi v ngt b nh thi u c 8051 xo cc c. Cc lnh xo cc c ngt bng phn mm qua cc lnh CLR TI v CLR RI. Hy xt v d 11.10 di y v n cc lnh xo c ngt trc lnh RETI. V d 11.10: Hy vit mt chng trnh s dng cc ngt thc hin cc cng vic sau: a) Nhn d liu ni tip v gi n n cng P0. b) Ly cng P1 c v truyn ni tip v sao n cng P2. c) S dng Timer0 to sng vung tn s 5kHz trn chn P0.1 git thit tn s XTAL = 11.0592MHz v tc baud 4800. Li gii:
ORG LJMP ORG CPL RETI ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB SETB MOV MOV MOV 0 MAIN 000BH P0.1 ; Trnh phc v ngt dnh cho Timer0 : To xung chn P0.1 ; Tr v t ISR ; Nhy n a ch ngt truyn ni tip ; Ly cng P1 lm cng u vo ; Chn Timer0 v Timer1 ch 2 t np li ; Chn Timer0 v Timer1 ch 2 t np li ; Chn tc baud 4800 ; Khung d liu: 8 bt d liu, 1 stop, cho php REN ; To tn s 5kHz ; Cho php ngt ni tip ; Khi ng Timer1 ; Khi ng Timer0 ; c d liu t cng P1 ; Ly mt ln bn sao d liu ; Ghi n vo cng P2
MAIN :
BACK:
23H SERIAL 30H P1, # 0FFH TMOD, # 22H TH1, # 0F6H SCON, # 50H TH0, # - 92 IE, # 10010010B TR1 TR0 A, P1 SBUF, A P2, A
Trc khi kt thc phn ny hy n danh sch tt c mi c ngt c cho trong bng 11.2. Trong khi thanh thi TCON gi 4 c ngt cn hai c TI v RI trong thanh ghi SCON ca 8051. Bng 11.2: Cc bt c ngt. Ngt Ngt ngoi 0 Ngt ngoi 1 Ngt Timer0 Ngt Timer1 Ngt cng ni tip Ngt Timer2 Ngt Timer2 C IE0 IE1 TF0 TF1 T1 TF2 EXF2 Bt ca thanh ghi SFR TCON.1 TCON.3 TCON.5 TCON.7 SCON.1 T2CON.7 (TA89C52) T2CON.6 (TA89C52)
11.5 Cc mc u tin ngt trong 8051. 11.5.1 Cc mc u tin trong qu trnh bt li ngun. Khi 8051 c cp ngun th cc mc u tin ngt c gn theo bng 11.3. T bng ny ta thy v d nu cc ngt phn cng ngoi 0 v 1 c kch hot cng mt lc th ngt ngoi 0 s c p ng trc. Ch sau khi ngt INT0 c phc v xong th INT1 mi c phc v v INT1 c mc u tin thp hn. Trong thc t s mc u tin ngt trong bng khng c ngha g c m mt quy trnh thm d trong 8051 thm d cc ngt theo trnh t cho trong bng 11.3 v p ng chng mt cch ph hp. Bng 11.3: Mc u tin cc ngt trong khi cp li ngun. Mc u tin cao xung thp Ngt ngoi 0 Ngt b nh thi 0 Ngt ngoi 1 Ngt b nh thi 1 Ngt truyn thng ni tip V d 11.1: INT0 TF0 INT1 TF1 (RI + TI)
--
--
PT2
PS
PT1
PX1
PT0
PX0
Hnh 11.8: Thanh ghi mc u tin ngt IP, bt u tin = 1 l mc u tin cao, bt u tin = 0 l mc u tin thp. - Bt D7 v D6 hay IP.7 v IP.6 - cha dng. - Bt D5 hay IP.5 l bt u tin ngt Timer2 (dng cho 8052) - Bt D4 hay IP.4 l bt u tin ngt cng ni tip - Bt D3 hay IP.3 l bt u tin ngt Timer1 - Bt D2 hay IP.2 l mc u tin ngt ngoi 1 - Bt D1 hay IP.1 l mc u tin ngt Timer 0 - Bt D0 hay IP.0 l mc u tin ngt ngoi 0 Ngi dng khng c vit phn mm ghi cc s 1 vo cc bt cha dng v chng dnh cho cc ng dng tng li. 11.5.2 Thit lp mc u tin ngt vi thanh ghi IP. Chng ta c th thay i trnh t trong bng 11.3 bng cch gn mc u tin cao hn cho bt k ngt no. iu ny c thc hin bng cch lp trnh mt thanh ghi gi l thanh ghi mc u tin ngt IP (Interrupt Priority). Trn hnh 11.8 l cc bt ca thanh ghi ny, khi bt li ngun thanh thi 1P cha hon ton cc s 0 to ra trnh t u tin ngt theo bng 11.3. mt ngt no mc u tin cao hn ta thc hin a bt tng ng ln cao. Hy xem v d 11.12. Mt im khc na cn c lm sng t l mc u tin ngt khi hai hoc nhiu bt ngt trong thanh ghi IP c t ln cao. Trong trng hp ny th trong khi cc ngt ny c mc u tin cao hn cc ngt khc chng s c phc v theo trnh t cho trong bng 11.3. Xem v d 11.13. V d 11.12: a) Hy lp trnh thanh ghi IP gn mc u tin cao nht cho ngt INT1 (ngt ngoi 1) sau . b) Hy phn tch iu g xy ra khi INT0, INT1 v TF0 c kch hot cng lc. Gi thit tt c cc ngt u l cc ngt theo sn. Li gii: a) MOV IP, #0000 0100B ; t bt IP.2 = 1 gn INT1 mc u tin cao nht. Lnh SETB IP.2 cng tc ng tng t bi v IP l thanh ghi c th nh a ch theo bt. b) Lnh trong bc a) gn mc u tin cao hn INT1 so vi cc ngt khc, do vy khi INT0, INT1 v TF0 c kch hot cng lc th trc ht INT1 c phc v
Bng 12.2: Cc m lnh LCD. M (Hex) 1 2 4 6 5 7 8 A C E F 10 14 18 Lnh n thanh ghi ca LCD Xo mn hnh hin th Tr v u dng Gi con tr (dch con tr sang tri) Tng con tr (dch con tr sang phi) Dch hin th sang phi Dch hin th sang tri Tt con tr, tt hin th Tt hin th, bt con tr Bt hin th, tt con tr Bt hin th, nhp nhy con tr Tt con tr, nhp nhy con tr Dch v tr con tr sang tri Dch v tr con tr sang phi Dch ton b hin th sang tri
Hnh 12.1: Cc v tr chn ca cc LCD khc nhau ca Optrex. 12.1.3 Gi cc lnh v d liu n LCD vi mt tr. gi mt lnh bt k t bng 12.2 n LCD ta phi a chn RS v 0. i vi d liu th bt RS = 1 sau gi mt sn xung cao xung thp n chn E cho php cht d liu trong LCD. iu ny c ch ra trong on m chng trnh di y (xem hnh 12.2).
; gi thi gian tr trc khi gi d liu/ lnh k tip. ; chn P1.0 n P1.7 c ni ti chn d d liu D0 - D7 ca LCD. ; Chn P2.0 c ni ti chn RS ca LCD. ; Chn P2.1 c ni ti chn R/W ca LCD. ; Chn P2.2 c ni n chn E ca LCD. ORG MOV A, # 38H ; Khi to LCD hai dng vi ma trn 5 7 ACALL COMNWRT ; Gi chng trnh con lnh ACALL DELAY ; Cho LCD mt tr MOV A, # 0EH ; Hin th mn hnh v con tr ACALL COMNWRT ; Gi chng trnh con lnh ACALL DELAY ; Cp mt tr cho LCD MOV AM # 01 ; Xo LCD ACALL COMNWRT ; Gi chng trnh con lnh ACALL DELAY ; To tr cho LCD MOV A, # 06H ; Dch con tr sang phi ACALL COMNWRT ; Gi chng trnh con lnh ACALL DELAY ; To tr cho LCD MOV AM # 48H ; a con tr v dng 1 ct 4 ACALL COMNWRT ; Gi chng trnh con lnh
AGAIN: COMNWRT:
DATAWRT:
Hnh 12.2: Ni ghp LCD. 12.1.4 Gi m lnh hoc d liu n LCD c kim tra c bn. on chng trnh trn y ch ra cch gi cc lnh n LCD m khng c kim tra c bn (Busy Flag). Lu rng chng ta phi t mt tr ln trong qu tnh xut d liu hoc lnh ra LCD. Tuy nhin, mt cch tt hn nhiu l hin th c bn trc khi xut mt lnh hoc d liu ti LCD. Di y l mt chng trnh nh vy.
; Kim tra c bn trc khi gi d liu, lnh ra LCD ; t P1 l cng d liu
; Khi to LCD hai dng vi ma trn 5 7 ; Xut lnh ; Dch con tr sang phi ; Xut lnh ; Xo lnh LCD ; Xut lnh ; Dch con tr sang phi ; a con tr v dng 1 lnh 6 ; Hin th ch N ; Hin th ch 0 ; Ch y ; LCD sn sng cha? ; Xut m lnh ; t RS = 0 cho xut lnh ; t R/W = 0 ghi d liu ti LCD ; t E = 1 i vi xung cao xung thp ; t E = 0 cht d liu ; LCD sn sng cha? ; Xut d liu ; t RS = 1 cho xut d liu ; t R/W = 0 ghi d liu ra LCD ; t E = 1 i vi xung cao xung thp ; t E = 0 cht d liu ; Ly P1.7 lm cng vo ; t RS = 0 truy cp thanh ghi lnh ; t R/W = 1 c thanh ghi lnh ; E = 1 i vi xung cao xung thp ; E = 0 cho xung cao xung thp? ; i y cho n khi c bn = 0
Lu rng trong chng trnh c bn D7 ca thanh ghi lnh. c thanh ghi lnh ta phi t RS = 0, R/W = 1 v xung cao - xung - thp cho bt E cp thanh ghi lnh cho chng ta. Sau khi c thanh ghi lnh, nu bt D7 (c bn) mc cao th LCD bn v khng c thng tin (lnh) no c xut n n ch khi no D7 = 0 mi c th gi d liu hoc lnh n LCD. Lu trong phng pht ny khng s dng tr thi gian no v ta ang kim tra c bn trc khi xut lnh hoc d liu ln LCD. 12.1.5 Bng d liu ca LCD. Trong LCD ta c th t d liu vo bt c ch no. di y l cc v tr a ch v cch chng c truy cp.
Khi AAAAAAA = 0000000 n 0100111 cho dng lnh 1 v AAAAAAA = 1100111 cho dng lnh2. Xem bng 12.3. Bng 12.3: nh a ch cho LCD. Dng 1 (min) Dng 1 (max) Dng 2 (min) Dng 2 (max) DB7 1 1 1 1 DB6 0 0 1 1 DB5 0 1 0 1 DB4 0 0 0 0 DB3 0 0 0 0 DB2 0 1 0 1 DB1 0 1 0 1 DB0 0 1 0 1
Di a ch cao c th l 0100111 cho LCD. 40 k t trong khi i vi CLD 20 k t ch n 010011 (19 thp phn = 10011 nh phn). rng di trn 0100111 (nh phn) = 39 thp phn ng vi v tr 0 n 39 cho LCD kch thc 40 2. T nhng iu ni trn y ta c th nhn c cc a ch ca v tr con tr c cc kch thc LCD khc nhau. Xem hnh 12.3 ch rng tt c mi a ch u dng s Hex. Hnh 12.4 cho mt biu ca vic phn thi gian ca LCD. Bng 12.4 l danh sch lit k chi tit cc lnh v ch lnh ca LCD. Bng 12.2 c m rng t bng ny.
16 2 LCD 20 1 LCD 20 2 LCD 20 4 LCD 80 C0 80 80 C0 80 C0 94 D4 80 C0 81 C0 81 81 C0 81 C0 95 D5 81 C0 82 C2 82 82 C2 82 C2 96 D6 82 C2 83 C3 83 83 C3 83 C3 97 D7 83 C3 84 C4 Through Through Through Through Through Through Through Through Through 85 C5 93 93 D3 93 D3 A7 E7 A7 E7 86 C6 Through Through 8F CF
Data
tH tAH
R/W
RS
tPwh = Enable pulse width = 450 ns (minimum) tDSW = Data set up time = 195 ns (minimum) tH = Data hold time 10 ns (minimum) tAS = Set up time prior to E (going high) for both RS and R/W = 140 ns (minimum) tAH = Hold time afterr E has come down for both RS and R/W = 10 ns (minimum)
Hnh 12.4: Phn khe thi gian ca LCD. Bng 12.4: Danh sch lit k cc lnh v a ch lnh ca LCD.
Lnh DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 R/W RS M t Thi gian thc hin
Xo 0 mn hnh Tr v 0 u dng t ch 0 truy nhp iu 0 khin Bt/tt hin th Dch 0 hin th v con tr t 0 chc nng
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 1
0 1 1/ D C
1 S
Xo ton b mn hnh v t a ch 0 ca DD RAM vo b m a ch t a ch 0 ca DD RAM nh b m a ch. Tr hin th dch v v tr gc DD RAM khng thay i t hng chuyn dch con tr v xc nh dch hin th cc thao tc ny c thc hin khi c v ghi d liu t Bt/ tt mn hnh (D) Bt/ tt con tr (C) v nhp nhy k t v tr con tr (B) Dch con tr v dch hin th m khng thay i DD RAM Thit lp di d liu (DL) s dng hin th (L) v phng k t (F)
1.64 ms 1.64 ms 40 ms
40 ms
S / C N
R / L F
40 ms
D L
40 ms
ADD
40 ms
0 1
1 0
BF
40 ms 40 ms
c d liu
40 ms
Ghi ch: 1. Thi gian thc l thi gian cc i khi tn s fCP hoc fosc l 250KHz 2. Thi gian thc thay i khi tn s thay i. Khi tn s fEP hay fosc L 270kHz th thi gian thc hin c tnh 250/270 40 = 35ms v.v 3. Cc k hiu vit tt trong bng l: 4.
DD RAM CG RAM ACC ADD AC RAM. 1/D = 1 S=1 S/C = 1 R/L = 1 DL = 1 N=1 F=1 BF = 1
RAM d liu hin th (Display Data RAM) RAM my pht k t (character Generator) a cha ca RAM my pht k t a ch ca RAM d liu hin th ph hp vi a ch con tr. B m a ch (Address Counter) c dng cho cc a ch DD RAM v CG Tng Km dch hin th Dch hin th Dch sang phi 8 bt 2 dng Ma trn im 5 10 Bn 1/D = 0 S/C = 0 R/L = 0 DL = 0 N=1 F=0 BF = 0 Gim Dch con tr Dch tri 4 bt 1 dng Ma trn im 5 7 C th nhn lnh
12.2 Phi ghp 8051 vi ADC v cc cm bin. Phn ny s khm ph ghp cc chp ADC (b chuyn i tng t s) v cc cm bin nhit vi 8051. 12.1.1 Cc thit b ADC. Cc b chuyn i ADC thuc trong nhng thit b c s dng rng ri nht thu d liu. Cc my tnh s s dng cc gi tr nh phn, nhng trong th gii vt l th mi i lng dng tng t (lin tc). Nhit , p sut (kh hoc
gi tr tiu biu ca cc i lng trn l R = 10kW v C= 150pF v tn s nhn c l f = 606kHz v thi gian chuyn i s mt l 110ms.
1 1 1 9 19
to
LEDs
10k
150pF
4 1 2 10
Nomally
Open START
Hnh 12.5: Kim tra ADC 804 ch chy t do. 5. Chn ngt INTR (ngt hay gi chnh xc hn l kt thc chuyn i). y l chn u ra tch cc mc thp. Bnh thng n trng thi cao v khi vic chuyn i hon tt th n xung thp bo cho CPU bit l d liu c chuyn i sn sng ly i. Sau khi INTR xung thp, ta t CS = 0 v gi mt xung cao 0 xung - thp ti chn RD ly d liu ra ca 804. 6. Chn Vin (+) v Vin (-). y l cc u vo tng t vi sai m Vin = Vin (+) - Vin (-). Thng thng Vin (-) c ni xung t v Vin (+) c dng nh u vo tng t c chuyn i v dng s. 7. Chn VCC. y l chn ngun nui +5v, n cng c dng nh in p tham chiu khi u vo Vref/2 (chn 9) h. 8. Chn Vref/2. Chn 9 l mt in p u vo c dng cho in p tham chiu. Nu chn ny h (khng c ni) th in p u vo tng t cho ADC 804 nm trong di 0 n +5v (ging nh chn VCC). Tuy nhin, c nhiu ng dng m u vo tng t p n Vin cn phi khc ngoi di 0 n 5v. Chn Vref/2 cdng thc thi cc in p u vo khc ngoi di 0 - 5v. V d, nu di u vo tng t cn phi l 0 n 4v th Vref/2 c ni vi +2v. Bng 12.5 biu din di in p Vin i vi cc u vo Vref/2 khc nhau. Bng 12.5: in p Vref/2 lin h vi di Vin.
Ghi ch: - VCC = 5V - * Khi Vref/2 h th o c khong 2,5V - Kch thc bc ( phn di) l s thay i nh nht m ADC c th phn bit c. 9. Cc chn d liu D0 - D7. Cc chn d liu D0 - D7 (D7 l bt cao nht MSB v D0 l bt thp nht LSB) l cc chn u ra d liu s. y l nhng chn c m ba trng thi v d liu c chuyn i ch c truy cp khi chn CS = 0 v chn RD b a xung thp. tnh in p u ra ta c th s dng cng thc sau:
D out = V in kich thuoc buoc
Vi Dout l u ra d liu s (dng thp phn). Vin l in p u vo tng t v phn di l s thay i nh nht c tnh nh l (2 Vref/2) chia cho 256 i vi ADC 8 bt. 10. Chn t tng t v chn t s. y l nhng chn u vo cp t chung cho c tn hiu s v tng t. t tng t c ni ti t ca chn Vin tng t, cn t s c ni ti t ca chn Vcc. L do m ta phi c hai t l cch ly tn hiu tng t Vin t cc in p k sinh to ra vic chuyn mch s c chnh xc. Trong phn trnh by ca chng ta th cc chn ny c ni chung vi mt t. Tuy nhin, trong thc t thu o d liu cc chn t ny c ni tch bit. T nhng iu trn ta kt lun rng cc bc cn phi thc hin khi chuyn i d liu bi ADC 804 l: a) Bt CS = 0 v gi mt xung thp ln cao ti chn WR bt u chuyn i. b) Duy tr hin th chn INTR . Nu INTR xung thp th vic chuyn i c hon tt v ta c th sang bc k tip. Nu INTR cao tip tc thm d cho n khi n xung thp. c) Sau khi chn INTR xung thp, ta bt CS = 0 v gi mt xung cao - xung - thp n chn RD ly d liu ra khi chp ADC 804. Phn chia thi gian cho qu trnh ny c trnh by trn hnh 12.6.
WR
D0 D7 Data out
INTR RD
Start conversion End conversion
Read it
Hnh 12.6: Phn chia thi gian c v ghi ca ADC 804. 12.2.3 Kim tra ADC 804. Chng ta c th kim tra ADC 804 bng cch s dng s mch trn hnh 12.7. thit lp ny c gi l ch kim tra chy t do v c nh sn xut khuyn cao nn s dng. Hnh 12.5 trnh by mt bin tr c dng cp mt in p tng t t 0 n 5V ti chn u vo. Vin(+) ca ADC 804 cc u ra nh phn c hin th trn cc n LED ca bng hun luyn s. Cn phi lu rng trong ch kim tra chy t do th u vo CS c ni ti t v u vo WR c ni ti u ra INTR . Tuy nhin, theo ti liu ca hng National Semiconductor nt WR v INTR phi c tm thi a xung thp k sau chu trnh cp ngun bo m hot ng.
8051 P2.5 P2.6 P1.0 ADC804 5V
10k
RD WR
D0
P1.7 P2.7
D7 INTR
CS
RD WR
D0
10k POT
Q
P1.7 P2.7 D0 INTR
CS
Q
74LS74
Hnh 12.8: Ni ghp ADC 804 vi ng h t XTAL2 ca 8051. Trn hnh 12.8 ta c th thy rng tn hiu ng h i vo ADC 804 l t tn s thch anh ca 8051. V tn s ny qu cao nn ta s dng hai mch lt Rlip - Flop kiu D (74LS74) chia tn s ny cho 4. Mt mch lt chia tn s cho 2 nu ta ni u Q ti u vo D. i vi tn s cao hn th ta cn s dng nhiu mch Flip Plop hn. 12.2.4 Phi ghp vi mt cm bin nhit ca 8051.
Bng 12.7: Hng dn chn lot cc cm bin h LM34. M k hiu LM34A LM34 LM34CA LM34C LM34D Di nhit -55 F to + 300 C -55 F to + 300 C -40 F to + 230 C -40 F to + 230 C -32 F to + 212 C chnh xc + 2.0 F + 3.0 F + 2.0 F + 3.0 F + 4.0 F u ra 10mV/F 10mV/F 10mV/F 10mV/F 10mV/F
Bng 12.8: Hng dn chn lot cc cm bin nhit h LM35. M sn phm LM35A LM35 LM35CA LM35C LM35D Di nhit -55 C to + 150 C -55 C to + 150 C -40 C to + 110 C -40 C to + 110 C 0 C to + 100 C chnh xc + 1.0 C + 1.5 C + 1.0 C + 1.5 C + 2.0 C u ra 10 mV/F 10 mV/F 10 mV/F 10 mV/F 10 mV/F
Tnh cht gn lin vi vic vit phn mm cho cc thit b phi tuyn nh vy a nhiu nh sn xut tung ra th trng cc lot b cm bin nhit tuyn tnh. Cc b cm bin nhit n gin v c s dng rng ri bao gm cc lot h LM34 v LM35 ca hng National Semiconductor Corp. 12.2.5 Cc b cm bin nhit h LM34 v LM35. Lot cc b cm bin LM34 l cc b cm bin nhit mch tch hp chnh xc cao m in p u ra ca n t l tuyn tnh v nhit Fahrenheit (xem hnh 12.7). lot LM34 khng yu cu cn chnh bn ngoi v vn n c cn chnh ri. N a ra in p 10mV cho s thay i nhit 10F. bng 12.7 hng dn ta chn cc cm bin lot LM34.
RD WR
D0
GND
2.5k
Q
P1.7 P2.7 D7 INTR
LM336
CS
Set to 1.28V
10k
Hnh 12.10 Hnh 12.10: Ni ghp 8051 vi DAC 804 v cm bin nhit . Hnh 12.10 biu din ni ghp ca b cm bin nhit n ADC 804. Lu rng ta s dng i t zener LM336 - 2.5 c nh in p qua bin tr 10kW ti 2,5V. Vic s dng LM336 - 2.5 c th vt qua c mi dao ng ln xung ca ngun nui. 12.2.7 Chp ADC 808/809 vi 8 knh tng t. Mt chp hu ch khc ca National Semiconductor l ADC 808/809 (xem hnh 12.11). Trong khi ADC 804 ch c mt u vo tng t th chp ny c 8 knh u vo. Nh vy n cho php ta hin th ln 8 b bin i khc nhau ch qua mt chp duy nht. Lu rng, ADC 808/809 c u ra d liu 8 bt nh ADC 804. 8 knh u vo tng t c dn knh v c chn theo bng 12.10 s dng ba chn a ch A, B v C.
IN0
GND
Clock
Vcc
D0
IN7
ADC808/809
Vref(+) EOC Vref(-) OE SC ALE A C C
D7
(LSB)
Trong ADC 808/809 th Vrer(+) v Vref(-) thit lp in p tham chiu. Nu Vref (-1) = Gnd v Vref (+) = 5V th phn di l 5V/256 = 19,53mV. Do vy, c phn di 10mV ta cn t Vref (+) = 2,56V v Vref (-) = Gnd. T hnh 12.11 ta thy c chn ALE. Ta s dng cc a ch A, B v C chn knh u vo IN0 IN7 v kch hot chn ALE cht a ch. Chn SetComplete bt u chuyn i (Start Conversion). Chn EOC c dng kt thc chuyn i (End - Of - Conversion) v chn OE l cho php c u ra (Out put Enable). 12.2.7 Cc bc lp trnh cho ADC 808/809. Cc bc chuyn d liu t u vo ca ADC 808/809 vo b vi iu khin nh sau: 1. Chn mt knh tng t bng cch to a ch A, B v C theo bng 12.10. 2. Kch hot chn ALE (cho php cht a ch Address Latch Enable). N cn xung thp ln cao cht a ch. 3. Kch hot chn SCbng xung cao xung thp bt u chuyn i. 4. Hin th OEC bo kt thc chuyn i. u ra cao - xung - thp bo rng d liu c chuyn i v cn phi c ly i. 5. Kch hot OE cho php c d liu ra ca ADC. Mt xung cao xung thp ti chn OE s em d liu s ra khi chp ADC. Lu rng trong ADC 808/809 khng c ng h ring v do vy phi cp xung ng b ngoi n chn CLK. Mc d tc chuyn i ph thuc vo tn s ng h c ni n CLK nhng n khng nhanh hn 100ms.
N C O S D N S
A Average North N
N C O S Average South D N S
Hnh 13.1: Cn chnh rto. Bng 13.1: Chui ngun nui 4 bc thng thng.
Bng13.2: Cc gc bc ca ng c bc. Gc bc 0.72 1.8 2.0 2.5 5.0 7.5 15 S bc/ vng 500 200 180 144 72 48 24 Hnh 13.2:
Hnh 13.3: Phi ghp 8051 vi mt ng c bc. Cn phi nh rng mc d ta c th bt u vi cc chui bt k trong bng 13.1. Nhng khi bt u th ta phi tip tc vi cc chui theo ng th t. V d ta bt u bc th ba l chui (0110) th ta phi tip tc vi chui ca bc 4 ri sau 1, 2, 3 v.v... V d 13.1: Hy m t kt ni 8051 vi ng c bc ca hnh 13.3 v vit mt chng trnh quay n lin tc. Li gii:
Hy thay i gi tr ca DELAY t tc quay. Ta c th s dng lnh n bt SETB v CLR thay cho lnh RRA to ra chui xung. 13.1.2 Gc bc (Step Angle). Vy mi bc c dch chuyn l bao nhiu? iu ny ph thuc vo cu trc bn trong ca ng c, c bit l s rng ca stato v r to. Gc bc l quay nh nht ca mt bc. Cc ng c khc nhau c cc gc bc khc nhau. Bng 13.2 trnh by mt s gc bc i vi cc ng c khc nhau. Bng 13.2 c s dng thut ng s bc trong mt vng (Steps per revolution). y l tng s bc cn quay ht mt vng 3600 (chng hn 180 bc 20 = 3600). Cn phi ni rng dng nh tri ngc vi n tng ban u. Mt ng c bc khng cn nhiu u dy cho stato hn c cc bc nh hn. Tt c mi ng c bc c ni y ch c 4 u dy cho cun dy stato v 2 u dy chung cho nt gia. Mc d nhiu hng sn xut ch dnh mt u chung thay cho hai th h cng vn phi c 4 u cun dy stato. 13.1.3 Quan h s bc trong giy v s vng quay trong pht RPM. Quan h gia s vng quay trong pht RPM (revolutions per minute), s bc trong vng quay v s bc trong vng giy l quan h thuc v trc gic v n c biu din nh sau:
13.1.4 Chui xung bn bc v s rng trn r to. Chui xung chuyn mch c trnh by trong bng 13.1 c gi l chui chuyn mch 4 bc bi v sau 4 bc th hai cun dy ging nhau s c bt ON. Vy dch chuyn ca 4 bc ny s l bao nhiu? Sau mi khi thc hin 4 bc ny th r to ch dch c mt bc rng. Do vy, trong ng c bc vi 200 bc/ vng th r to ca n c 50 rng v 50 4 = 200 bc cn quay ht mt vng. iu ny dn n mt kt lun l gc bc ti thiu lun l hm ca s rng trn r to. Hay ni cch khc gc bc cng nh th r to quay c cng nhiu rng. Hy xt v d 13.2. V d 13.2: Hy tnh s ln ca chui 4 bc trong bng 13.1 phi cp cho mt ng c bc to ra mt dch chuyn 800 nu ng c gc bc l 20. Li gii: Mt ng c c gc bc l 20 th phi c nhng c tnh sau: gc bc 20, s bc/ vng l 1800, s rng ca r to l 45, dch chuyn sau mi chui 4 bc l 80. Vy dch chuyn 800 th cn 40 chui 4 bc v 10 4 2 = 80. Nhn vo v d 13.2 th c ngi s hi vy mun dch chuyn i 450 th lm th no khi gc bc l 20. Mun c phn gii nh hn th tt c mi ng c bc u cho php chui chuyn mch 8 bc, chui 8 bc cng cn c gi chui na bc (half - stepping), v trong chui 8 bc di y th mi bc l mt na ca gc bc bnh thng. V d, mt ng c c gc bc l 20 c th s dng gc bc 10 nu p dng chui bng 13.3. Bng 13.3: Chui xung 8 bc. Bc 1 2 3 4 5 6 7 8 Cun A 1 1 1 0 0 0 0 0 Cun B 0 0 1 1 1 0 0 0 Cun C 0 0 0 0 1 1 1 0 Cun D 1 0 0 0 0 0 1 1
Chiu kim ng h
Chiu quay b m
13.1.5 Tc ng c. Tc ng c c o bng s bc trong mt giy (bc/giy) l mt hm ca tc chuyn mch. trong v d 13.1 ta thy rng bng vic thay i thi gian tr ta c th t c cc tc quay khc nhau. 13.1.6 M mem gi. Di y l mt nh ngha v m men gi: M men gi l lng m men ngoi cn thit lm quay trc ng c t v tr gi ca n vi iu kin trc ng c ang ng yn hoc ang quay vi tc
Hnh 13.4: S dng cc bng bn dn iu khin ng c bc. 13.2 Phi ghp 8051 vi bn phm. Cc bn phm v LCD l nhng thit b vo/ ra c s dng rng ri nht ca 8051 v cn phi thu hiu mt cch c bn v chng. phn ny trc ht ta gii thiu cc kin thc c bn v bn phm vi c cu n phm v tch phm, sau gii thiu v giao tip 8051 vi bn phm. 13.2.1 Phi ghp bn phm vi 8051. mc thp nht cc bn phm c t chc di dng mt ma trn cc hng v cc ct. CPU truy cp c hng ln ct thng qua cc cng. Do vy, vi hai cng 8 bt th c th ni ti mt bn phm 8 8 ti b vi x l. Khi mt phm c n th mt hng v mt ct c tip xc, ngoi ra khng c s tip xc no gia cc hng v cc ct. Trong cc bn phm my tnh IBM PC c mt b vi iu khin (bao gm mt b vi x l, b nh RAM v EPROM v mt s cng tt c c b tr trn mt chp) chu trch nhim phi ghp phn cng v phn mm ca bn phm. Trong nhng h thng nh vy, n l chc nng ca cc chng trnh c lu trong EPROM ca b vi iu khin qut lin tc cc phm, xc nh xem phm no c kch hot v gi n n bo mch chnh. Trong phn ny nghin cu v c cu 8051 qut v xc nh phm. 13.2.2 Qut v xc nh phm. Hnh 13.5 trnh by mt ma trn 4 4 c ni ti hai cng. Cc hng c ni ti mt u ra v cc ct c ni ti mt cng vo. Nu khng c phm no c n th vic ng cng vo s hon ton l 1 cho tt c cc ct v tt c c ni ti dng ngun VCC. Nu tt c cc hng c ni t v mt phm c n th mt trong cc ct s c gi tr 0 v phm c n to ng xung t. Chc nng ca b vi iu khin l qut lin tc pht hin v xc nh phm c n. Hnh 13.5 Hnh 13.5: Ni ghp bn phm ma trn ti cc cng. 13.2.3 Ni t cc hng v c cc ct. pht hin mt phm c n th b vi iu khin ni t tt c cc hng bng cch cp 0 to cht u ra, sau n c cc hng. Nu d c c t cc
Khng
Mi phm h C
c mi ct
Khng
C phm n C
Tm phm no c n
Tr v
Ch nh phm c mi ct
Khng
C phm n
D7 D6 D5 D4 D3 D 2 D1 D0 + + + + + + + ) 2 4 8 16 32 64 128 256
V d 14.1: Mt chp nh c 12 chn a ch v 4 chn d liu. Hy tm t chc b nh v dung lng nh ca n. Li gii: a) Chp nh ny c 4096 ngn nh (212 = 4096) v mi ngn nh cha 4 bt d liu nn t chc nh ca n l 4096 4 v thng c biu din l 4K 4. b) Dung lng nh ca chp nh l 16K v c 4 K ngn nh v mi ngn nh c 4 bt d liu. V d 14.2: Mt chp nh 512k c 8 chn d liu. Hy tm a) t chc ca n v b) s chn a ch ca chp ny. Li gii: a) Mt chp c 8 chn d liu c ngha l mi ngn nh c 8 bt d liu. S ngn nh trn chp ny bng dung lng nh chia cho s chn d liu = 512k/8 = 64. Do vy t chc nh ca chp l 64k 8. b) S ng a ch ca chp s l 16 v 116 = 64k. 14.1.4 B nh ROM. B nh ROM l b nh ch c (Read - only Memory). y l mt kiu b nh m khng mt cc ni dung ca n khi tt ngun. Vi l do ny m b nh ROM cn c gi l b nh khng bay hi, c nhiu loi b nh ROM khc nhau nh: PROM, EPROM, EEPROM, EPROM nhanh (flash) v ROM che. 14.1.4.1 B nh PROM. B nh PROM l b nh ROM c th lp trnh c. y l loi b nh m ngi dng c th t ghi thng tin vo. hay ni cch khc, PROM l b nh ngi dng c th lp trnh c. i vi mi bt ca PROM c mt cu ch. B nh PROM c lp trnh bng cch lm t nhng cu tr. Nu thng tin c t vo trong PROM m sau th phi b v cc cu tr ca n bn trong b t vnh vin vi l do ny m PROM m c gi l b nh ROM lp trnh mt ln. Vic lp trnh ROM cng c gi l t ROM v n i hi phi c mt thit b c bit gi l b t ROM hay cn gi l thit b lp trnh ROM. 14.1.4.2 B nh EPROM v UV - EPROM. B nh EPROM c pht minh ra cho php thc hin thay i ni dung ca PROM sau khi n c t. Trong b nh EPROM ta c th lp trnh chp nh v xo n hng nghn ln. iu ny l c bit cn thit trong qu trnh pht trin mu th ca mt d n da trn b vi x l. Mt EPR s dng rng ri c gi l UV - EPROM (UV l ch vit tt ca tia cc tm Ultra - Violet). Vn tn ti duy nht ca UV - EPROM l thi gian xo ca n qu lu (20 pht).
HNH 14.1 Hnh 14.1: B tr cc chn ca h cc chp nh ROM 27xx. V d 14.3: i vi ROM c m b phn l 27128 c dung lng nh l 128k bt. Tra bng ta thy t chc ca n l 16k 8 (tt c mi ROM u c 8 chn d liu) iu ny ni ln rng n c 8 chn d liu v s chn a ch c tm thy l 14 v 214 = 16k. 14.1.4.3 B nh PROM c th xo c bng in EEPROM. B nh EEPROM c mt s u im so vi EPROM l do v c xo bng in nn qu trnh xo rt nhanh, nhanh rt nhiu so vi thi gian xo 20 pht ca UEPROM. Ngoi ra trong EEPROM ta phi xo ton b ni dung ca ROM. Tuy nhin, u im chnh ca EEPROM l ta c th lp trnh v xo khi chp nh vn trn gi cm ca bng mch h thng m khng phi ly ra nh i vi UV EPROM. Hay ni cch khc l EPROM khng cn thit b lp trnh v thit b xo ngoi nh i vi UV - EPROM. hon ton to thun li cho EPROM nh thit k phi kt hp vo bng mch ca h thng c mch in lp trnh EEPROM s dng in p Vpp = 5V nhng chng rt t. nhn chung, gi thnh cho 1 bt ca EEPROM t hn rt nhiu so vi UV - EPROM.
PA0
P1.4 P1.5 GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3
PB0
PB1 PB2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
8 2 5 5 A
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
PA4 PA5 PA6 PA7 WR RESE D0 D1 D2 D3 D4 D5 D6 D7 VCC PB7 PB6 PB5 PB4 PB3
15.1.1.1 Cc chn PA0 - PA7 (cng A). C 8 bt ca cng A PA0 - PA7 c th c lp trnh nh 8 bit u vo hoc 8 bit u ra hoc c 8 bt hai chiu vo/ ra.S
D7
D0 8 2 5 5
PA PB PC
RD WR
A0 A1
CS
RESET
Group A D7 D6 D5 D4 D3 D2
Group A D1 D0
Mode Selcction 0 = Mode 0 1 = Mode 1 Port C (Upper PC7 - PCA) 1 = Input 0 = Output
Hnh 15.3: nh dng t iu khin ca 8255 (ch vo/ ra). 15.1.3 Lp trnh ch vo/ ra n gin. Hng Intel gi ch 0 l ch vo/ ra c s. Mt thut ng c dng chung hn l vo/ ra n gin. Trong ch ny th mt cng bt k trong A, B, C c lp trnh nh l cng u vo hoc cng u ra. Cn lu rng trong ch ny mt cng cho khng th va lm u vo li va lm u ra cng mt lc. V d 15.1: Hy tm t iu khin ca 8255 cho cc cu hnh sau: Tt c cc cng A, B v C u l cc cng u ra (ch 0). PA l u vo, PB l u ra, PCL bng u vo v PCH bng u ra. Li gii: T hnh 15.3 ta tm c:
a) 1000 0000 = 80H; b) 1001 000 = 90H
15.1.4 Ni ghp 8031/51 vi 8255. Chp 8255 c lp trnh mt trong bn ch va trnh by trn bng cch gi mt byte (hng Intel gi l mt t iu khin) ti thanh ghi iu khin ca 8255. Trc ht chng ta phi tm ra cc a ch cng c gn cho mi cng A, B, C v thanh ghi iu khin. y c gi l nh x cng vo/ ra (mapping). Nh c th nhn thy t hnh 15.4 th 8255 c ni ti mt 8031/51 nh th n l b nh RAM. vic s dng cc tn hiu RD v WR . Phng php ni mt chp vo/ ra b nh v n c nh x vo khng gian b nh. Hay ni cch khc, ta s dng khng gian b nh truy cp cc thit b vo/ ra. V ly??? do ny m ta dng lnh MOVX truy cp RAM v ROM. i vi mt 8255 c ni ti 8031/51 th ta cng phi dng lnh MOVX truyn thng vi n. iu ny c th hin trn v d 15.2.
AGAIN:
RD WR
A1
CS WR RD
8255 A1 A1 A0 D7 PA PB PC D0
DQ 74LS373 OC
AD0
A0 D7
D0
A, #90H ; PA l u vo, PB l u ra, PC l u ra DPTR, #1003H ; Np a ch cng ca thanh ghi iu khin @DPTR, A ; Xut t iu khin DPTR, #1000H ; a ch PA A, @DPTR ; Nhn d liu t PA DPTR ; a ch PB @DPTR, A ; Gi d liu ra PB DPTR ; a ch PC @DPTR, A ; Gi d liu ra PC
RD WR
A15
CS
A12 G AD7 D Q 74LS373 OC A0 D7 A1 A1 A0 D7
WR RD 8255
PA PB PC D0 RE
AD0
D0
Hnh 15.5: Ni ghp 8051 ti 8255 cho v d 15.3. i vi v d 15.3 ta nn dng ch lnh EQU cho a ch cc cng A, B, C v thanh ghi iu khin CNTPORT nh sau:
APORT EQU BPORT EQU CPORT EQU CNTPORT MOV MOV 1000H 1001H 1002H EQU 1003H A, #90H DPTR, #CNTPORT ; PA l u vo, PB l u ra, PC l u ra ; Np a ch ca cng thanh ghi iu khin
trong v d 15.2 v 15.3 ta s dng thanh ghi DPTR v a ch c s gn cho 8255 l 16 bit. Nu a ch c s dnh cho 8255 l 8 bit, ta c th s dng cc lnh MOVX A, @R0 v MOVX @R0, A trong R0 (hoc R1) gi a ch cng 8 bit ca cng. Xem v d 15.4, ch rng trong v d 15.4 ta s dng mt cng lgc n gin gii m a cha cho 8255. i vi h thng c nhiu 8255 ta c th s dng 74LS138 gii m nh s trnh by v d 15.5. 15.1.5 Cc b danh ca a ch (Addren Alias). Trong cc v d 15.4 v 15.4 ta gii m cc bt a ch A0 - A7, tuy nhin trong v d 15.3 v 15.2 ta gii m mt phn cc a ch cao ca A8 - A15. Vic gii m tng phn ny dn n ci gi l cc b danh ca a ch (Address Aliases). Hay ni cch khc, cng cng vt l ging nhau c cc a ch khc nhau, do vy cng mt cng m c bit vi cc tn khc nhau. Trong v d 15.2 v 15.3 ta c th thay i tt x thnh cc t hp cc s 1 v 0 khc nhau thnh cc a ch khc nhau, song v thc cht chng tham chiu n cng mt cng vt l. Trong ti liu thuyt minh phn cng ca mnh chng ta cn phi bo m ghi ch y cc b danh a cha nu c sao cho mi ngi dng bit c cc a ch c sn h c th m rng h thng. V d 15.4: Cho hnh 15.6: a) Hy tm cc a ch cng vo/ ra c gn cho cc cng A, B, C v thanh ghi iu khin. b) Tm t iu khin cho trng hp PA l u ra, PB l u vo, PC - PC3 l u vo v CP4 - CP7 l u ra. c) Vit mt chng trnh nhn d liu t PB v gi n ra PA. Ngoi ra, d liu t PC1 c gi n CPU. Li gii: a) Cc a ch cng c tm thy nh sau:
BB 0010 0010 0010 0010
CS
00 00 00 00
A1 0 0 1 1
A0 0 1 0 1
; PA, PCU l u ra, PB v PCL l u vo ; Np a ch ca cng thanh ghi iu khin ; Xut t iu khin ; Np a ch PB ; c PB ; Ch n PA (20H) ; Gi n n PA ; Np a ch PC ; c PCL ; Che phn cao ; Trao i phn cao v thp ; Gi n PCU
RD WR
A7
CS
ALE P0.7 P0.0 A2 AD7 G D Q 74LS373 AD0 OC A0 D7 A1 A1 A0 D7
WR RD
PA 8255 PB PCL PCU D0 RES
D0
Hnh 15.6: Ni ghp 8051 vi 8255 cho v d 15.4. V d 15.5: Hy tm a ch c s cho 8255 trn hnh 15.7. Li gii:
GA A7 1
G 2B
A6 0
G 2A
A5 0
C A4 0
B A3 1
A A2 0 A1 0 A0 0
a ch 88H
G 2A G 2B
G1
CS
Hnh 15.7: Gii m a ch ca 8255 s dng 74LS138. 15.1.6 H 8031 vi 8255. Trong mt h thng da trn 8031 m b nh chng trnh ROM ngoi l mt s bt buc tuyt i th s dng mt 8255 l rt c tro n. iu ny l do mt thc t l trong gii trnh phi ghp 8031 vi b nh chng trnh ROM ngoi ta b mt hai cng P0 v P2 v ch cn li duy nht cng P1. Do vy, vic ni vi mt 8255 l cch tt nht c thm mt s cng. iu ny c ch ra trn hnh 15.8.
8031 P3.7 P3.6
RD WR
VCC
EA
PSEN
P2.7 P2.0 ALE P0.7 P0.0 AD7 AD0 G A12 A8 A0 A12 A8 A0 A0 D7
CE OE VCC
2864 (2764) 8K8 Program RAM D0
WR RD
8 2 5 5
A1
PA PB PC RES
D q 74LS373
OC
A0 D7
A0
D0
Hnh 15.8: Ni 8031 ti mt ROM chng trnh ngoi v 8255. 15.2 Ni ghp vi th gii thc. 15.2.1 Phi ghp 8255 vi ng c bc. Chng 13 ni chi tit v phi ghp ng c bc vi 8051, y ta trnh by ni ghp ng c bc ti 8255 v lp trnh (xem hnh 15.9).
WR RD
A0 A1
CS
Hnh 15.9: Ni ghp 8255 vi mt ng c bc. Chng trnh cho s ni ghp ny nh sau:
MOV MOV MOVX MOV MOV MOVX RR ACALL SJMP A, #80H R1, #CRPORT @R1, A R1, #APORT A, #66H @R1, A A DELAY AGAIN ; Chn t iu khin PA l u ra ; a ch cng thanh ghi iu khin ; Cu hnh cho PA u ra ; Np a ch cng PA ; Gn A = 66H, chuyn xung ca ng c bc ; Xut chui ng c n PA ; Quay chui theo chiu kim ng h ; Ch
AGAIN:
15.2.2 Phi ghp 8255 vi LCD. Chng trnh 15.1 trnh by cch xut cc lnh v d liu ti mt LCD c ni ti 8255 theo s hnh 15.10. Trong chng trnh 15.1 ta phi t mt tr trc mi ln xut thng tin bt k (lnh hoc d liu) ti LCD. Mt cch tt hn l kim tra c bn trc khi xut bt k th g ti LCD nh ni chng 12. Chng trnh 15.2 lp li chng trnh 15.1 c s dng kim tra c bn. rng lc ny khng cn thi gian gi chm nh v tr 15.1. Chng 15.1:
0855 PA0 LCD D0 VCC VEE PA1 PB0 PB1 PB2 RESET A7 VSS RS R/W E 10K POT
; Ghi cc lnh v d liu ti LCD khng c kim tra c bn. ; Gi s PA ca 8255 c ni ti D0 - D7 ca LCD v ; IB - RS, PB1 = R/W, PB2 = E ni cc chn iu khin LCD MOV A, #80H ; t tt c cc cng 8255 l u ra MOV R0, #CNTPORT ; Np a ch thanh ghi iu khin MOVX @R0, A ; Xut t iu khin MOV A, #38H ; Cu hnh LCD c hai dng v ma trn 57
MOVX @R0, A ; Cht thng tin trn chn d liu ca LCD RET ; Chng trnh con ghi lnh DATAWRT ghi d liu ra LCD. CMDWRT: MOV R0, # APORT ; Np a ch cng A MOVX @R0, A ; Xut thng tin ti chn d liu ca LCD MOV R0, # BPORT ; t RS=1, R/W=0, E=0 cho xung cao xung thp MOV A, # 00000101B ; Kch hot cc chn RS, R/W, E MOVX @R0, A ; To xung cho chn E NOP NOP MOV A, # 00000001B ; t RS=1, R/W=0, E=0 cho xung cao xung thp MOVX @RC, A ; Cht thng tin trn chn d liu ca LCD RET
MOV
A, # 01H
; Xo LCD
A, #00000001B ; t RS=1, R/W=0, E=0 cho xung cao xung thp @R0, A ; Cht thng tin chn d liu LCD
15.2.3 Ni ghp ADC ti 8255. Cc b ADC c trnh by chng 12. Di y mt chng trnh ch mt b ADC c ni ti 8255 theo s cho trn hnh 115.11.
MOV MOV MOVX MOV MOVX ANL JNZ MOV MOVX A, #80H R1, #CRPORT @R1, A R1, #CPORT A, @R1 A,, #00000001B BACK R1, #APORT A, @R1 ; T iu khin vi PA = u ra v PC = u vo ; Np a ch cng iu khin ; t PA = u ra v PC = u vo ; Np a ch cng C ; c a ch cng C xem ADC sn sng cha ; Che tt c cc bt cng C xem ADC sn ; Gi hin th PC0 che EOC ; Kt thc hi thoi v by gi nhn d liu ca ADC ; Np a ch PA ; A = u vo d liu tng t
RD
8255 D0 D7 PA0
WR
D0
10K POT
A2 A7
PA7 PC0
D7 INTR
CS
Hnh 15.11: Ni ghp ADC 804 vi 8255. 15.3 Cc ch khc ca 8255. 15.3.1 Ch thit lp/ xo bit BSR. Mt c tnh duy nht ca cng C l cc bit c th c iu khin ring r. Ch BSR cho php ta thit lp cc bit PC0 - PC7 ln cao xung thp nh c ch ra trn hnh 15.12. V d 15.6 v 15.7 trnh by cch s dng ch ny nh th no?
BSR Mode
000=Bit0 100=Bit4 001 = Bit1 101=Bit5 010 = Bit2 110=Bit6 011 = Bit3 111=Bit7
Set=1 Reset=0
Hnh 15.12: T iu khin ca ch BSR. V d 15.6: Hy lp trnh PCA ca 8255 ch BSR th bit D7 ca t iu khin phi mc thp. PC4 mc cao, ta cn mt t iu khin l "0xxx1001" v mc thp ta cn "0xxx1000". Cc bt c nh du x l ta khng cn quan tm v thng chng c t v 0.
MOV MOV MOVX ACALL MOV MOVX ACALL A, 00001001B R1, #CNTPORT @R1, A DELAY A, #00001000B @R1, A DELAY ; t byte iu khin cho PC4 =1 ; Np cng thanh ghi iu khin ; To PC4 = 1 ; Thi gian gi chm cho xung cao ; t byte iu khin cho PC4 = 0 ; To PC4 = 0
D0 D7
8255
WR RD
A2 A7 Decoding Circuyiry A0 A7
WR RD
A0 A7 PC4
CS
Hnh 15.13: Cu hnh cho v d 15.6 v 15.7. V d 15.7: Hy lp trnh 8255 theo s 15.13 : a) t PC2 ln cao b) S dng PC6 to xung vung lin tc vi 66% y xung. Li gii:
a) MOV R0, # CNTPORT MOV A, # 0XXX0101 MOV @R0, A b) AGAIN: MOV MOV MOVX ACALL ACALL MOV ; Byte iu khin A, #00001101B R0, #CNTPORT @R0, A DELAY DELAY A, #00001100B ; Chn PC6 = 1 ; Np a ch thanh ghi iu khin ; To PC6 = 1 ; PC6 = 0
INTEA
OBFA ACKA
0 Port A Mode1
1 Port A Mode1
1/0 PC4.51=Input,0=Outpput
0 Port B Mode1
Port A Output
Port B Output
Port B Output
I/O Mode
OBFB ACKB
Port B with Hanshake Signals
INTEB PC0
WR
INTEA is controlled by PC6 in BSR mode PC4.5 INTEB is controlled by PC2 in BSR mode Hnh 15.14: Biu u ra ca 8255 ch 1.
PB7 PB0
Port A Output
WR OBF
INTEB
ACK
Output
Hnh 15.15: Biu nh thi ca 8255 ch 1. 15.3.2 8255 ch 1: Vo/ ra vi kh nng ny bt tay. Mt trong nhng c im mnh nht ca 8255 l kh nng bt tay vi cc thit b khc. Kh nng bt tay l mt qu trnh truyn thng qua li ca hai thit b thng minh. V d v mt thit b c cc tn hiu bt tay l my in. Di y ta trnh by cc tn hiu bt tay ca 8255 vi my in. Ch 1: Xut d liu ra vi cc tn hiu bt tay. Nh trnh by trn hnh 15.14 th cng A v B c th c s dng nh cc cng u ra gi d liu ti mt thit b vi cc tn hiu bt tay. Cc tn hiu bt tay cho c hai cng A v B c cp bi cc bit ca cng C. Hnh 15.15 biu nh thi ca 8255.
14
25
Hnh 15.16: u cm DB-25. (hnh 15.17 m qu khng v c) Hnh 15.17: u cp ca my in Centronics. Bng 15.2: Cc chn tn hiu ca my in Centronics.
Cc bc truyn thng c bt tay gia my in v 8255. Mt byte d liu c gi n bus d liu my in. My in c bo c 1 byte d liu cn c in bng cch kch hot tn hiu u vo STROBE ca n. Khi my nhn c d liu n bo bn gi bng cch kch hot tn hiu u ra c gi l ACK (chp nhn). Tn hiu ACK khi to qu trnh cp mt byte khc n my in. Nh ta thy t cc bc trn th ch khi mt byte d liu ti my in l khng . My in phi c thng bo v s hin din ca d liu. Khi d liu c gi th my in c th bn hoc ht giy, do vy my in phi c bo cho bn gi khi no n nhn v ly c d liu ca n. Hnh 15.16 v 15.17 trnh cc cm DB25 v u cp ca my in Centronics tng ng.