intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 7 - Ngắt và xử lý ngắt trong hệ 8088

Chia sẻ: Kun | Ngày: | Loại File: PDF | Số trang:27

202
lượt xem
47
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong cách tổ chức trao đổi dữ liệu thông qua việc thăm dò trạng thái sẵn sàng của thiết bị ngoại vi nh- đã đ-ợc trình bày ở ch-ơng tr-ớc, tr-ớc khi tiến hành bất kỳ một cuộc trao đổi dữ liệu nào CPU phải để toàn bộ thời gian vào việc xác định trạng thái sẵn sàng làm việc của thiết bị ngoại vi. Trong hệ thống vi xử lý với cách làm việc nh- vậy, thông th-ờng CPU đ-ợc thiết kế chủ yếu chỉ là để phục vụ cho việc vào/ra dữ liệu và thực hiện các...

Chủ đề:
Lưu

Nội dung Text: Chương 7 - Ngắt và xử lý ngắt trong hệ 8088

  1. Ch−¬ng 7 ng¾t vμ xö lý ng¾t trong hÖ 8088 1. Sù cÇn thiÕt ph¶i ng¾t CPU Trong c¸ch tæ chøc trao ®æi d÷ liÖu th«ng qua viÖc th¨m dß tr¹ng th¸i s½n sμng cña thiÕt bÞ ngo¹i vi nh− ®· ®−îc tr×nh bμy ë ch−¬ng tr−íc, tr−íc khi tiÕn hμnh bÊt kú mét cuéc trao ®æi d÷ liÖu nμo CPU ph¶i ®Ó toμn bé thêi gian vμo viÖc x¸c ®Þnh tr¹ng th¸i s½n sμng lμm viÖc cña thiÕt bÞ ngo¹i vi. Trong hÖ thèng vi xö lý víi c¸ch lμm viÖc nh− vËy, th«ng th−êng CPU ®−îc thiÕt kÕ chñ yÕu chØ lμ ®Ó phôc vô cho viÖc vμo/ra d÷ liÖu vμ thùc hiÖn c¸c xö lý liªn quan. Trong thùc tÕ ng−êi ta rÊt muèn tËn dông kh¶ n¨ng cña CPU ®Ó lμm thªm ®−îc nhiÒu c«ng viÖc kh¸c n÷a, chØ khi nμo cã yªu cÇu trao ®æi d÷ liÖu th× míi yªu cÇu CPU t¹m dõng c«ng viÖc hiÖn t¹i ®Ó phôc vô viÖc trao ®æi d÷ liÖu. Sau khi hoμn thμnh viÖc trao ®æi d÷ liÖu th× CPU l¹i ph¶i quay vÒ ®Ó lμm tiÕp c«ng viÖc hiÖn ®ang bÞ gi¸n ®o¹n. C¸ch lμm viÖc theo kiÓu nμy gäi lμ ng¾t CPU (gi¸n ®o¹n ho¹t ®éng cña CPU) ®Ó trao ®æi d÷ liÖu. Mét hÖ thèng víi c¸ch ho¹t ®éng theo kiÓu nμy cã thÓ ®¸p øng rÊt nhanh víi c¸c yªu cÇu trao ®æi d÷ liÖu trong khi vÉn cã thÓ lμm ®−îc c¸c c«ng viÖc kh¸c. Muèn ®¹t ®−îc ®iÒu nμy ta ph¶i cã c¸ch tæ chøc hÖ thèng sao cho cã thÓ tËn dông ®−îc kh¶ n¨ng thùc hiÖn c¸c ch−¬ng tr×nh phôc vô ng¾t t¹i c¸c ®Þa chØ x¸c ®Þnh cña CPU. Khi nghiªn cøu c¸c tÝn hiÖu cña CPU 8088, chóng ta ®· thÊy vi m¹ch nμy cã c¸c ch©n tÝn hiÖu cho c¸c yªu cÇu ng¾t che ®−îc INTR vμ kh«ng che ®−îc NMI, 205
  2. chÝnh c¸c ch©n nμy sÏ ®−îc sö dông vμo viÖc ®−a c¸c yªu cÇu ng¾t tõ bªn ngoμi ®Õn CPU. 2. Ng¾t trong hÖ vi xö lý 8088 2.1. C¸c lo¹i ng¾t trong hÖ 8088 Trong hÖ vi xö lý 8088 cã thÓ xÕp c¸c nguyªn nh©n g©y ra ng¾t CPU vμo 3 nhãm nh− sau: + nhãm c¸c ng¾t cøng: ®ã lμ c¸c yªu cÇu ng¾t CPU do c¸c tÝn hiÖu ®Õn tõ c¸c ch©n INTR vμ NMI. Ng¾t cøng NMI lμ yªu cÇu ng¾t kh«ng che ®−îc t−¬ng ®−¬ng víi ng¾t mÒm INT 2. C¸c lÖnh CLI (xo¸ cê IF) vμ STI (lËp cê IF) kh«ng cã ¶nh h−ëng ®Õn viÖc nhËn biÕt tÝn hiÖu yªu cÇu ng¾t NMI. Ng¾t cøng INTR lμ yªu cÇu ng¾t che ®−îc. C¸c lÖnh CLI vμ STI cã ¶nh h−ëng trùc tiÕp tíi tr¹ng th¸i cña cê IF trong bé vi xö lý, tøc lμ ¶nh h−ëng tíi viÖc CPU cã nhËn biÕt yªu cÇu ng¾t t¹i ch©n nμy hay kh«ng. Yªu cÇu ng¾t t¹i ch©n INTR cã thÓ cã kiÓu ng¾t N n»m trong kho¶ng 0-FFH. KiÓu ng¾t nμy ph¶i ®−îc ®−a vμo bus d÷ liÖu ®Ó CPU cã thÓ ®äc ®−îc khi cã xung INTA trong chu kú tr¶ lêi chÊp nhËn ng¾t. BiÓu ®å thê× gian cña c¸c xung liªn quan ®Õn qu¸ tr×nh trªn ®−îc m« t¶ trªn h×nh 7.1. T1 T2 T3 T4 T1 T1 T1 T2 T3 T4 ALE LOCK N INTA AD0-AD7 bus bÞ th¶ næi (kiÓu ng¾t) H×nh 7.1. Chu kú tr¶ lêi ng¾t cña CPU 8088. 206
  3. + nhãm c¸c ng¾t mÒm: khi CPU thùc hiÖn c¸c lÖnh ng¾t d¹ng INT N, trong ®ã N lμ sè hiÖu (kiÓu) ng¾t n»m trong kho¶ng 00-FFH (0-255). + nhãm c¸c hiÖn t−îng ngo¹i lÖ: ®ã lμ c¸c ng¾t do c¸c lçi n¶y sinh trong qu¸ tr×nh ho¹t ®éng cña CPU nh− phÐp chia cho 0, x¶y ra trμn khi tÝnh to¸n... Yªu cÇu ng¾t sÏ ®−îc CPU kiÓm tra th−êng xuyªn t¹i chu kú ®ång hå cuèi cïng cña mçi lÖnh. Trªn h×nh 7.2 tr×nh bμy mét c¸ch ®¬n gi¶n ®Ó ®−a ®−îc sè hiÖu ng¾t N vμo bus d÷ liÖu trong khi còng t¹o ra yªu cÇu ng¾t ®−a vμo ch©n INTR cña bé vi xö lý 8088. 8088 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 OC1 INTA 'LS244 OC2 +5v INTR IR0 .. IR3 .. IR6 H×nh 7.2. Mét c¸ch ®¬n gi¶n ®Ó ®−a sè hiÖu ng¾t vμo bus d÷ liÖu Gi¶ thiÕt trong mét thêi ®iÓm nhÊt ®Þnh chØ cã mét yªu cÇu ng¾t IRi ®−îc t¸c ®éng vμ khi ®ã ë ®Çu ra cña m¹ch NAND sÏ cã xung yªu cÇu ng¾t ®Õn CPU. TÝn hiÖu IRi ®−îc ®ång thêi ®−a qua m¹ch khuÕch ®¹i ®Öm ®Ó t¹o ra sè hiÖu ng¾t t−¬ng øng, sè hiÖu ng¾t nμy sÏ ®−îc CPU ®äc vμo khi nã ®−a ra tÝn hiÖu tr¶ lêi INTA . B¶ng 7.1 cho ta quan hÖ gi÷a IRi vμ sè hiÖu ng¾t N t−¬ng øng. B¶ng 7.1 Quan hÖ gi÷a IRi vμ sè hiÖu ng¾t N AD7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 N 1 1 1 1 1 1 1 0 FEH (254) 1 1 1 1 1 1 0 1 FDH (253) 207
  4. 1 1 1 1 1 0 1 1 FBH (251) 1 1 1 1 0 1 1 1 F7H (247) 1 1 1 0 1 1 1 1 EFH (239) 1 1 0 1 1 1 1 1 DFH (223) 1 0 1 1 1 1 1 1 BFH (191) Ta sÏ cßn ®Ò cËp ®Õn viÖc xö lý tr−êng hîp cã 2 yªu cÇu ng¾t IRi cïng mét lóc vμ c¸ch ®−a c¸c gi¸ trÞ N cña INT N vμo bus d÷ liÖu mét c¸ch tù ®éng b»ng m¹ch ®iÒu khiÓn ng¾t PIC ë phÇn sau. 2.2. §¸p øng cña CPU khi cã yªu cÇu ng¾t Khi cã yªu cÇu ng¾t kiÓu N ®Õn ch©n CPU vμ nÕu yªu cÇu ®ã ®−îc phÐp, CPU thùc hiÖn c¸c c«ng viÖc sau: 1. SP ← SP-2, {SP} ← FR, trong ®ã {SP} lμ « nhí do SP chØ ra. (chØ ra ®Ønh míi cña ng¨n xÕp, cÊt thanh ghi cê vμo ®Ønh ng¨n xÕp) 2. IF ← 0 , TF ← 0. (cÊm c¸c ng¾t kh¸c t¸c ®éng vμo CPU, cho CPU ch¹y ë chÕ ®é b×nh th−êng) 3. SP ← SP-2, {SP} ← CS. (chØ ra ®Ønh míi cña ng¨n xÕp, cÊt phÇn ®Þa chØ ®o¹n cña ®Þa chØ trë vÒ vμo ®Ønh ng¨n xÕp) 4. SP ← SP-2, {SP} ← IP. (chØ ra ®Ønh míi cña ng¨n xÕp, cÊt phÇn ®Þa chØ lÖch cña ®Þa chØ trë vÒ vμo ®Ønh ng¨n xÕp) 5. {N*4} → IP, {N*4+2} → CS. (lÊy lÖnh t¹i ®Þa chØ míi cña ch−¬ng tr×nh con phôc vô ng¾t kiÓu N t−¬ng øng trong b¶ng vect¬ ng¾t) 6. T¹i cuèi ch−¬ng tr×nh phôc vô ng¾t, khi gÆp lÖnh IRET {SP} → IP, SP ← SP+2 {SP} → CS, SP ← SP+2 {SP} → FR, SP ← SP+2 (bé vi xö lý quay l¹i ch −¬ng tr×nh chÝnh t¹i ®Þa chØ trë vÒ vμ víi gi¸ trÞ cò cña thanh ghi cê ®−îc lÊy ra tõ ng¨n xÕp). VÒ mÆt cÊu tróc ch−¬ng tr×nh, khi cã ng¾t x¶y ra th× ch−¬ng tr×nh chÝnh (CTC) liªn hÖ víi ch−¬ng tr×nh con phôc vô ng¾t (CTCPVN) nh− m« t¶ trªn h×nh 7.3. Trong thùc tÕ c¸c ng¾t mÒm INT N ®· bao trïm c¸c lo¹i kh¸c bëi v× Intel ®· quy ®Þnh mét sè kiÓu ng¾t ®Æc biÖt ®−îc xÕp vμo ®Çu d·y ng¾t mÒm INT N nh− sau: + INT 0: Ng¾t mÒm do phÐp chia cho sè 0 g©y ra, + INT 1: Ng¾t mÒm ®Ó ch¹y tõng lÖnh øng víi tr−êng hîp cê TF=1, 208
  5. + INT 2: Ng¾t cøng do tÝn hiÖu tÝch cùc t¹i ch©n NMI g©y ra, + INT 3: Ng¾t mÒm ®Ó ®Æt ®iÓm dõng cña ch−¬ng tr×nh t¹i mét ®Þa chØ nμo ®ã + INT 4 (hoÆc lÖnh INTO): ng¾t mÒm øng víi tr−êng hîp cê trμn OF=1. C¸c kiÓu ng¾t kh¸c cßn l¹i th× ®−îc dμnh cho Intel vμ cho ng−êi sö dông (IBM kh«ng hoμn toμn tu©n thñ c¸c quy ®Þnh nμy khi chÕ t¹o c¸c m¸y PC/XT vμ PC/AT): + INT 5-INT 1FH: dμnh riªng cho Intel trong c¸c bé vi xö lý cao cÊp kh¸c, + INT 20H-INT FFH: dμnh cho ng−êi sö dông. C¸c kiÓu ng¾t N trong INT N ®Òu t−¬ng øng víi c¸c ®Þa chØ x¸c ®Þnh cña CTCPVN mμ ta cã thÓ tra ®−îc trong b¶ng c¸c vect¬ ng¾t. Intel quy ®Þnh b¶ng nμy n»m trong RAM b¾t ®Çu tõ ®Þa chØ 00000H vμ dμi 1 KB (v× 8088 cã tÊt c¶ 256 kiÓu ng¾t, mçi kiÓu ng¾t øng víi 1 vect¬ ng¾t, 1 vect¬ ng¾t cÇn 4 byte ®Ó chøa ®Þa chØ ®Çy ®ñ cho CS:IP cña CTCPVN). CTC ctcpvn (Th©n CTC) CPU tù: + cÊt thanh ghi F + xo¸ IF vμ TF lÖnh cÊt c¸c thanh ghi + cÊt CS, IP + lÊy ®Þa chØ ch−¬ng tr×nh phôc vô ng¾t (Th©n ctcpvn) CPU tù: + lÊy l¹i IP, CS + lÊy l¹i thanh ghi F lÖnh lÊy c¸c thanh ghi IRET H×nh 7.3. Liªn hÖ gi÷a CTC vμ CTCPVN khi cã ng¾t B¶ng 7.2. B¶ng vect¬ ng¾t cña 8088 t¹i 1KB RAM ®Çu tiªn 03FEH-03FFH CS cña CTPVN INT FFH 03FCH-03FDH IP cña CTPVN INT FFH 0082H- 0083H CS cña CTPVN INT 20H 0080H- 0081H IP cña CTPVN INT 20H 000AH- 000BH CS cña CTCPVN INT 2 209
  6. 0008H- 0009H IP cña CTCPVN INT 2 0006H- 0007H CS cña CTCPVN INT 1 0004H- 0005H IP cña CTCPVN INT 1 0002H- 0003H CS cña CTCPVN INT 0 0000H- 0001H IP cña CTCPVN INT 0 Trªn b¶ng 7.2 giíi thiÖu mét phÇn cña b¶ng vect¬ ng¾t cña CPU 8088. 2.3. Xö lý −u tiªn khi ng¾t Cã mét vÊn ®Ò rÊt thùc tÕ ®Æt ra lμ nÕu t¹i cïng mét thêi ®iÓm cã nhiÒu yªu cÇu ng¾t thuéc c¸c lo¹i ng¾t kh¸c nhau cïng ®ßi hái CPU phôc vô th× CPU xö lý c¸c yªu cÇu ng¾t ®ã nh− thÕ nμo? C©u tr¶ lêi lμ CPU xö lý c¸c yªu cÇu ng¾t theo thø tù −u tiªn víi nguyªn t¾c ng¾t nμo cã møc −u tiªn cao nhÊt sÏ ®−îc CPU nhËn biÕt vμ phôc vô tr−íc. Ngay tõ khi ®−îc chÕ t¹o (th−êng gäi lμ ngÇm ®Þnh) CPU 8088 cã kh¶ n¨ng ph©n biÖt c¸c møc −u tiªn kh¸c nhau cho c¸c lo¹i ng¾t (theo thø tù tõ cao xuèng thÊp) nh− sau: Møc −u tiªn + ng¾t néi bé: INT 0 (phÐp chia cho 0), INT N, INTO ...cao nhÊt + ng¾t kh«ng che ®−îc NMI + ng¾t che ®−îc INTR + ng¾t ®Ó ch¹y tõng lÖnh INT 1 ...thÊp nhÊt §Ó thÊy râ ho¹t ®éng cña CPU trong c¬ chÕ ng¾t −u tiªn nμy ta cã thÓ lÊy mét vÝ dô cô thÓ nh− sau. Gi¶ thiÕt t¹i mét thêi ®iÓm nμo ®ã, trong khi CPU (ë tr¹ng th¸i cho phÐp ng¾t víi cê IF=1) ®ang thùc hiÖn phÐp chia vμ cã lçi x¶y ra do sè bÞ chia b»ng 0, ®óng vμo lóc ®ã CPU còng nhËn ®−îc yªu cÇu ng¾t tõ ®Çu vμo INTR. CPU sÏ xö lý ra sao trong tr−êng hîp nμy? Theo thø tù −u tiªn ngÇm ®Þnh trong viÖc xö lý ng¾t cña CPU 8088 th× INT 0 cã møc −u tiªn cao h¬n INTR, v× vËy ®Çu tiªn CPU sÏ thùc hiÖn ch−¬ng tr×nh phôc vô ng¾t INT 0 ®Ó ®¸p øng víi lçi ®Æc biÖt do phÐp chia cho 0 g©y ra vμ cê IF bÞ xo¸ vÒ 0. Yªu cÇu ng¾t INTR sÏ tù ®éng bÞ cÊm cho tíi khi ch−¬ng tr×nh phôc vô ng¾t INT 0 ®−îc hoμn tÊt vμ trë vÒ nhê IRET, cê IF cò ®−îc tr¶ l¹i. TiÕp theo ®ã CPU sÏ ®¸p øng yªu cÇu ng¾t INTR b»ng c¸ch thùc hiÖn ch−¬ng tr×nh phôc vô ng¾t dμnh cho INTR. 210
  7. 2.4. M¹ch ®iÒu khiÓn ng¾t −u tiªn 8259A Trong tr−êng hîp cã nhiÒu yªu cÇu ng¾t che ®−îc tõ bªn ngoμi ph¶i phôc vô ta th−êng dïng vi m¹ch cã s½n 8259A ®Ó gi¶i quyÕt vÊn ®Ò −u tiªn. M¹ch 8259A ®−îc gäi lμ m¹ch ®iÒu khiÓn ng¾t −u tiªn (priority interrupt controller, PIC). §ã lμ mét vi m¹ch cì lín lËp tr×nh ®−îc, cã thÓ xö lý tr−íc ®−îc 8 yªu cÇu ng¾t víi 8 møc −u tiªn kh¸c nhau ®Ó t¹o ra mét yªu cÇu ng¾t ®−a ®Õn ®Çu vμo INTR (yªu cÇu ng¾t che ®−îc) §Öm cña CPU 8088. NÕu nèi tÇng 1 m¹ch 8259A chñ víiL8 gic ®iÒu khiÓn o m¹ch 8259A thî ta cã thÓ n©ng bus D tæng sè c¸c yªu cÇu ng¾t víi c¸c møc −u tiªn kh¸c nhau lªn thμnh 64. Logic Bus néi bé INTA INT ghi/®äc ISR PR IRR D0-D7 §Öm nèi tÇng vμ IMR so s¸nh (thanh ghi mÆt n¹ ng¾t) RD WR IR0 A0 IR1 : CS IR7 Cas0 Cas1 Cas2 SP/EN Ghi chó: IR0-IR7: C¸c yªu cÇu ng¾t IRR: Thanh ghi yªu cÇu ng¾t PR: Bé xö lý −u tiªn SP/EN: Slave program/Enable buffer (lËp tr×nh thμnh m¹ch thî/më ®Öm bus d÷ liÖu) ISR: Thanh ghi c¸c yªu cÇu ng¾t ®ang ®−îc phôc vô Cas0-Cas2: TÝn hiÖu nèi tÇng gi÷a c¸c PIC víi nhau H×nh 7.4. S¬ ®å khèi cña PIC 8259A. C¸c khèi chøc n¨ng chÝnh cña 8259A 211
  8. + Thanh ghi IRR: ghi nhí c¸c yªu cÇu ng¾t cã t¹i ®Çu vμo IRi. + Thanh ghi ISR: ghi nhí c¸c yªu cÇu ng¾t ®ang ®−îc phôc vô trong sè c¸c yªu cÇu ng¾t IRi. + Thanh ghi IMR: ghi nhí mÆt n¹ ng¾t ®èi víi c¸c yªu cÇu ng¾t IRi. + Logic ®iÒu khiÓn: khèi nμy cã nhiÖm vô göi yªu cÇu ng¾t tíi INTR cña 8088 khi cã tÝn hiÖu t¹i c¸c ch©n IRi vμ nhËn tr¶ lêi chÊp nhËn yªu cÇu ng¾t INTA tõ CPU ®Ó råi ®iÒu khiÓn viÖc ®−a ra kiÓu ng¾t trªn bus d÷ liÖu. + §Öm bus d÷ liÖu: dïng ®Ó phèi ghÐp 8259A víi bus d÷ liÖu cña CPU. + Logic ®iÒu khiÓn ghi/®äc: dïng cho viÖc ghi c¸c tõ ®iÒu khiÓn vμ ®äc c¸c tõ tr¹ng th¸i cña 8259A. + Khèi ®Öm nèi tÇng vμ so s¸nh: ghi nhí vμ so s¸nh sè hiÖu cña c¸c m¹ch 8259A cã mÆt trong hÖ vi xö lý. C¸c tÝn hiÖu cña 8259A: Mét sè tÝn hiÖu trong m¹ch 8259 cã tªn gièng nh− c¸c tÝn hiÖu tiªu chuÈn cña hÖ vi xö lý 8088. Ta cã thÓ thÊy râ vμ hiÓu ®−îc ý nghÜa cña chóng ngay trªn h×nh 7.4. Ngoμi c¸c tÝn hiÖu nμy ra, cßn cã mét sè tÝn hiÖu ®Æc biÖt kh¸c cña 8259A cÇn ph¶i giíi thiÖu thªm gåm: + Cas0-Cas2[I,O]: lμ c¸c ®Çu vμo ®èi víi c¸c m¹ch 8259A thî hoÆc c¸c ®Çu ra cña m¹ch 8259A chñ dïng khi cÇn nèi tÇng ®Ó t¨ng thªm c¸c yªu cÇu ng¾t cÇn xö lý. + SP/EN[I,O]: Khi 8259A lμm viÖc ë chÕ ®é kh«ng cã ®Öm bus d÷ liÖu th× ®©y lμ tÝn hiÖu vμo dïng lËp tr×nh ®Ó biÕn m¹ch 8259A thμnh m¹ch thî (SP=0) hoÆc chñ (SP=1); khi 8259A lμm viÖc trong hÖ vi xö lý ë chÕ ®é cã ®Öm bus d÷ liÖu th× ch©n nμy lμ tÝn hiÖu ra EN dïng më ®Öm bus d÷ liÖu ®Ó 8088 vμ 8259A th«ng vμo bus d÷ liÖu hÖ thèng. Lóc nμy viÖc ®Þnh nghÜa m¹ch 8259A lμ chñ hoÆc thî ph¶i thùc hiÖn th«ng qua tõ ®iÒu khiÓn khëi ®Çu ICW4. + INT [O]: TÝn hiÖu yªu cÇu ng¾t ®Õn ch©n INTR cña CPU 8088. + INTA [I]: Nèi víi tÝn hiÖu b¸o chÊp nhËn ng¾t INTA cña CPU. PIC 8259A chñ (ë chÕ ®é kh«ng ®Öm) nèi víi CPU 8088 ë chÕ ®é MIN Trªn h×nh 7.5 lμ s¬ ®å nèi m¹ch PIC 8259A lμm viÖc ®éc lËp (m¹ch chñ) víi bus cña CPU 8088 lμm viÖc ë chÕ ®é MIN. PIC 8259A chñ nèi víi CPU 8088 ë chÕ ®é MAX NÕu hÖ vi xö lý 8088 lμm viÖc ë chÕ ®é MAX th−êng ta ph¶i dïng m¹ch ®iÒu khiÓn bus 8288 vμ c¸c ®Öm bus ®Ó cung cÊp c¸c tÝn hiÖu thÝch hîp cho bus hÖ thèng. M¹ch 8259A ph¶i lμm viÖc ë chÕ ®é cã ®Öm ®Ó nèi ®−îc víi bus hÖ thèng nμy. 212
  9. Trªn h×nh 7.6 lμ vÝ dô mét s¬ ®å CPU 8088 chÕ ®é MAX nèi víi PIC 8259A. Trong m¹ch nμy ta nhËn thÊy tÝn hiÖu ®Þa chØ cho 8259A ®−îc lÊy ra tõ bus hÖ thèng, trong khi ®ã tÝn hiÖu d÷ liÖu cña nã ®−îc nèi víi bus d÷ liÖu cña vi xö lý vμ tõ ®ã ®−îc th«ng qua c¸c ®Öm ®Ó nèi vμo bus hÖ thèng. 8259A D0-D7 D0-D7 IR0 Bus : hÖ RD : c¸c yªu cÇu ng¾t RD thèng WR WR IR7 cña A0 A0 8088 ë INTR +5V INT SP/EN chÕ INTA INTA ®é A1-A7 CS MIN IO/M AEN2 DI0-DI7 H×nh 7.5. Nèi284 Res 8 BUS 8088 chÕ ®é MIN víi PIC 8259A (®Þa chØ cæng FE-FFH) DO0-DO7 OC RDY1 AEN1 3X'373 G CLK READY Reset +5V Bus hÖ thèng CSYNC F/C A0-A19 DIR '245 G RESET A16-19 READY A8-15 CLK AD0-AD7 D0-D7 A0 CS 8088 D0-D7 IR0 8259A : CEN IR7 S0-S2 S0-S2 AEN ALE SP/EN Xung chän A0 CAS0 MN/MX INTR 8288 DT/R CAS1 DEN CAS2 IORDC RD + 5V CLK AIOWC WR c¸c IOB INTA INTA +5V yªu cÇu ng¾t INT 213
  10. H×nh 7.6. Nèi CPU 8088 chÕ ®é MAX víi PIC 8259A LËp tr×nh cho PIC 8259A §Ó m¹ch PIC 8259A cã thÓ ho¹t ®éng ®−îc theo yªu cÇu, sau khi bËt nguån cÊp ®iÖn PIC cÇn ph¶i ®−îc lËp tr×nh b»ng c¸ch ghi vμo c¸c thanh ghi (t−¬ng ®−¬ng víi c¸c cæng) bªn trong nã c¸c tõ ®iÒu khiÓn khëi ®Çu (ICW) vμ tiÕp sau ®ã lμ c¸c tõ ®iÒu khiÓn ho¹t ®éng (OCW). C¸c tõ ®iÒu khiÓn khëi ®Çu dïng ®Ó t¹o nªn c¸c kiÓu lμm viÖc c¬ b¶n cho PIC, cßn c¸c tõ ®iÒu khiÓn ho¹t ®éng sÏ quyÕt ®Þnh c¸ch thøc lμm viÖc cô thÓ cña PIC. Tõ ®iÒu khiÓn ho¹t ®éng sÏ ®−îc ghi khi ta muèn thay ®æi ho¹t ®éng cña PIC. C¸c tõ ®iÒu khiÓn nãi trªn sÏ ®−îc giíi thiÖu cô thÓ trong c¸c môc sau. • C¸c tõ ®iÒu khiÓn khëi ®Çu ICW PIC 8259A cã tÊt c¶ 4 tõ ®iÒu khiÓn khëi ®Çu lμ ICW1-ICW4. Trong khi lËp tr×nh cho PIC kh«ng ph¶i lóc nμo ta còng cÇn dïng c¶ 4 tõ ®iÒu khiÓn ®ã. Tuú theo c¸c tr−êng hîp øng dông cô thÓ mμ cã lóc ta cÇn ghi liªn tiÕp c¶ 4 tõ ®iÒu khiÓn khëi ®Çu nh−ng cã lóc ta chØ cÇn ghi vμo ®ã 2 hay 3 tõ lμ ®ñ (xem h×nh 7.7 ®Ó thÊy râ thø tù ghi vμ ®iÒu kiÖn ®Ó ghi c¸c tõ ®iÒu khiÓn ICW vμo 8259A). D¹ng thøc cña c¸c thanh ghi ®iÒu khiÓn khëi ®Çu ICW ®−îc biÓu diÔn trªn h×nh 7.8. Trªn h×nh nμy ta thÊy bªn c¹nh c¸c bit d÷ liÖu cña tõ ®iÒu khiÓn khëi ®Çu ICW ta cßn ghi râ thªm c¶ gi¸ trÞ cô thÓ cña A0 t−¬ng øng cho mçi ICW ®ã. §Çu vμo ®Þa chØ A0 vμ thø tù ghi sÏ gióp ta ph©n biÖt ra c¸c thanh ghi kh¸c nhau bªn trong PIC ®Ó ghi d÷ liÖu cho c¸c tõ ®iÒu khiÓn. VÝ dô A0=0 lμ dÊu hiÖu ®Ó nhËn biÕt r»ng ICW1 ®−îc ®−a vμo thanh ghi cã ®Þa chØ ch½n trong PIC, cßn khi A0=1 th× c¸c tõ ®iÒu khiÓn khëi ®Çu ICW2, ICW3, ICW4 sÏ ®−îc ®−a vμo c¸c thanh ghi cã ®Þa chØ lÎ trong m¹ch PIC. ♦ ICW1 Bit D0 cña ICW1 quyÕt ®Þnh 8259A sÏ ®−îc nèi víi hä vi xö lý nμo. §Ó lμm viÖc víi hÖ 16 - 32 bit (8088 hoÆc hä 80x86) th× ICW1 nhÊt thiÕt ph¶i cã IC4 =1 (tøc lμ ta lu«n cÇn ®Õn ICW4), cßn ®èi víi hÖ 8 bit nh− hä 8080/85 th× ph¶i cã IC4 = 0 (vμ nh− vËy c¸c bit cña ICW4 sÏ bÞ xo¸ vÒ 0). C¸c bit cßn l¹i cña ICW1 ®Þnh nghÜa c¸ch thøc t¸c ®éng cña xung yªu cÇu ng¾t (t¸c ®éng theo s−ên hay theo møc) t¹i c¸c ch©n yªu 214
  11. cÇu ng¾t IR cña m¹ch 8259A vμ viÖc bè trÝ c¸c m¹ch 8259A kh¸c trong hÖ lμm viÖc ®¬n lÎ hay theo chÕ ®é nèi tÇng. ICW1 C¸c bit ®−îc ®¸nh dÊu x lμ kh«ng quan träng vμ th−êng ®−îc lÊy gi¸ trÞ 0 ®Ó lËp tr×nh cho c¸c øng dông sau nμy. ICW2 ® ICW1(2)=1? S ICW3 S ICW1(1)=1? ® ICW4 S½n sμng nhËn yªu cÇu ng¾t H×nh 7.7. Thø tù vμ ®iÒu kiÖn ghi c¸c tõ ®iÒu khiÓn khëi ®Çu ICW. ♦ ICW2 Tõ ®iÒu khiÓn khëi ®Çu nμy cho phÐp chän kiÓu ng¾t (sè hiÖu ng¾t) øng víi c¸c bit T3-T7 cho c¸c ®Çu vμo yªu cÇu ng¾t. C¸c bit T0-T2 ®−îc 8259A tù ®éng g¸n gi¸ trÞ tuú theo ®Çu vμo yªu cÇu ng¾t cô thÓ IRi. VÝ dô nÕu ta muèn c¸c ®Çu vμo cña m¹ch 8259A cã kiÓu ng¾t lμ 40-47H ta chØ cÇn ghi 40H vμo c¸c bit T3-T7. NÕu lμm nh− vËy th× IR0 sÏ cã kiÓu ng¾t lμ 40H, IR1 sÏ cã kiÓu ng¾t lμ 41H... 215
  12. ♦ ICW3 Tõ ®iÒu khiÓn khëi ®Çu nμy chØ dïng ®Õn khi bit SNGL thuéc tõ ®iÒu khiÓn khëi ®Çu ICW1 cã gi¸ trÞ 0, nghÜa lμ trong hÖ cã c¸c m¹ch 8259A lμm viÖc ë chÕ ®é nèi tÇng. ChÝnh v× vËy tån t¹i 2 lo¹i ICW3: 1 cho m¹ch 8259A chñ vμ 1 cho m¹ch 8259A thî. ICW1 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM ADI SNGL IC4 1: cÇn ICW4 Kh«ng cÇn ®Ó ý ®èi víi hÖ 16 -32 bit 0: bá ICW4 1: chØ cã 1 m¹ch PIC 0: cã nhiÒu m¹ch PIC C¸ch t¸c ®éng cña xung yªu cÇu ng¾t: Kho¶ng c¸ch gi÷a c¸c vector ng¾t: 1: theo møc d−¬ng 1: c¸ch 4 byte (80x86/88) 0: theo s−ên d−¬ng 0: c¸ch 8 byte (8080/85) ICW2 A0 D7 D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 T2 T1 T0 ®Ó chän kiÓu (sè hiÖu) ng¾t cho øng víi m· cña yªu cÇu m¹ch 8259A ng¾t IR0-IR7 ICW3 chñ A0 D7 D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0 1: ®Çu vμo IRi nèi víi m¹ch 8259A thî 0: ®Çu vμo IRi kh«ng nèi víi m¹ch thî ICW3 thî A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0 M· ho¸ sè hiÖu cña m¹ch thî 0-7 nèi vμo IR0-IR7 ICW4 A0 D7 D6 D5 D4 D3 D2 D1 D0 AEOI μPM 1 0 0 0 SFNM BUF M/S 1: cho hä 80x86/88 1: chÕ ®é −u tiªn cè ®Þnh ®Æc biÖt 1: EOI tù ®éng 216
  13. 0: kh«ng ph¶i chÕ ®é −u 0: EOI th−êng tiªn cè ®Þnh ®Æc biÖt 0x: 8259A ë chÕ ®é kh«ng ®Öm 10: m¹ch 8259A thî ë chÕ ®é ®Öm 11: m¹ch 8259A chñ ë chÕ ®é ®Öm H×nh 7.8. D¹ng thøc cña c¸c tõ ®iÒu khiÓn khëi ®Çu ICW. ICW3 cho m¹ch chñ: dïng ®Ó chØ ra ®Çu vμo yªu cÇu ng¾t IRi nμo cña nã cã tÝn hiÖu INT cña m¹ch thî nèi vμo. ICW3 cho m¹ch thî: dïng lμm ph−¬ng tiÖn ®Ó c¸c m¹ch nμy ®−îc nhËn biÕt, v× vËy tõ ®iÒu khiÓn khëi ®Çu nμy ph¶i chøa m· sè i øng víi ®Çu vμo IRi cña m¹ch chñ mμ m¹ch thî ®· cho nèi vμo. M¹ch thî sÏ so s¸nh m· sè nμy víi m· sè nhËn ®−îc ë Cas2-Cas0. NÕu b»ng nhau th× sè hiÖu ng¾t sÏ ®−îc ®−a ra bus khi cã INTA. VÝ dô: Trong mét hÖ vi xö lý ta cã mét m¹ch 8259A chñ vμ hai m¹ch 8259A thî nèi vμo ch©n IR0 vμ IR1 cña m¹ch chñ. T×m gi¸ trÞ ph¶i g¸n cho c¸c tõ ®iÒu khiÓn khëi ®Çu ICW ? Gi¶i: Nh− trªn ®· nãi, ®Ó c¸c m¹ch nμy lμm viÖc ®−îc víi nhau ta sÏ ph¶i ghi c¸c tõ ®iÒu khiÓn khëi ®Çu nh− sau: ICW3=03H cho m¹ch chñ, ICW3=00H cho m¹ch thî thø nhÊt vμ ICW3=01H cho m¹ch thî thø hai. ♦ ICW4 Tõ ®iÒu khiÓn khëi ®Çu nμy chØ dïng ®Õn khi trong tõ ®iÒu khiÓn ICW1 cã IC4=1 (cÇn thªm ICW4). Bit μPM cho ta kh¶ n¨ng chän lo¹i vi xö lý ®Ó lμm viÖc víi 8259A. Bit μPM=1 cho phÐp c¸c bé vi xö lý tõ 8086/88 hoÆc cao h¬n lμm viÖc víi 8259A. Bit SFNM=1 cho phÐp chän chÕ ®é −u tiªn cè ®Þnh ®Æc biÖt. Trong chÕ ®é nμy yªu cÇu ng¾t víi møc −u tiªn cao nhÊt hiÖn thêi tõ mét m¹ch thî lμm viÖc theo kiÓu nèi tÇng sÏ ®−îc m¹ch chñ nhËn biÕt ngay c¶ khi m¹ch chñ cßn ®ang ph¶i phôc vô mét yªu cÇu ng¾t ë m¹ch thî kh¸c nh−ng víi møc −u tiªn thÊp h¬n. Sau khi c¸c yªu cÇu ng¾t ®−îc phôc vô xong th× ch−¬ng tr×nh phôc vô ng¾t ph¶i cã lÖnh kÕt thóc yªu cÇu ng¾t (EOI) ®Æt tr−íc lÖnh trë vÒ (IRET) ®−a ®Õn cho m¹ch 8259A chñ. Khi bit SFNM=0 th× chÕ ®é −u tiªn cè ®Þnh ®−îc chän (IR0: møc −u tiªn cao nhÊt, IR7: møc −u tiªn thÊp nhÊt). Thùc ra ®èi víi m¹ch 8259A kh«ng dïng ®Õn ICW4 th× chÕ ®é nμy ®· ®−îc chän nh− lμ ngÇm ®Þnh. Trong chÕ ®é −u tiªn cè ®Þnh t¹i mét thêi ®iÓm chØ cã mét yªu cÇu ng¾t i ®−îc phôc vô (bit ISRi=1), lóc nμy tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn thÊp h¬n ®Òu bÞ cÊm, tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn cao h¬n cã thÓ ng¾t yªu cÇu kh¸c víi møc −u tiªn thÊp h¬n. Bit BUF cho phÐp ®Þnh nghÜa m¹ch 8259A ®Ó lμm viÖc víi CPU trong tr−êng hîp cã ®Öm hoÆc kh«ng cã ®Öm nèi víi bus hÖ thèng. Khi lμm viÖc ë chÕ ®é cã ®Öm 217
  14. (BUF=1), bit M/S =1/0 cho phÐp ta chän m¹ch 8259A ®Ó lμm viÖc ë chÕ ®é chñ/thî. SP/EN trë thμnh ®Çu ra cho phÐp më ®Öm ®Ó PIC vμ CPU th«ng víi bus hÖ thèng. Bit AEOI=1 cho phÐp chän c¸ch kÕt thóc yªu cÇu ng¾t tù ®éng. Khi AEOI=1 th× 8259A tù ®éng xo¸ ISRi=0 khi xung INTA cuèi cïng chuyÓn lªn møc cao mμ kh«ng lμm thay ®æi thø tù −u tiªn. Ng−îc l¹i, khi ta chän c¸ch kÕt thóc yªu cÇu ng¾t th−êng (AEOI=0) th× ch−¬ng tr×nh phôc vô ng¾t ph¶i cã thªm lÖnh EOI ®Æt tr−íc lÖnh IRET ®Ó kÕt thóc cho 8259A. • C¸c tõ ®iÒu khiÓn ho¹t ®éng OCW C¸c tõ ®iÒu khiÓn ho¹t ®éng OCW sÏ quyÕt ®Þnh m¹ch 8259A sÏ ho¹t ®éng nh− thÕ nμo sau khi nã ®· ®−îc khëi ®Çu b»ng c¸c tõ ®iÒu khiÓn ICW. TÊt c¶ c¸c tõ ®iÒu khiÓn ho¹t ®éng sÏ ®−îc ghi vμo c¸c thanh ghi trong PIC khi A0=0, trõ OCW1 ®−îc ghi khi A0=1. D¹ng thøc cña OCW ®−îc tr×nh bμy trªn h×nh 7.9. ♦ OCW1 OCW1 dïng ®Ó ghi gi¸ trÞ cña c¸c bit mÆt n¹ vμo thanh ghi mÆt n¹ ng¾t IMR. Khi mét bit mÆt n¹ nμo ®ã cña IMR ®−îc lËp th× yªu cÇu ng¾t t−¬ng øng víi mÆt n¹ ®ã sÏ kh«ng ®−îc 8259A nhËn biÕt n÷a (bÞ che). Tõ ®iÒu khiÓn nμy ph¶i ®−îc ®−a ®Õn 8259A ngay sau khi ghi c¸c ICW vμo 8259A. Ta còng cã thÓ ®äc l¹i IMR ®Ó x¸c ®Þnh t×nh tr¹ng mÆt n¹ ng¾t hiÖn t¹i (xem trong thêi ®iÓm hiÖn t¹i yªu cÇu ng¾t nμo bÞ che). ♦ OCW2 C¸c bit R, SL vμ EOI phèi hîp víi nhau cho phÐp chän ra c¸c c¸ch thøc kÕt thóc yªu cÇu ng¾t kh¸c nhau. Mét vμi c¸ch kÕt thóc yªu cÇu ng¾t cßn t¸c ®éng tíi c¸c yªu cÇu ng¾t ®−îc chØ ®Ých danh víi møc −u tiªn ®−îc m· ho¸ bëi 3 bit L2L1L0. Tr−íc khi nãi vÒ c¸c c¸ch kÕt thóc yªu cÇu ng¾t cho c¸c chÕ ®é ta cÇn më dÊu ngoÆc ë ®©y ®Ó giíi thiÖu c¸c chÕ ®é lμm viÖc cña 8259A: a. ChÕ ®é −u tiªn cè ®Þnh: §©y lμ chÕ ®é lμm viÖc ngÇm ®Þnh cña 8259A sau khi nã ®· ®−îc n¹p c¸c tõ ®iÒu khiÓn khëi ®Çu. Trong chÕ ®é nμy, c¸c ®Çu vμo IR7-IR0 ®−îc g¸n cho c¸c møc −u tiªn cè ®Þnh: IR0 ®−îc g¸n cho møc −u tiªn cao nhÊt, cßn IR7 møc −u tiªn thÊp nhÊt. Møc −u tiªn nμy®−îc gi÷ kh«ng thay ®æi cho ®Õn khi ghi m¹ch 8259A bÞ lËp tr×nh kh¸c ®i do OCW2. 218
  15. Trong chÕ ®é −u tiªn cè ®Þnh t¹i mét thêi ®iÓm chØ cã mét yªu cÇu ng¾t i ®−îc phôc vô (bit ISRi=1), lóc nμy tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn thÊp h¬n ®Òu bÞ cÊm, tÊt c¶ c¸c yªu cÇu kh¸c víi møc −u tiªn cao h¬n cã thÓ ng¾t yªu cÇu kh¸c víi møc −u tiªn thÊp h¬n. OCW1 A0 D7 D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0 MÆt n¹ ng¾t t¹i c¸c yªu cÇu ng¾t 1: cã mÆt n¹ 0: kh«ng cã mÆt n¹ KÕt thóc LÖnh EOI th−êng m· ho· møc −u tiªn ng¾t(EOI) LÖnh EOI chØ ®Ých danh(*) ng¾t bÞ t¸c ®éng §æi møc §æi møc CW2 khi cã EOI th−êng O −u tiªn 000...møc 0 −u tiªn tù0 LËp chÕ ®é quay D4 cã EOI tù ®éng D1 khi A D7 D6 D5 D3 D2 D0 : ®éng Xo¸ chÕ EOI uay khi cã EOI tù ®éng L1 ®é q 0 R SL 0 0 L2 L0 111...møc 7 §æi m.−.t. §æi møc −u tiªn khi cã EOI ®Ých danh(*) ®Ých danh 0 1 LÖnh lËp møc −u tiªn(*) 0 1 1 Kh«ng lμm g× 0 1 01 (*): dïng tæ hîp L2L1L0 1 00 0 00 1 11 1 10 0 10 OCW3 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P ERIS RIS 10: ®äc IRR ë lÇn ®äc sau 11: ®äc ISR ë lÇn ®äc sau Th¨m dß hiÖn tr¹ng cña yªu cÇu ng¾t 1:®äc m· møc −u tiªn cao nhÊt ë lÇn ®äc sau 219
  16. ChÕ ®é mÆt n¹ ®Æc biÖt 10: xo¸ chÕ ®é mÆt n¹ ®Æc biÖt 11: lËp chÕ ®é mÆt n¹ ®Æc biÖt H×nh 7.9. D¹ng thøc cña c¸c tõ ®iÒu khiÓn ho¹t ®éng OCW. b. ChÕ ®é quay møc −u tiªn (−u tiªn lu©n phiªn) tù ®éng: ë chÕ ®é nμy sau khi mét yªu cÇu ng¾t ®−îc phôc vô xong, 8259A sÏ xo¸ bit t−¬ng øng cña nã trong thanh ghi ISR vμ g¸n cho ®Çu vμo cña nã møc −u tiªn thÊp nhÊt ®Ó t¹o ®iÒu kiÖn cho c¸c yªu cÇu ng¾t kh¸c cã thêi c¬ ®−îc phôc vô. c. ChÕ ®é quay (®æi) møc −u tiªn chØ ®Ých danh: ë chÕ ®é nμy ta cÇn chØ râ (®Ých danh) ®Çu vμo IRi nμo, víi i= L2L1L0, ®−îc g¸n møc −u tiªn thÊp nhÊt, ®Çu vμo IRi+1 sÏ ®−îc tù ®éng g¸n møc −u tiªn cao nhÊt. B©y giê ta ®ãng dÊu ngoÆc ®· ®−îc ra më ë trªn vμ trë l¹i c¸c vÊn ®Ò liªn quan ®Õn OCW2. Ta sÏ nãi râ viÖc c¸c bit R, SL vμ EOI phèi hîp víi nhau nh− thÕ nμo ®Ó t¹o ra c¸c lÖnh quy ®Þnh c¸c c¸ch thøc kÕt thóc yªu cÇu ng¾t cho c¸c chÕ ®é lμm viÖc kh¸c nhau ®· nãi ®Õn ë phÇn trªn (xem thªm h×nh 7.9). 1. KÕt thóc yªu cÇu ng¾t th−êng: ch−¬ng tr×nh con phôc vô ng¾t ph¶i cã lÖnh EOI ®Æt tr−íc lÖnh trë vÒ IRET cho 8259A. M¹ch 8259A sÏ x¸c ®Þnh yªu cÇu ng¾t IRi võa ®−îc phôc vô vμ xo¸ bit ISRi t−¬ng øng cña nã ®Ó t¹o ®iÒu kiÖn cho chÝnh yªu cÇu ng¾t nμy hoÆc c¸c ng¾t kh¸c cã møc −u tiªn thÊp h¬n cã thÓ ®−îc t¸c ®éng. 2. KÕt thóc yªu cÇu ng¾t chØ ®Ých danh: ch−¬ng tr×nh con phôc vô ng¾t ph¶i cã lÖnh EOI chØ ®Ých danh ®Æt tr−íc lÖnh trë vÒ IRET cho 8259A. M¹ch 8259A xo¸ ®Ých danh bit ISRi, víi i= L2L1L0, ®Ó t¹o ®iÒu kiÖn cho chÝnh yªu cÇu ng¾t nμy hoÆc c¸c ng¾t kh¸c cã møc −u tiªn thÊp h¬n cã thÓ ®−îc t¸c ®éng. 3. Quay (®æi) møc −u tiªn khi kÕt thóc yªu cÇu ng¾t th−êng: ch−¬ng tr×nh con phôc vô ng¾t ph¶i cã lÖnh EOI ®Æt tr−íc lÖnh trë vÒ IRET cho 8259A. M¹ch 8259A sÏ x¸c ®Þnh yªu cÇu ng¾t thø i võa ®−îc phôc vô, xo¸ bit ISRi t−¬ng øng vμ g¸n lu«n møc −u tiªn thÊp nhÊt cho ®Çu vμo IRi nμy, cßn ®Çu vμo IRi+1 sÏ ®−îc g¸n møc −u tiªn cao nhÊt. Thanh ghi ISR tr−íc khi IR4 ®−îc chÊp nhËn: (0: møc −u tiªn cao nhÊt, 7: møc −u tiªn thÊp nhÊt) IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 0 1 0 1 0 0 0 0 Tr¹ng th¸i cña ISR 7 6 5 4 3 2 1 0 Møc −u tiªn Thanh ghi ISR sau khi IR4 ®−îc chÊp nhËn vμ sau khi cã lÖnh quay: (0: møc −u tiªn cao nhÊt, 7: møc −u tiªn thÊp nhÊt) 220
  17. IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 0 1 0 0 0 0 0 0 Tr¹ng th¸i cña ISR 2 1 0 7 6 5 4 3 Møc −u tiªn H×nh 7.10. ISR vμ møc −u tiªn víi lÖnh quay khi kÕt thóc ng¾t th−êng. Cã thÓ theo râi c¸ch thøc ho¹t ®éng cña m¹ch 8259A trong chÕ ®é quay (®æi) møc −u tiªn khi kÕt thóc yªu cÇu ng¾t th−êng th«ng qua vÝ dô minh ho¹ tr×nh bμy trªn h×nh 7.10. 4. Quay (®æi) møc −u tiªn trong chÕ ®é kÕt thóc yªu cÇu ng¾t tù ®éng: chØ cÇn mét lÇn ®−a lÖnh chän chÕ ®é ®æi møc −u tiªn khi kÕt thóc yªu cÇu ng¾t tù ®éng. Cã thÓ chän chÕ ®é nμy b»ng lÖnh lËp "chÕ ®é quay khi cã EOI tù ®éng". Tõ ®ã trë ®i 8259A sÏ ®æi møc −u tiªn mçi khi kÕt thóc ng¾t tù ®éng theo c¸ch t−¬ng tù nh− ë môc 3. Muèn bá chÕ ®é nμy ta cã thÓ dïng lÖnh xo¸ "chÕ ®é quay khi cã EOI tù ®éng". 5. Quay (®æi) møc −u tiªn khi kÕt thóc yªu cÇu ng¾t ®Ých danh: ch−¬ng tr×nh con phôc vô ng¾t ph¶i cã lÖnh EOI ®Ých danh cho 8259A ®Æt tr−íc lÖnh trë vÒ IRET. M¹ch 8259A sÏ xo¸ bit ISRi cña yªu cÇu ng¾t t−¬ng øng vμ g¸n lu«n møc −u tiªn thÊp nhÊt cho ®Çu vμo IRi, víi i=L2L1L0. 6. LËp møc −u tiªn: chÕ ®é nμy cho phÐp thay ®æi møc −u tiªn cè ®Þnh hoÆc møc −u tiªn g¸n tr−íc ®ã b»ng c¸ch g¸n møc −u tiªn thÊp nhÊt cho yªu cÇu ng¾t IRi chØ ®Ých danh øng víi tæ hîp m· i= L2L1L0. Yªu cÇu ng¾t IR i+1 sÏ ®−îc g¸n møc −u tiªn cao nhÊt. ♦ OCW3 Tõ ®iÒu khiÓn ho¹t ®éng OCW3 sau khi ®−îc ghi vμo 8259A cho phÐp: + chän c¸c ra thanh ghi ®Ó ®äc, + th¨m dß tr¹ng th¸i yªu cÇu ng¾t b»ng c¸ch tr¹ng th¸i cña ®Çu vμo yªu cÇu ng¾t IRi víi møc −u tiªn cao nhÊt cïng m· cña ®Çu vμo ®ã, vμ + thao t¸c víi mÆt n¹ ®Æc biÖt. D7 §6 D5 D4 D3 D2 D1 D0 IR7 IR6 IR5 IR4 IR3 IR2 IR0 IR0 a) IRR IRi=0: ®Çu vμo i kh«ng cã yªu cÇu ng¾t IRi=1: ®Çu vμo i cã yªu cÇu ng¾t D7 §6 D5 D4 D3 D2 D1 D0 221
  18. IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 b) ISR ISi=0: yªu cÇu ng¾t i kh«ng ®−îc phôc vô ISi=1: yªu cÇu ng¾t i ®ang ®−îc phôc vô H×nh 7.11. D¹ng thøc cña thanh ghi yªu cÇu ng¾t vμ thanh ghi phôc vô. C¸c thanh ghi IRR vμ ISR cã thÓ ®äc ®−îc sau khi n¹p vμo 8259A tõ ®iÒu khiÓn OCW3 víi bit ERIS=1; bit RIS=0 sÏ cho phÐp ®äc IRR, bit RIS=1 sÏ cho phÐp ®äc ISR. D¹ng thøc cña c¸c thanh ghi nμy®−îc biÓu diÔn trªn h×nh 7.11a vμ 6.11b. B»ng viÖc ®−a vμo 8259A tõ ®iÒu khiÓn OCW3 víi bit P=1 ta cã thÓ ®äc ®−îc trªn bus d÷ liÖu ë lÇn ®äc tiÕp ngay sau ®ã tõ th¨m dß, trong ®ã cã c¸c th«ng tin vÒ yªu cÇu ng¾t víi møc −u tiªn cao nhÊt ®ang ho¹t ®éng vμ m· t−¬ng øng víi yªu cÇu ng¾t Êy theo d¹ng thøc ®−îc biÓu diÔn trªn h×nh 7.12. D7 §6 D5 D4 D3 D2 D1 D0 I x x x x W2 W1 W0 1: ®ang cã yªu cÇu ng¾t M· ho¸ sè cña yªu cÇu ng¾t 0: kh«ng cã yªu cÇu ng¾t (x: kh«ng ®Ó ý) H×nh 7.12. D¹ng thøc cña tõ th¨m dß tr¹ng th¸i yªu cÇu ng¾t. Cã thÓ gäi ®©y lμ chÕ ®é th¨m dß yªu cÇu ng¾t vμ chÕ ®é nμy th−êng ®−îc øng dông trong tr−êng hîp cã nhiÒu ch−¬ng tr×nh phôc vô ng¾t gièng nhau cho mét yªu cÇu ng¾t vμ viÖc chän ch−¬ng tr×nh nμo ®Ó sö dông lμ tr¸ch nhiÖm cña ng−êi lËp tr×nh. Tãm l¹i, muèn dïng chÕ ®é th¨m dß cña 8259A ®Ó x¸c ®Þnh yªu cÇu ng¾t hiÖn t¹i ta cÇn lμm c¸c thao t¸c lÇn l−ît nh− sau: - CÊm c¸c yªu cÇu ng¾t b»ng lÖnh CLI - Ghi tõ lÖnh OCW3 víi bit P=1 - §äc tõ th¨m dß tr¹ng th¸i yªu cÇu ng¾t trªn bus d÷ liÖu Bit ESMM=1 cho phÐp 8259A thao t¸c víi chÕ ®é mÆt n¹ ®Æc biÖt. Bit SMM=1 cho phÐp lËp chÕ ®é mÆt n¹ ®Æc biÖt. ChÕ ®é mÆt n¹ ®Æc biÖt ®−îc dïng ®Ó thay ®æi thø tù −u tiªn ngay bªn trong ch−¬ng tr×nh con phôc vô ng¾t. VÝ dô, trong tr−êng hîp cã mét yªu cÇu ng¾t bÞ cÊm (bÞ che bëi ch−¬ng tr×nh phôc vô ng¾t víi tõ lÖnh OCW1) mμ ta l¹i muèn cho phÐp c¸c yªu cÇu ng¾t víi møc −u tiªn thÊp h¬n so víi yªu cÇu 222
  19. ng¾t bÞ cÊm ®ã ®−îc t¸c ®éng th× ta sÏ dïng chÕ ®é mÆt n¹ ®Æc biÖt. Mét khi ®· ®−îc lËp, chÕ ®é mÆt n¹ ®Æc biÖt sÏ tån t¹i cho tíi khi bÞ xo¸ b»ng c¸ch ghi vμo 8259A mét tõ lÖnh OCW3 kh¸c víi bit SMM=0. MÆt n¹ ®Æc biÖt kh«ng ¶nh h−ëng tíi c¸c yªu cÇu ng¾t víi møc −u tiªn cao h¬n. Cuèi cïng ®Ó cã c¸i nh×n mét c¸ch cã hÖ thèng vÒ ho¹t ®éng cña hÖ vi xö lý víi CPU 8088 vμ PIC 8259A khi cã yªu cÇu ng¾t, ta tãm l−îc ho¹t ®éng cña chóng nh− sau: 1. Khi cã yªu cÇu ng¾t tõ thiÕt bÞ ngo¹i vi t¸c ®éng vμo mét trong c¸c ch©n IR cña PIC, 8259A sÏ ®−a INT=1 ®Õn ch©n INTR cña 8088. 2. 8088 ®−a ra xung INTA ®Çu ®Õn 8259A. 3. 8259A dïng xung INTA ®Çu nh− lμ th«ng b¸o ®Ó nã hoμn tÊt c¸c xö lý néi bé cÇn thiÕt, kÓ c¶ xö lý −u tiªn nÕu nh− cã nhiÒu yªu cÇu ng¾t cïng x¶y ra. 4. 8088 ®−a ra xung INTA thø hai ®Õn 8259A. 5. Xung INTA thø hai khiÕn 8259A ®−a ra bus d÷ liÖu 1 byte chøa th«ng tin vÒ sè hiÖu ng¾t cña yªu cÇu ng¾t võa ®−îc nhËn biÕt. 6. 8088 dïng sè hiÖu ng¾t ®Ó tÝnh ra ®Þa chØ cña vect¬ ng¾t t−¬ng øng. 7. 8088 cÊt FR, xo¸ c¸c cê IF vμ TF vμ cÊt ®Þa chØ trë vÒ CS:IP vμo ng¨n xÕp. 8. 8088 lÊy ®Þa chØ CS:IP cña ch−¬ng tr×nh phôc vô ng¾t tõ b¶ng vect¬ ng¾t vμ thùc hiÖn ch−¬ng tr×nh ®ã. • Mét sè vÝ dô lËp tr×nh víi 8259A VÝ dô 1 LËp tr×nh cho 8259A ®Ó lμm viÖc víi CPU 8088 ë chÕ ®é chñ (®¬n lÎ), trong hÖ cã ®Öm bus, chÕ ®é −u tiªn cè ®Þnh vμ víi EOI th−êng, IR kÝch theo møc, tÝn hiÖu IR0 ®−îc g¸n sè hiÖu ng¾t lμ 50H. Gi¶i Tõ h×nh 7.8 vμ c¨n cø theo c¸c yªu cÇu cña bμi to¸n ta cã c¸c tõ ®iÒu khiÓn khëi ®Çu nh− sau: ICW1=00011011=1BH D0=1 cÇn thªm ICW4 D1=1 lμm viÖc ®¬n lÎ, kh«ng cÇn ICW3 D2=0 lμm viÖc víi hÖ 8086/88 D3=1 ®Çu vμo IR ¨n theo møc D4=1 b¾t buéc víi ICW1 D5=D6=D7=0 g¸n b»ng 0 cho hÖ 8086/88 223
  20. ICW2=01010000=50H V× c¸c bit T7-T3 cña ICW2 ph¶i m· ho¸ trÞ sè 50H ®Ó IR0-IR7 ®−îc m· ho¸ tiÕp bëi c¸c bit T2-T0=000. ICW3 kh«ng cÇn ®Õn ICW4=00001101=0DH D0=1 lμm viÖc víi hÖ 8086/88 D1=0 EOI th−êng (ph¶i cã EOI tr−íc IRET) D3D2=11 lμm viÖc ë chÕ ®é chñ trong hÖ cã ®Öm bus D4=0 chÕ ®é −u tiªn cè ®Þnh D5=D6=D7=0 lu«n b»ng 0 cho ICW4 VÝ dô 2 ViÕt ch−¬ng tr×nh ®Ó khëi ®Çu cho m¹ch 8259A ë vÝ dô trªn nÕu nã ®−îc nèi víi 8088 theo s¬ ®å trªn h×nh 7.6 víi ®Þa chØ F0H vμ F1H. Gi¶i §o¹n ch−¬ng tr×nh ®Ó khëi ®Çu cho m¹ch nμy cã thÓ lμ: MOV AL,1BH ;ICW1 OUT 0F0H,AL ;ICW1 ®−a ra cæng F0H MOV AL,50H ;ICW2 OUT 0F1H,AL ;ICW2 ®−a ra cæng F1H MOV AL,0DH ;ICW4 OUT 0F1H,AL ;ICW4 ®−a ra cæng F1H VÝ dô 3 Gi¶ thiÕt t¹i ch©n IR3 cña m¹ch 8259A ë trªn cã tÝn hiÖu yªu cÇu ng¾t. T¹i ch−¬ng tr×nh con phôc vô cho yªu cÇu ng¾t nμy cã cÇn ph¶i cã lÖnh kÕt thóc ng¾t (EOI) kh«ng? NÕu cã th× h·y viÕt ra c¸c lÖnh ®ã. Gi¶i Gi¶ thiÕt t¹i IR3 cã tÝn hiÖu yªu cÇu ng¾t vμ CPU ®· tr¶ lêi chÊp nhËn ng¾t, 8259A sÏ lËp bit ISR3 =1 ®Ó ghi nhí lμ yªu cÇu ng¾t IR3 ®ang ®−îc phôc vô. V× tr−íc ®ã ta ®· ®Þnh nghÜa chÕ ®é kÕt thóc ng¾t b×nh th−êng cho 8259A, nªn trong ch−¬ng tr×nh con phôc vô ng¾t cña yªu cÇu ng¾t nμy ta ph¶i cã lÖnh kÕt thóc ng¾t EOI ®−a ®Õn 8259A ®Ó xo¸ bit ISR3 ®−îc lËp tr−íc ®ã, t¹o ®iÒu kiÖn cho c¸c yªu cÇu ng¾t kh¸c víi møc −u tiªn thÊp h¬n hoÆc cho chÝnh yªu cÇu ng¾t míi t¹i ch©n IR3 cã thêi c¬ ®−îc phôc vô. D¹ng th−êng thÊy cña mét ch−¬ng tr×nh con phôc vô ng¾t kiÓu nμy cã thÓ nh− sau (ta chØ chó ý nhÊn m¹nh tíi c¸c lÖnh cuèi liªn quan ®Õn EOI): 224
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
19=>1