logo

Lập trình 8051 : Lập trình cho cổng vào - ra I/O

Mặc dù các thành viên của họ 8051 đều có các kiểu đóng vỏ khác nhau , chẳng hạn như hàng chắn DIP dạng vỏ dẹt vuông QFP và dạng chíp không có chắn đỡ
Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -1- LËp tr×nh 8051 ch−¬ng 4 LËp tr×nh cho cæng vµo - ra I/0 4.1 M« t¶ ch©n cña 8051. MÆc dï c¸c thµnh viªn cña hä 8051 (vÝ dô 8751, 89C51, DS5000) ®Òu cã c¸c kiÓu ®ãng vá kh¸c nhau, ch¼ng h¹n nh− hai hµng ch©n DIP (Dual In-Line Pakage) d¹ng vá dÑt vu«ng QFP (Quad Flat Pakage) vµ d¹ng chÝp kh«ng cã ch©n ®ì LLC (Leadless Chip Carrier) th× chóng ®Òu cã 40 ch©n cho c¸c chøc n¨ng kh¸c nhau nh− vµo ra I/0, ®äc RD , ghi WR , ®Þa chØ, d÷ liÖu vµ ng¾t. CÇn ph¶i l−u ý r»ng mét sè h·ng cung cÊp mét phiªn b¶n 8051 cã 20 ch©n víi sè cæng vµo-ra Ýt h¬n cho c¸c øng dông yªu cÇu thÊp h¬n. Tuy nhiªn, v× hÇu hÕt c¸c nhµ ph¸t triÓn chÝnh sö dông chÝp ®ãng vá 40 ch©n víi hai hµng ch©n DIP nªn ta chØ tËp chung m« t¶ phiªn b¶n nµy. P1. 1 4 Vc P1. 2 3 P0.0 P1. 3 3 P0.1 P1.3 4 3 P0.2 P1. 5 3 P0.3 P1. 6 3 P0.4 P1. 7 3 P0.5 P1. 8 8051 3 P0.6 RST 9 3 P0.6 (RXD) 1 (8031 3 EA/CP (TXD) 1 ) 3 ALE/PRO (NT0) 1 2 PSEN (NT1) 1 2 P2.7 (T0) 1 2 P2.6 (T1) 1 2 P2.5 (WR) 1 2 P2.4(A1 (RD) 1 2 P2.3 XTAL 1 2 P2.2 XTAL1 1 2 P2.1 GND 2 2 P2.0 H×nh 4.1: S¬ ®å bè trÝ ch©n cña 8051. Trªn h×nh 4.1 lµ s¬ ®å bè trÝ ch©n cña 8051. Ta thÊy r»ng trong 40 ch©n th× cã 32 ch©n dµnh cho c¸c cæng P0, P1, P2 vµ P3 víi mçi cæng cã 8 ch©n. C¸c ch©n cßn l¹i ®−îc dµnh cho nguån VCC, ®Êt GND, c¸c ch©ngiao ®éng XTAL1 vµ XTAL2 t¸i lËp RST cho phÐp chèt ®Þa chØ ALE truy cËp ®−îc ®Þa chØ ngoµi EA , cho phÐp cÊt ch−¬ng tr×nh PSEN . Trong 8 ch©n nµy th× 6 ch©n VCC , GND, XTAL1, XTAL2, RST vµ EA ®−îc c¸c hä 8031 vµ 8051 sö dông. Hay nãi c¸ch kh¸c lµ chóng ph¶i ®−îc Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -2- LËp tr×nh 8051 nèi ®Ó cho hÖ thèng lµm viÖc mµ kh«ng cÇn biÕt bé vi ®iÒu khiÓn thuéc hä 8051 hay 8031. Cßn hai ch©n kh¸c lµ PSEN vµ ALE ®−îc sö dông chñ yÕu trong c¸c hÖ thèng dùa trªn 8031. 1. Ch©n VCC: Ch©n sè 40 lµ VCC cÊp ®iÖn ¸p nguån cho chÝp. Nguån ®iÖn ¸p lµ +5V. 2. Ch©n GND: Ch©n GND: Ch©n sè 20 lµ GND. 3. Ch©n XTAL1 vµ XTAL2: 8051 cã mét bé giao ®éng trªn chÝp nh−ng nã yªu cÇu cã mét xung ®ång hå ngoµi ®Ó ch¹y nã. Bé giao ®éng th¹ch anh th−êng xuyªn nhÊt ®−îc nèi tíi c¸c ch©n ®Çu vµo XTAL1 (ch©n 19) vµ XTAL2 (ch©n 18). Bé giao ®éng th¹ch anh ®−îc nèi tíi XTAL1 vµ XTAL2 còng cÇn hai tô ®iÖn gi¸ trÞ 30pF. Mét phÝa cña tô ®iÖn ®−îc nèi xuèng ®Êt nh− ®−îc tr×nh bµy trªn h×nh 4.2a. CÇn ph¶i l−u ý r»ng cã nhiÒu tèc ®é kh¸c nhau cña hä 8051. Tèc ®é ®−îc coi nh− lµ tÇn sè cùc ®¹i cña bé giao ®éng ®−îc nèi tíi ch©n XTAL. VÝ dô, mét chÝp 12MHz hoÆc thÊp h¬n. T−¬ng tù nh− vËy th× mét bé vi ®iÒu khiÓn còng yªu cÇu mét tinh thÓ cã tÇn sè kh«ng lín h¬n 20MHz. Khi 8051 ®−îc nèi tíi mét bé giao ®éng tinh thÓ th¹ch anh vµ cÊp nguån th× ta cã thÓ quan s¸t tÇn sè trªn ch©n XTAL2 b»ng m¸y hiÖn sãng. NÕu ta quyÕt ®Þnh sö dông mét nguån tÇn sè kh¸c bé giao ®éng th¹ch anh ch¼ng h¹n nh− lµ bé giao ®éng TTL th× nã sÏ ®−îc nèi tíi ch©n XTAL1, cßn ch©n XTAL2 th× ®Ó hë kh«ng nèi nh− h×nh 4.2b. C2 XTAL2 XTAL2 NC C1 EXTERRNAL XTAL1 OSCILLATA XTAL1 30pF OR SIGNAL GND GND H×nh 4.2: a) Nèi XTAL tíi 8051 b) Nèi XTAL tíi nguån ®ång bé ngoµi. 4. Ch©n RST. Ch©n sè 9 lµ ch©n t¸i lËp RESET. Nã lµ mét ®Çu vµo vµ cã møc tÝch cùc cao (b×nh th−êng ë møc thÊp). Khi cÊp xung cao tíi ch©n nµy th× bé vi ®iÒu khiÓn sÏ t¸i lËp vµ kÕt thóc mäi ho¹t ®éng. §iÒu nµy th−êng ®−îc coi nh− lµ sù t¸i bËt nguån. Khi kÝch ho¹t t¸i bËt nguån sÏ lµm mÊt mäi gi¸ trÞ trªn c¸c thanh ghi. B¶ng 4.1 cung cÊp mét c¸ch liÖt kª c¸c thanh ghi cña 8051 vµ c¸c gi¸ trÞ cña chóng sau khi t¸i bËt nguån. B¶ng 4.1: Gi¸ trÞ mét sè thanh ghi sau RESET. Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -3- LËp tr×nh 8051 Register Reset Value PC 0000 ACC 0000 B 0000 PSW 0000 SP 0000 DPTR 0007 0000 L−u ý r»ng gi¸ trÞ cña bé ®Õm ch−¬ng tr×nh PC lµ 0 khi t¸i lËp ®Ó Ðp CPU n¹p m· lÖnh ®Çu tiªn tõ bé nhí ROM t¹i vÞ trÝ ng¨n nhí 0000. §iÒu nµy cã nghÜa lµ ta ph¶i ®Æt dßng ®Çu tiªn cña m· nguån t¹i vÞ trÝ ng¨n nhí 0 cña ROM v× ®©y lµ m· CPU tÜnh thøc vµ t×m lÖnh ®Çu tiªn. H×nh 4.3 tr×nh bµy hai c¸ch nèi ch©n RST víi m¹ch bËt nguån. Vcc Vcc ------------------------ 31 + 30µF EA/Vpp 10µF EA/Vpp 10µF 31 19 X1 X1 11.0592 8.2 30µF 18 MHz K X2 X2 RST 9 RST 9 8.2 K H×nh 4.3: a) M¹ch t¸i bËt nguån RESET. b) M¹ch t¸i bËt nguån víi Debounce. Nh»m lµm cho ®Çu vµo RESET cã hiÖu qu¶ th× nã ph¶i cã tèi thiÓu 2 chu kú m¸y. Hay nãi c¸ch kh¸c, xung cao ph¶i kÐo dµi tèi thiÓu 2 chu kú m¸y tr−íc khi nã xuèng thÊp. Trong 8051 mét chu kú m¸y ®−îc ®Þnh nghÜa b»ng 12 chu kú dao ®éng nh− ®· nãi ë ch−¬ng 3 vµ ®−îc tr×nh bµy t¹i vÞ trÝ 4.1. 5. Ch©n EA : C¸c thµnh viªn hä 8051 nh− 8751, 98C51 hoÆc DS5000 ®Òu cã ROM trªn chÝp l−u cÊt ch−¬ng tr×nh. Trong c¸c tr−êng hîp nh− vËy th× ch©n EA ®−îc nèi tíi VCC. §èi víi c¸c thµnh viªn cñ hä nh− 8031 vµ 8032 mµ kh«ng cã ROM trªn chÝp th× m· ch−¬ng tr×nh ®−îc l−u cÊt ë trªn bé nhí ROM ngoµi vµ chóng ®−îc n¹p cho 8031/32. Do vËy, ®èi víi 8031 th× ch©n EA ph¶i ®−îc nèi ®Êt ®Ó b¸o r»ng m· ch−¬ng tr×nh ®−îc cÊt ë ngoµi. EA cã nghÜa lµ truy cËp ngoµi (External Access) lµ ch©n sè 31 trªn vá kiÓu DIP. Nã lµ mét ch©n ®Çu vµo vµ ph¶i ®−îc nèi hoÆc víi VCC hoÆc GND. Hay nãi c¸ch kh¸c lµ nã kh«ng ®−îc ®Ó hë. Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -4- LËp tr×nh 8051 ë ch−¬ng 14 chóng ta sÏ tr×nh bµy c¸ch 8031 sö dông ch©n nµy kÕt hîp víi PSEN ®Ó truy cËp c¸c ch−¬ng tr×nh ®−îc cÊt trªn bé nhí ROM ë ngoµi 8031. Trong c¸c chÝp 8051 víi bé nhí ROM trªn chÝp nh− 8751, 89C51 hoÆc DS5000 th× EA ®−îc nèi víi VCC. VÝ dô 4: H·y t×m chu kú m¸y ®èi víi a) XTAL = 11.0592MHz b) XTAL = 16MHz. Lêi gi¶i: a) 11.0592MHz/12 = 921.6kHz. Chu kú m¸y = 1/921.6kHz = 1.085µs. b) 16MHz/12 = 1.333MHz Chu kú m¸y = 1/1.333MHz = 0.75µs. C¸c ch©n m« t¶ trªn ®©y ph¶i ®−îc nèi mµ kh«ng cÇn thµnh viªn nµo ®−îc sö dông. Cßn hai ch©n d−íi ®©y ®−îc sö dông chñ yÕu trong hÖ thèng dùa trªn 8031 vµ sÏ ®−îc tr×nh bµy chi tiÕt ë ch−¬ng 11. 6. Ch©n PSEN : §©y lµ ch©n ®Çu ra cho phÐp cÊt ch−¬ng tr×nh (Program Store Enable) trong hÖ thèng dùa trªn 8031 th× ch−¬ng tr×nh ®−îc cÊt ë bé nhí ROM ngoµi th× ch©n nµy ®−îc nèi tíi ch©n OE cña ROM. Chi tiÕt ®−îc bµn ë ch−¬ng 14. 7. Ch©n ALE: Ch©n cho phÐp chèt ®Þa chØ ALE lµ ch©n ®Çu ra vµ ®−îc tÝch cùc cao. Khi nèi 8031 tíi bé nhí ngoµi th× cæng 0 còng ®−îc cÊp ®Þa chØ vµ d÷ liÖu. Hay nãi c¸ch kh¸c 8031 dån ®Þa chØ vµ d÷ liÖu qua cæng 0 ®Ó tiÕt kiÖm sè ch©n. Ch©n ALE ®−îc sö dông ®Ó ph©n kªnh ®Þa chØ vµ d÷ liÖu b»ng c¸ch nèi tíi ch©n G cña chÝp 74LS373. §iÒu nµy ®−îc nãi chi tiÕt ë ch−¬ng 14. 8. C¸c ch©n cæng vµo ra vµ c¸c chøc n¨ng cña chóng. Bèn cæng P0, P1, P2 vµ P3 ®Òu sö dông 8 ch©n vµ t¹o thµnh cæng 8 bÝt. TÊt c¶ c¸c cæng khi RESET ®Òu ®−îc cÊu h×nh nh− c¸c ®Çu ra, s½n sµng ®Ó ®−îc sö dông nh− c¸c cæng ®Çu ra. Muèn sö dông cæng nµo trong sè c¸c cæng nµy lµm ®Çu vµo th× nã ph¶i ®−îc lËp tr×nh. 9. Cæng P0. Cæng 0 chiÕm tÊt c¶ 8 ch©n (tõ ch©n 32 ®Õn 39). Nã cã thÓ ®−îc dïng nh− cæng ®Çu ra, ®Ó sö dông c¸c ch©n cña cæng 0 võa lµm ®Çu ra, võa lµm ®Çu vµo th× mçi ch©n ph¶i ®−îc nèi tíi mét ®iÖn trë kÐo bªn ngoµi 10kΩ. §iÒu nµy lµ do mét thùc tÕ lµ cæng P0 lµ mét mµng më kh¸c víi c¸c cæng P1, P2 vµ P3. Kh¸i niÖm m¸ng më ®−îc sö dông trong c¸c chÝp MOS vÒ chõng mùc nµo ®ã nã gièng nh− C«-lec-t¬ hë ®èi víi c¸c chÝp TTL. Trong bÊt kú hÖ thèng nµo sö dông 8751, 89C51 hoÆc DS5000 ta th−êng nèi cæng P0 tíi c¸c ®iÖn trë kÐo, Xem h×nh 4.4 b»ng c¸ch nµy ta cã ®−îc c¸c −u ®iÓm cña cæng P0 cho c¶ ®Çu ra vµ ®Çu vµo. Víi nh÷ng ®iÖn trë kÐo ngoµi ®−îc nèi khi t¸i lËp cæng P0 ®−îc cÊu h×nh nh− mét cæng ®Çu ra. VÝ dô, ®o¹n m· sau ®©y sÏ liªn tôc göi ra cæng P0 c¸c gi¸ trÞ 554 vµ AAH. MOV A, #554 BACK: MOV P0, A ACALL DELAY Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -5- LËp tr×nh 8051 CPL A SJMP BACK Vc c 10 K P0. DS500 P0. Port 0 P0. 0 8751 P0.3 8951 P0. P0. P0. P0. H×nh 4.4: Cæng P0 víi c¸c ®iÖn trë kÐo. a) Cæng P0 ®Çu vµo: Víi c¸c ®iÖn trë ®−îc nèi tíi cæng P0 nh»m ®Ó t¹o nã thµnh cæng ®Çu vµo th× nã ph¶i ®−îc lËp tr×nh b»ng c¸ch ghi 1 tíi tÊt c¶ c¸c bit. §o¹n m· d−íi ®©y sÏ cÊu h×nh P0 lóc ®Çu lµ ®Çu vµo b»ng c¸ch ghi 1 ®Õn nã vµ sau ®ã d÷ liÖu nhËn ®−îc tõ nã ®−îc göi ®Õn P1. b) MOV A,#FFH ; G¸n A = FF d¹ng Hex MOV P0, A ; T¹o cæng P0 lµm cæng ®Çu vµo b»ng c¸ch ; Ghi tÊt c¶ c¸c bit cña nã. BACK: MOV A, P0 ; NhËn d÷ liÖu tõ P0 MOV P1, A ; Göi nã ®Õn cæng 1 SJMP BACK ; LÆp l¹i b) Vai trß kÐp cña cæng P0: Nh− tr×nh bµy trªn h×nh 4.1, cæng P0 ®−îc g¸n AD0 - AD7 cho phÐp nã ®−îc sö dông võa cho ®Þa chØ, võa cho d÷ liÖu. Khi nèi 8051/31 tíi bé nhí ngoµi th× cæng 0 cung cÊp c¶ ®Þa chØ vµ d÷ liÖu 8051 dån d÷ liÖu vµ ®Þa chØ qua cæng P0 ®Ó tiÕt kiÖm sè ch©n. ALE b¸o nÕu P0 cã ®Þa chØ hay d÷ liÖu khi ALE - 0 nã cÊp d÷ liÖu D0 - D7. Do vËy, ALE ®−îc sö dông ®Ó t¸ch ®Þa chØ vµ d÷ liÖu víi sù trî gióp cña chèt 74LS373 mµ ta sÏ biÕt cô thÓ ë ch−¬ng 14. 10. Cæng P1. Cæng P1 còng chiÕm tÊt c¶ 8 ch©n (tõ ch©n 1 ®Õn ch©n 8) nã cã thÓ ®−îc sö dông nh− ®Çu vµo hoÆc ®Çu ra. So víi cæng P0 th× cæng nµy kh«ng cÇn ®Õn ®iÖn trë kÐo v× nã ®· cã c¸c ®iÖn trë kÐo bªn trong. Trong qu¸ tr×nh t¸i l¹p th× cæng P1 ®−îc cÊu h×nh nh− mét cæng ®Çu ra. VÝ dô, ®o¹n m· sau sÏ göi liªn tôc c¸c gi¸ trÞ 55 vµ AAH ra cæng P1. MOV A, #55H Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -6- LËp tr×nh 8051 BACK: MOV P1, A ACALL DELAY SJMP BACK Cæng P1 nh− ®Çu vµo: §Ó biÕn cæng P1 thµnh ®Çu vµo th× nã ph¶i ®−îc lËp tr×nh b»ng c¸ch ghi mét ®Õn tÊt c¶ c¸c bit cña nã. Lý do vÒ ®iÒu nµy ®−îc bµn ë môc lôc Appendix C.2. Trong ®o¹n m· sau, cæng P1 lóc ®Çu ®−¬c cÊu h×nh nh− cæng ®Çu vµo b»ng c¸ch ghi 1 vµo c¸c bit cña nã vµ sau ®ã d÷ liÖu nhËn ®−îc tõ cæng nµy ®−îc cÊt vµo R7, R6 vµ R5. MOV A, #0FFH ; N¹p A = FF ë d¹ng hex MOV P1, A ; T¹o cæng P1 thµnh cæng ®Çu vµo b»ng ; c¸ch ghi 1 vµo c¸c bit cña nã. MOV A, P1 ; NhËn d÷ liÖu tõ P1 MOV R7, A ; CÊt nã vµo thanh ghi R7 ACALL DELAY ; Chê MOV A, P1 ; NhËn d÷ liÖu kh¸c tõ P1 MOV R6, A ; CÊt nã vµo thanh ghi R6 ACALL DELAY ; Chê MOV A, P1 ; NhËn d÷ liÖu kh¸c tõ cæng P1 MOV R5, A ; CÊt nã vµo thanh ghi R5 11. Cæng P2: Cæng P2 còng chiÕm 8 ch©n (c¸c ch©n tõ 21 ®Õn 28). Nã cã thÓ ®−îc sö dông nh− ®Çu vµo hoÆc ®Çu ra gièng nh− cæng P1, cæng P2 còng kh«ng cÇn ®iÖn trë kÐo v× nã ®· cã c¸c ®iÖn trë kÐo bªn trong. Khi t¸i lËp, th× cæng P2 ®−îc cÊu h×nh nh− mét cæng ®Çu ra. VÝ dô, ®o¹n m· sau sÏ göi liªn tôc ra cæng P2 c¸c gi¸ trÞ 55H vµ AAH. §ã lµ tÊt c¶ c¸c bit cña P2 lªn xuèng liªn tôc. MOV A, #55H BACK: MOV P2,A ACALL DELAY CPL A SJMP BACK a) Cæng P2 nh− ®Çu vµo. §Ó t¹o cæng P2 nh− ®Çu vµo th× nã ph¶i ®−îc lËp tr×nh b»ng c¸ch ghi c¸c sè 1 tíi tÊt c¶ c¸c ch©n cña nã. §o¹n m· sau ®©y ®Çu tiªn cÊu hinh P2 lµ cæng vµo b»ng c¸ch ghi mét ®Õn tÊt c¶ c¸c ch©n cña nã vµ sau ®ã d÷ liÖu nhËn ®−îc tõ P2 ®−îc göi liªn tôc ®Õn P1. MOV A, 0FFH ; G¸n A gi¸ trÞ FF d¹ng Hex MOV P2, A ; T¹o P2 lµ cæng ®Çu vµo b»ng c¸ch ; ghi mét ®Õn c¸c ch©n cña nã BACK: MOV A, 2 ; NhËn d÷ liÖu tõ P2 Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -7- LËp tr×nh 8051 MOV P1, A ; Göi nã ®Õn P1 SJMP BACK ; LÆp l¹i b) Vai trß kÐp cña P2. Trong c¸c hÖ thèng dùa trªn 8751, 89C51 vµ DS5000 th× P2 ®−îc dïng nh− ®Çu ra ®¬n gi¶n. Tuy nhiªn trong hÖ thèng dùa trªn 80312 th× cæng P2 ph¶i ®−îc dïng cïng víi P0 ®Ó t¹o ra ®Þa chØ 16 brt ®èi víi bé nhí ngoµi. Nh− chØ ra trªn h×nh 4.1 cæng P2 còng ®−îc chØ ®Þnh nh− lµ A8 - A15 b¸o chøc n¨ng kÐp cña nã. V× mét bé 8031 cã kh¶ n¨ng trung cËp 64k byte bé nhí ngoµi, nã cÇn mét ®−êng ®Þa chØ 16 bÝt. Trong khi P.0 cung cÊp 8 bit thÊp qua A0 - A7. C«ng viÖc cña P2 lµ cung cÊp c¸c bÝt ®Þa chØ A8 - A15. Hay nãi c¸ch kh¸c khi 8031®−îc nèi tíi bé nhí ngoµi th× P2 ®−îc dïng cho 8 bÝt cña ®Þa chØ 16 bit vµ nã kh«ng thÓ dïng cho vµo ra. §iÒu nµy sÏ ®−îc tr×nh bµy chi tiÕt ë ch−¬ng 14. Tõ nh÷ng tr×nh bµy trªn ®©y ta cã thÓ kÕt luËn r»ng trong c¸c hÖ thèng dùa trªn c¸c bé vi ®iÒu khiÓn 8751, 89C51 hoÆc DS5000 th× ta cã 3 cèng P0, P1vµ P2 cho c¸c thao t¸c vµo ra vµ nh− thÕ lµ cã thÓ ®ñ cho c¸c øng dông víi hÇu hÕt c¸c bé vi ®iÒu khiÓn. Cßn cÊp P3 lµ®Ó dµnh cho ng¾t vµ ta sÏ cïng bµn d−íi ®©y. 11 - Cæng P3: Cæng P3 chiÕm tæng céng lµ 8 ch©n tõ ch©n 10 ®Õn ch©n 17. Nã cã thÓ ®−îc sö dông nh− ®Çu vµo hoÆc ®Çu ra. Cèng P3 kh«ng cÇn c¸c ®iÖn trë kÐo còng nh− P1 vµ P2. MÆc dï cèng P3 ®−îc cÊu h×nh nh− mét cèng ®Çu ra khi t¸i lËp, nh−ng ®©y kh«ng ph¶i lµ c¸ch nã ®−îc øng dông phæ biÕn nhÊt. Cèng P3 cã chøc n¨ng bæ xung lµ cung cÊp mét sè tÝn hiÖu quan träng ®Æc biÖt ch¼ng h¹n nh− c¸c ng¾t. B¶ng 4.2 cung cÊp c¸c chøc n¨ng kh¸c cña cèng P3. Th«ng tin nµy ¸p dông cho c¶ 8051 vµ 8031. B¶ng 4.2: C¸c chøc n¨ng kh¸c cña cèng P3 BÝt cña cèng P3 Chøc n¨ng ch©n sè P3.0 NhËn d÷ liÖu (RXD) 10 P3.1 Ph¸t d÷ liÖu (TXD) 11 P3.2 Ng¾t 0(INT0) 12 P3.3 Ng¾t 1(INT1) 13 P3.4 Bé ®Þnh thêi 0 (TO) 14 P3.5 1 Bé ®Þnh thêi 1(T1) 15 P3.6 Ghi (WR) 16 P3.7 §äc (RD) 17 C¸c bit P3.0 vµ P3.1 ®−îc dïng cho c¸c tÝn hiÖu nhËn vµ ph¸t d÷ liÖu trong truyÒn th«ng d÷ liÖu nèi tiÕp. Xem ch−¬ng 10 ®Õt biÕt c¸c chóng ®−îc nèi ghÐp nh− thÕ nµo. C¸c bit P3.2 vµ P3.3 ®−îc dµnh cho c¸c ng¾t ngoµi vµ chóng ®−îc tr×nh bµy chi tiÕt ë ch−¬ng 11. Bit P3.4 vµ P3.5 ®−îc dïng cho c¸c bé ®Þnh thªm 0 vµ 1vµ chi tiÕt ®−îc tr×nh bµy ë ch−¬ng 9. Cuèi cïng c¸c bit P3.6 vµ P3.7 ®−îc cÊp cho c¸c tÝn hiÖu ghi vµ ®äc c¸c bé nhí ngoµi ®−îc nèi tíi c¸c hÖ thèng dùa trªn 8031. Ch−¬ng 14 sÏ tr×nh bµy c¸ch chóng ®−îc sö dông nh− thÕ nµo trong c¸c hÖ thèng dùa trªn 8031. Trong c¸c hÖ thèng dùa trªn 8751, 89C51 hoÆc D35000 th× c¸c ch©n P3.6 vµ Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -8- LËp tr×nh 8051 P3.7 ®−îc dïng cho vµo - ra cßn c¸c ch©n kh¸c cña P3 ®−îc sö dông b×nh th−êng trong vai trß chøc n¨ng thay ®æi. 4.2 LËp tr×nh vµo - ra: thao t¸c bit. 4.2.1 c¸c c¸ch kh¸c nhau ®Ó truy cËp toµn bé 8 bit. Trong ®o¹n mµ d−íi ®©y còng nh− trong nhiÒu vÝ dô vµo ra tr−íc ®©y toµn bé 8 bit cña cæng P1 ®−îc cËp. BACK: MOV A, # 55H MOV P1,A ACALL DELAY MOV A, #0AAH MOV P1, A ACALL DELAY SJMP BACK §o¹n mµ trªn chèt mçi bit cña P1 mét c¸ch liªn tôc. Chóng ta ®· th¾ng mét biÕn thÕ cña ch−¬ng tr×nh trªn tr−íc ®ã. B©y giê ta cã thÓ viÕt l¹i ®o¹n m· trªn theo c¸ch hiÖu qu¶ h¬n b»ng c¸ch truy cËp trùc tiÕp cæng mµ kh«ng qua thanh ghi tæng nh− sau: BACK: MOV P1, # 55H ACALL DELAY MOV P1, #00H CALL DELAY SJMP BACK Ta cã thÓ viÕt mét d¹ng kh¸c cña ®o¹n mµ trªn b»ng kü thuËt ®äc - söa ®æi ghi nh− ë môc 4.2.2 d−íi ®©y. 4.2.2 §Æc ®iÓm §äc- söa ®æi - ghi (Read - Modify Write). C¸c cèng trong 8051 cã thÓ ®−îc truy cËp b»ngkü thuËt ®−îc gäi lµ §äc-söa ®æi-ghi. §Æc ®iÓm nµy tiÕt kiÖm rÊt nhiÒu dßng lÖnh b»ng c¸ch kÕt hîp tÊt c¶ 3 thao t¸c: 1®äc cèng, 2 söa ®æi nãvµ 3 ghi nã ra cèng vµo mét lÖnh ®¬n. §o¹n mµ d−íi ®©y tr−íc hÕt ®Æt 01010101(nhÞ ph©n) vµo cèng 1. Sau ®ãlÖnh “XLR P1, #0FFH” thùc hiÖn phÐp l«-gÝch OR lo¹i trõ lµ XOR trªn cèng p1 víi 1111 1111 ( nhÞ ph©n ) vµ sau ®ã ghi kÕt qu¶ trë l¹i cèng P1. MOV P1, #55H ; P1 = 01010101 AGAIN: XLR P1,# 0FFH ; EX - 0R P1 víi 1111 1111 ACALL DELAY SJMP AGAIN L−u ý r»ng lÖnh X0R cña 55H vµ FFH sÏ cho kÕt qu¶ lµ AAH. T−¬ng tù nh− vËy lÖnh X0R cña AAH víi FFH l¹i cho gi¸ trÞ kÕt qu¶ lµ 55H. C¸c lÖnh l«-gÝch ®−îc tr×nh bµy ë ch−¬ng 7. 4.2.3. Kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt cña c¸c cèng Ch−¬ng IV: LËp tr×nh cho cæng vµo ra IO -9- LËp tr×nh 8051 Cã nhiÒu lóc chóng ta cÇn truy cËp chØ 1 hoÆc2 bÝt cña cèng thay v× truy cËp c¶ 8 bit cña cæng. Mét ®iÓm m¹nh cña c¸c cæng 8051 lµ chóng cã kh¶ n¨ng truy cËp tõng bÝt riªng rÏ mµ kh«ng lµm thay ®æi c¸c bÝt cßn l¹i trong cæng ®ã vÝ dô, ®o¹n mµ d−íi ®©y chèt bit P1.2 liªn tôc: BACK: CPL P1.2 ; LÊy bï 2 chØ riªng bit P1.2 ACALL DELAY SJMP BACK Mét biÕn thÓ kh¸c cña ®o¹n m· trªn lµ: AGACN: SETB P1.2 ; ChØ thay ®æi bÝt P1.2 lªn cao ACALL DELAY CLR P1.2 ; Xo¸ bÝt P1.2 xuèng thÊp ACALL DELAY SJMP AGAIN L−u ý r»ng bÝt P1.2 lµ bÝt thø 3 cña cæng P1, v× bÝt thø nhÊt lµ P1.0 vµ bit thø hai lµ P1.1 v.v... B¶ng 4.3 tr×nh bµy c¸c bÝt cña c¸c cæng vµo ra cña 8051. Xem vÝ dô 4.2 vÒ thao t¸c bÝt cña c¸c bÝt vµo - ra. L−u ý r»ng trong vÝ dô 4.2 c¸c bit kh«ng dïng ®Õn lµ kh«ng bÞ ¶nh h−ëng. §©y lµ kh¶ n¨ng ®¸nh ®Þa chØ theo bit cña c¸c cæng vµo - ra vµ lµ mét trong nh÷ng ®iÓm m¹nh nhÊt cña bé vi ®iÒu khiÓn 8051. VÝ dô 4.2: h·y viÕt ch−¬ng tr×nh thùc hiÖn c¸c c«ng viÖc sau: a) Duy tr× hiÓn thÞ bit P1.2 cho ®Õn khi nã lªn c¸p b) Khi P1.2 lªn cao, h·y ghi gi¸ trÞ 45H vµo cæng P0 c) Göi mét xung cao xuèng thÊp (H-to-L) tíi P2.3 Lêi gi¶i: SET P1.2 ; T¹o bit P1.2 lµ ®Çu vµo MOV A, #45H ; G¸n A = 45H AGAIN: JNB P1.2, AGAIN ; Tho¸t khi P1.2 = 1 MOV P0, A ; XuÊt A tíi cæng P0 SETB P2.3 ; §-a P2.3 lªn cao CLR P2.3 ; T¹o P2.3 xuèng thÊp ®Ó cã xung H-T0-L Trong ch−¬ng tr×nh nµy lÖnh “JNB P1.2, AGCN” (JNB cã nghÜa lµ nh¶y nÕu kh«ng bit) ë l¹i vßng lÆp cho ®Õn khi P1.2 ch−a lªn cao. Khi P1.2 lªn cao nã tho¸t ra khái vßng lÆp ghi gi¸ trÞ 45H tíi cæng P0 vµ t¹o ra xung H-to-L b»ng chuçi c¸c lÖnh SETB vµ CLR.
DMCA.com Protection Status Copyright by webtailieu.net