Bài soạn vi xử lý - Chương 7: Ngắt và xử lý ngắt trong hệ 8088

Tài liệu Bài soạn vi xử lý - Chương 7: Ngắt và xử lý ngắt trong hệ 8088

doc20 trang | Chia sẻ: tranhong10 | Lượt xem: 1028 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài soạn vi xử lý - Chương 7: Ngắt và xử lý ngắt trong hệ 8088, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHÆÅNG 7 NGÀÕT VAÌ XÆÍ LYÏ NGÀÕT TRONG HÃÛ 8088 1. Sæû cáön thiãút phaíi ngàõt CPU Trong caïch täø chæïc trao âäøi dæî liãûu thäng qua viãûc thàm doì traûng thaïi sàôn saìng cuía thiãút bë ngoaûi vi nhæ âaî âæåüc trçnh baìy åí chæång træåïc, træåïc khi tiãún haình báút kyì mäüt cuäüc trao âäøi dæî liãûu naìo CPU phaíi âãø toaìn bäü thåìi gian vaìo viãûc xaïc âënh traûng thaïi sàôn saìng laìm viãûc cuía thiãút bë ngoaûi vi. Trong hãû thäúng vi xæí lyï våïi caïch laìm viãûc nhæ váûy, thäng thæåìng CPU âæåüc thiãút kãú chuí yãúu chè laì âãø phuûc vuû cho viãûc vaìo/ra dæî liãûu vaì thæûc hiãûn caïc xæí lyï liãn quan. Trong thæûc tãú ngæåìi ta ráút muäún táûn duûng khaí nàng cuía CPU âãø laìm thãm âæåüc nhiãöu cäng viãûc khaïc næîa, chè khi naìo coï yãu cáöu trao âäøi dæî liãûu thç måïi yãu cáöi CPU taûm dæìng cäng viãûc hiãûn taûi âãø phuûc vuû viãûc trao âäøi dæî liãûu. Sau khi hoaìn thaình viãûc trao âäøi dæîliãûu thç CPU laûi phaíi quay vãö âãø laìm tiãúp cäng viãûc hiãûn âang bë giaïn âoaûn. Caïch laìm viãûc theo kiãøu naìy goüi laì ngàõt CPU (giaïn âoaûn hoaût âäüng cuía CPU) âãø trao âäøi dæî liãûu. Mäüt hãû thäúng våïi caïch hoaût âäüng theo kiãøu naìy coï thãø âaïp æïng ráút nhanh våïi caïc yãu cáöu trao âäøi dæî liãûu trong khi váùn coï thãø laìm âæåüc caïc cäng viãûc khaïc. Muäún âaût âæåüc âiãöu naìy ta phaíi coï caïch täø chæïc hãû thäúng ao cho coï thãø táûn duûng âæåüc khaí nàng thæûc hiãûn caïc chæång trçnh phuûc vuû ngàõt taûi caïc âëa chè xaïc âënh cuía CPU. Khi nghiãn cæïu caïc tên hiãûu cuía CPU 8088, chuïng ta âaî tháúy vi maûch naìy coï caïc chán tên hiãûu cho caïc yãu cáöu ngàõt che âæåüc INTR vaì khäng che âæåüc NMI, chênh caïc chán naìy seî âæåüc sæí duûng vaìo viãûc âæa caïc yãu cáöu ngàõt tæì bãn ngoaìi âãún CPU. 2. Ngàõt trong hãû vi xæí lyï 8088 2.1. Caïc loaûi ngàõt trong hãû 8088 Trong hãû vi xæí lyï 8088 coï thãø xãúp caïc nguyãn nhán gáy ra ngàõt CPU vaìo 3 nhoïm nhæ sau: + Nhoïm caïc ngàõt cæïng : âoï laì caïc yãu cáöu ngàõt CPU do caïc tên hiãûu âãún tæì caïc chán INTR vaì NMI. Ngàõt cæïng INTR laì yãu cáöu ngàõt che âæåüc. Caïc lãûnh CLI vaì STI coï aính hæåíng træûc tiãúp tåïi traûng thaïi cuía cåì IF trong bäü vi xæí lyï, tæïc laì aính hæåíng tåïi viãûc CPU coï nháûn biãút yãu cáöu ngàõt taûi chán naìy hay khäng. Yãu cáöu ngàõt taûi chán INTR coï thãø coï kiãøu ngàõt N nàòm trong khoaíng 0-FFH. Kiãøu ngàõt naìy phaíi âæåüc âæa vaìo bus dæî liãûu âãø CPU coï thãø âoüc âæåüc khi coï xung trong chu kyì traí låìi cháúp nháûn ngàõt. Biãøu âäö thåìi gian cuía caïc xung liãn quan âãún quaï trçnh trãn âæåüc mä taí trãn hçnh 7.1. + Nhoïm caïc ngàõt mãöm: khi CPU thæûc hiãûn caïc lãûnh ngàõt daûng INT N, trong âoï N laì säú hiãûu (kiãøu) ngàõt nàòm trong khoaíng 00-FFH (0-255). + Nhoïm caïc hiãûn tæåüng ngoaûi lãû: âoï laì caïc ngàõt do caïc läùi naíy sinh trong quaï trçnh hoaût âäüng cuía CPU nhæ pheïp chia cho 0, xaíy ra traìn khi tênh toaïn. Yãu cáöu ngàõt seî âæåüc CPU kiãøm tra thæåìng xuyãn taûi chu kyì âäöng häö cuäúi cuìng cuía mäùi lãûnh. Trãn hçnh 7.2 trçnh baìy mäüt caïch âån giaín âãø âæa âæåüc säú hiãûu ngàõt N vaìo bus dæî liãûu trong khi cuîng taûo ra yãu cáöu ngàõt âæa vaìo chán INTR cuía bäü vi xæí lyï 8088. Giaí thiãút trong mäüt thåìi âiãøm nháút âënh chè coï mäüt yãu cáöu ngàõt IRi âæåüc taïc âäüng vaì khi âoï åí âáöu ra cuía maûch NAND seî coï xung yãu cáöu ngàõt âãún CPU. Tên hiãûu IRi âæåüc âäöng thåìi âæa qua maûch khuãúch âaûi âãûm âãø taûo ra säú hiãûu ngàõt tæång æïng, säú hiãûu ngàõt naìy seî âæåüc CPU âoüc vaìo khi noï âæa ra tên hiãûu traí låìi . Baíng 7.1. Cho ta quan hãû giæîa IRi vaì säú hiãûu ngàõt N tæång æïng. 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) 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 seî coìn âãö cáûp âãún viãûc xæí lyï træåìng håüp coï 2 yãu cáöu ngàõt IRi cuìng mäüt luïc vaì caïch âæa caïc giaï trë N cuía INTN vaìo bus dæî liãûu mäüt caïch tãû âäüng bàòng maûch âiãöu khiãøn ngàõt PIC åí pháön sau. 2.2. Âaïp æïng cuía CPU khi coï yãu cáöu ngàõt Khi coï yãu cáöu ngàõt kiãøu N âãún chán CPU vaì nãúu yãu cáöu âoï âæåüc pheïp, CPU thæûc hiãûn caïc cäng viãûc sau: SP ¬ SP-2, {SP} ¬ FR, trong âoï {SP} laì ä nhåï do SP chè ra. (chè ra âènh måïi cuía ngàõn xãúp, cáút thanh ghi cåì vaìo âènh ngàn xãúp) IF ¬ 0, TF ¬ 0. (cáúm caïc ngàõt khaïc taïc âäüng vaìo CPU, cho CPU chaûy åí chãú âäü bçnh thæåìng) SP ¬ SP-2, {SP} ¬ CS. (chè ra âènh måïi cuía ngàn xãúp, cáút pháön âëa chè âoaûn cuía âëa chè tråí vãö vaìo âènh ngàn xãúp) SP ¬ SP-2, {SP} ¬ IP (chè ra âènh måïi cuía ngàn xãúp, cáút pháön âëa chè lãûch cuía âëa chè tråì vãö vaìo âènh ngàn xãúp) {N*4} ® IP, {N*4+2} ® CS (láúy lãûnh taûi âëa chè måïi cuía chæång trçnh con phuûc vuû ngàõt kiãøu N tæång æïng trong baíng vectå ngàõt) Taûi cuäúi chæång trçnh phuûc vuû 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æí lyï quay laûi chæång trçnh chênh taûi âëa chè tråí vãö vaì våïi giaï trë cuî cuía thanh ghi cåì âæåüc láúy ra tæì ngàn xãúp). Vãö màût cáúu truïc chæång trçnh, khi coï ngàõt xaíy ra thç chæång trçnh chênh (CTC) liãn hãû våïi chæång trçnh con phuûc vuû ngàõt (CTCPVN) nhæ mä taí trãn hçnh 7.3. Trong thæûc tãú caïc ngàõt mãöm INT N âaî bao truìm caïc loaûi khaïc båíi vç Intel âaî quy âënh mäüt säú kiãøu ngàõt âàûc biãût âæåüc xãúp vaìo âáöu daîy ngàõt mãöm INY N nhæ sau: + INT 0 : Ngàõt mãöm do pheïp chia cho säú 0 gáy ra, + IN T1 : Ngàõt mãöm âãø chaûy tæìng lãûnh æïng våïi træåìng håüp cåì TF=1, + IN T2 : Ngàõt cæïng do tén hiãûu têch cæûc taûi chán NM1 gáy ra, + IN T3 : Ngàõt mãöm âãø âàût âiãøm dæìng cuía chæång trçnh taûi mäüt âëc chè naìo âoï + IN T4 : (Hoàûc lãûnh INTO) : ngàõt mãöm æïng våïi træåìng håüp cåì traìn OF=1. Caïc kiãøu ngàõt khaïc coìn laûi thç âæåüc daình cho Intel vaì cho ngæåìi sæí duûng (IBM khäng hoaìn toaìn tuán thuí caïc quy âënh naìy khi chãú taûo caïc maïy PC/XT vaì PC/AT0: + INT 5-INT 1FH; daình riãng cho Intel trong caïc bäü vi xæí lyï cao cáúp khaïc, + INT 20H-INT FFH: daình cho ngæåìi sæí duûng. Caïc kiãøu ngàõt N trong INT N âãöu tæång æïng våïi caïc âëa chè xaïc âënh cuía CTCPVN maì ta coï thãø tra âæåüc trong baíng caïc vectå ngàõt. Intel quy âënh baíng naìy nàòm trong RAM bàõt âáöu tæì âaûic hè 00000H vaì daìi 1 KB (vç 8088 coï táút caí 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 âuí cho CS:IP cuía CTCPVN). Baíng 7.2. Baíng vectå ngàõt cuía 8088 taûi 1KB RAM âáöu tiãn 03FEH-03FFH CS cuía CTPVN INT FFH 03FCH-03FDH IP cuía CTPVN INT FFH 0082H-0083H CS cuía CTPVN INT 20H 0080H-0081H IP cuía CTPVN INT 20H 000AH-000BH CS cuía CTCPVN INT 2 0008H-0009H IP cuía CTCPVN INT 2 0006H-0007H CS cuía CTCPVN INT 1 0004H-0005H IP cuía CTCPVN INT 1 0002H-0003H CS cuía CTCPVN INT 0 0000H-0001H IP cuía CTCPVN INT 0 Trãn baíng 7.2. giåïi thiãûu mäüt pháön cuía baíng vectå ngàõt cuía CPU 8088 2.3. Xæí lyï æu tiãn khi ngàõt: Coï mäüt váún âãö ráút thæûc tãú âàût ra laì nãúu taûi cuìng mäüt thåìi âiãøm coï nhiãöu yãu cáöu ngàõt thuäüc caïc loaûi ngàõt khaïc nhau cuìng âoìi hoíi CPU phuûc vuû thç CPU xæí lyï caïc yãu cáöu ngàõt âoï nhæ thãú naìo? Cáu traí låìi laì CPU xæí lyï caïc yãu cáöu ngàõt theo thæï tæû æu tiãn våïi nguyãn tàõc ngàõt naìo coï mæïc æu tiãn vaì phuûc vuû træåïc. Ngay tæì khi âæåüc chãú taûo (thæåìng goüi laì ngáöm âënh) CPU 8088 coï khaí nàng phán biãût caïc mæïc æu tiãn khaïc nhau cho caïc loaûi ngàõt (theo thæï tæû tæì cao xuäúng tháúp) nhæ sau: + ngàõt näüi bäü : INT 0 (pheïp chia cho 0), INT N, INTO ... cao nháút + ngàõt khäng che âæåüc NMI + ngàõt che âæåüc INTR + ngàõt âãø chaûy tæìng lãûng INT 1 ... tháúp nháút Âãø tháúy roî hoaût âäüng cuía CPU trong cå chãú ngàõt æu tiãn naìy ta coï thãø láúy mäüt vê duû cuû thãø nhæ sau. Giaí thiãút taûi mäüt thåìi âiãøm naìo âoï, trong khi CPU (åí traûng thaïi cho pheïp ngàõt våïi cæìo IF=1) âang thæûc hiãûn pheïp chia vaì coï läùi xaíy ra do säú bë chia bàòng 0, âuïng vaìo luïc âoï CPU cuîng nháûn âæåüc yãu cáöu tæì âáöu vaìo INTR. CPU seî xæí lyï ra sao trong træåìng håüp naìy? Theo thæï tæû æu tiãn ngáöm âënh trong viãûc xæí lyï ngàõt cuía CPU 8088 thç INT 0 coï mæïc æu tiãn cao hån INTR, vç váûy âáöu tiãn CPU seî thæûc hiãûn chæång trçnh phuûc vuû ngàõt INT 0 âãø âaïp æïng våïi läùi âàûc biãût cho pheïp chua cho 0 gáy ra vaì cåì IF bë xoïa vãö 0. Yãu cáöu ngàõt INTR seî tæû âäüng bë cáúm cho tåïi khi chæång trçnh phuûc vuû ngàõt INT 0 âæåüc hoaìn táút vaì tråí vãö nhåì IRET, cåì IF cuî âæåüc traí laûi. Tiãúp theo âoï CPU seî âaïp æïng yãu cáöu ngàõt INTR bàòng caïch thæûc hiãûn chæång trçnh phuûc vuû ngàõt daình cho INTR. 2.4. Maûch âiãöu khiãøn ngàõt æu tiãn 8259A Trong træåìng håüp coï nhiãöu yãu cáöu ngàõt che âæåüc tæì bãn ngoaìi phaíi phuûc vuû tæ thæåìng duìng vi maûch coï sàôn 8259A âãø giaíi quyãút váún âãö æu tiãn. maûch 8259A âæåüc goüi laì maûch âiãöu khiãøn ngàõt æu tiãn (priority interrupt controller, PIC). Âoï laì mäüt vi maûch cåî låïn láûp trçnh âæåüc, coï thãø xæí lyï træåïc âæåüc 8 yãu cáöu ngàõt våïi 8 mæïc æu tiãn khaïc nhau âãø taûo ra mäüt yãu cáöu ngàõt âæa âãún âáöu vaìo INTR (yãu cáöu ngàõt che âæåüc cuía CPU 8088. Nãúu näúi táöng 1 maûch 8259A chuí våïi 8 maûch 8259A thåü ta coï thãø náng täøng säú caïc yãu cáöu ngàõt våïi caïc mæïc æu tiãn khaïc nhau lãn thaình 64. Caïc khäúi chæïc nàng chênh cuía 8259A + Thanh ghi IRR: ghi nhåï caïc yãu cáöu ngàõt coï taûi âáöu vaìo IRi. + Thanh ghi ISR: ghi nhåï caïc yãu cáöu ngàõt âang âæåüc phuûc vuû trong säú caïc yãu cáöu ngàõt IRi. + Thanh ghi IMR: ghi nhåï màût naû ngàõt âäúi våïi caïc yãu cáöu ngàõt IRi. + Logic âiãöu khiãøn: khäúi naìy coï nhiãûm vuû gæíi yãu cáöu ngàõt tåïi INTR cuía 8088 khi coï tên hiãûu taûi caïc chán IRi vaì nháûn traí 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: duìng âãø phäúi gheïp 8259A våïi bus dæî liãûu cuía CPU + Logic âiãöu khiãøn ghi/âoüc: duìng cho viãûc ghi caïc tæì âiãöu khiãøn vaì âoüc caïc tæì traûng thaïi cuía 8259A. + Khäúi âãûm näúi táöng vaì so saïnh: ghi nhåï vaì so saïnh säú hiãûu cuía caïc maûch 8259A coï màût trong hãû vi xæí lyï. Caïc tên hiãûu cuía 8259A: Mäüt säú tên hiãûu trong maûch 8259 coï tãn giäúng nhæ caïc tên hiãûu tiãu chuáøn cuía hãû vi xæí lyï 8080. Ta coï thãø tháúy roî vaì hiãøu âæåüc yï nghéa cuía chuïng ngay trãn hçnh 7.4. Ngoaìi caïc tên hiãûu naìy ra, coìn coï mäüt säú tên hiãûu âàûc biãût khaïc cuía 8259A cáön phaíi giåïi thiãûu thãm gäöm: + Cas0-Cas2 [I,O]: laì caïc âáöu vaìo âäúi våïi caïc maûch 8259A thåü hoàûc caïc âáöu ra cuía maûch 8259A chuí duìng khi cáön näúi táöng âãø tàng thãm caïc yãu cáöu ngàõt cáön xæí lyï. + [I,O]: khi 8259A laìm viãûc åí chãú âäü khäng coï âãûm bus dæî liãûu thç âáy laì tên hiãûu vaìo duìng láûp trçnh âãø biãún maûch 8259A thaình maûch thåü () hoàûc chuí (); khi 8259A laìm viãûc trong hãû vi xæí lyï åí chãú âäü coï âãûm bus dæî liãûu thç chán naìy laì tên hiãûu ra duìng måí âãûm bus dæî liãûu âãø 8088 vaì 8259A thäng vaìo bus dæî liãûu hãû thäúng. Luïc naìy viãûc âënh nghéa maûch 8259A laì chuí hoàûc thåü phaíi thæûc hiãûn thäng qua tæì âiãöu khiãøn âáöu ICW4. + INT [O]: tên hiãûu yãu cáöu ngàõt âãún chán INTR cuía CPU 8088. + [I]: näúi våïi tên hiãûu baïo cháúp nháûn ngàõt cuía CPU. PIC 8259A chuí (åí chãú âäü khäng âãm näúi våïi CPU 8088 åí chãú âäü MIN Trãn hçnh 7.5 laì så âäö näúi maûch PIC 8259A laìm viãûc âäüc láûp (maûch chuí) våïi bus CPU 8088 laìm viãûc åí chãú âäü MIN. PIC 8259A chuí näúi våïi PCU 8088 åí chãú âäü MAX. Nãúu hãû vi xæí lyï 8088 laìm viãûc åí chãú âäü MAX thæåìng ta phaíi duìng maûch âiãöu khiãøn bus 8288 vaì caïc âãûm bus âãø cung cáúp caïc tên hiãûu thêch håüp cho bus hãû thäúng. Maûch 8259A phaíi laìm viãûc åí chãú âäü coï âãûm âãø näúi âæåüc våïi bus hãû thäúng naìy. Trãn hçnh 7.6 laì vê duû mäüt så âäö CPU 8088 chãú âäü MAX näúi våïi PIC 8259A. Trong maûch naì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 âoï tên hiãûu dæî liãûu cuía noï âæåüc näúi våïi bus dæî liãûu cuía vi xæí lyï vatf âoï âæåüc thäng qua caïc âãûm âãø näúi vaìo bus hãû thäúng. Hçnh 7.6. Näúi CPU 8088 chãú âäü MAX våïi PIC8259A Láûp trçnh cho PIC 8259A Âãø maûch PIC 8259A coï thãø hoaût âäüng âæåüc theo yãu cáöu, sau khi báût nguäön cáúp âiãûn PIC cáön phaíi âæåüc láûp trçnh bàòng caïch ghi vaìo caïc thanh ghi (tæång âæång våïi caïc cäøng) bãn trong noï caïc tæì âiãöu khiãøn khåíi âáöu (ICW) vaì tiãúp sau âoï laì caïc tæì âiãöu khiãøn hoaût âäüng (OCW). Caïc tæì âiãöu khiãøn khåíi âáöu duìng âãø taûo nãn caïc kiãøu laìm viãûc cå baín cho PIC, coìn caïc tæì âiãöu khiãøn hoaût âäüng seî quyãút âënh caïch thæïc laìm viãûc cuû thãø cuía PIC. Tæì âiãöu khiãøn hoaût âäüng seî âæåüc ghi khi ta muäún thay âäøi hoaût âäüng cuía PIC. Caïc tæì âiãöu khiãøn noïi trãn seî âæåüc giåïi thiãûu cuû thãø trogn caïc muûc sau. Caïc tæì âiãöu khiãøn khåíi âáöu ICW PIC 8259A coï táút caí 4 tæì âiãöu khiãøn khåíi âáöu laì ICW1 - ICW4. Trong khi láûp trçnh cho PIC khäng phaíi luïc naìo ta cuîng cáön duìng caí 4 tæì âiãöu khiãøn khåíi âáöu nhæîng coï luïc ta chè cáön ghi vaìo âoï 2 hay 3 tæì laì âuí (xem hçnh 7.7 âãø tháúy roî thæï tæû ghi vaì âiãöu kiãûn âãø ghi caïc âiãöu khiãøn ICW vaìo 8259A). Daûng thæïc cuía caï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 naìy ta tháúy bãn caûnh caïc bit dæî liãûu cuía tæì âiãöu khiãøn khåíi âáöu ICW ta coìn ghi roî thãm caí giaï trë cuû thãø cuía A0 tæång æïng cho mäùi ICW âoï. Âáöu vaìo âëa chè A0 vaì thæï tæû ghi seî giuïp ta phán biãût ra caïc thanh ghi khaïc nhau bãn trong PIC âãø ghi dæî liãûu cho caïc tæì âiãöu khiãøn. Vê duû A0 = 0 laì dáúu hiãûu âãø nháûn biãút ràòng ICW1 âæåüc âæa vaìo thanh ghi coï âëa chè chàôn trong PIC, coìn khi A0 = 1 thç caïc tæì âiãöu khiãøn khåíi âáöu ICW2, ICW3, ICW4 seî âæåüc âæa vaìo caïc thanh ghi coï âëa chè leí trong maûch PIC. ICW1 Bit D0 cuía ICW1 quyãút âënh 8259A seî âæåüc näúi våïi hoü vi xæí lyï naìo. Âãø laìm viãûc våïi hãû 16-32bit (8088 hoàûc hoü 80´86) thç ICW nháút thiãút phaíi coï IC4 = 0 (vaì nhæ váûy caïc bit cuía ICW4 seî bë xoïa vãö 0). Caïc bit coìn laûi cuía ICW1 âënh nghéa caïch thæïc taïc âäüng cuía xung yãu cáöu ngàõt (taïc âäüng theo sæåìn hay theo mæïc) taûi caïc chán yãu cáöu ngàõt IR cuía maûch 8259A vaì viãûc bäú trê caïc maûch 8259A khaïc trong hãû laìm viãûc âån leí hay theo chãú âäü näúi táöng. Caïc bit âæåüc âaïnh dáúu x laì khäng quan troüng vaì thæåìng âæåüc láúy giaï trë 0 âãø láûp trçnh cho caïc æïng duûng sau naìy. ICW2 Tæì âiãöu khiãøn khåíi âáöu naìy cho pheïp choün kiãøu ngàõt (säú hiãûu ngàõt) æïng våïi caïc bit T3-T7 cho caïc âáöu vaìo yãu cáöu ngàõt. Caïc bit T0-T2 âæåüc 8259A tæû âäüng gaïn giaï trë tuìy theo âáöu vaìo yãu cáöu ngàõt cuû thãø IRi. Vê duû nãúu ta muäún caïc âáöu vaìo cuía maûch 8259A coï kiãøu ngàõt laì 40-47H ta chè cáön ghi 40H vaìo caïc bit T3-T7. Nãúu laìm nhæ váûy thç IR0 seî coï kiãøu ngàõt laì 40H, IR1 seî coï kiãøu ngàõt laì 41H... ICW3 Tæì âiãöu khiãøn khåíi âáöu naìy chè duìng âãún khi bit SNGL thuäüc tæì âiãöu khiãøn khåíi âáöu ICW1 coï giaï trë 0, nghéa laì trong hãû coï caïc maûch 8259A laìm viãûc åí chãú âäü näúi táöng. Chênh vç váûy täön taûi 2 loaûi ICW3: 1 cho maûch 8259A chuí vaì 1 cho maûch 8259A thåü. ICW3 cho maûch chuí : duìng âãø chè ra âáöu vaìo yãu cáöu ngàõt Iri naìo cuía noï coï tên hiãûu INT cuía maûch thåü näúi vaìo. ICW3 cho maûch thåü : duìng laìm phæång tiãûn âãø caïc maûch naìy âæåüc nháûn biãút. Vç váûy tæì âiãöu khiãøn khåíi âáuìu naìy phaíi chæïa maî säú i æïng våïi âáöu vaìo Iri cuía maûch chuí maì maûch thåü âaî cho näúi vaìo. Maûch thåü seî so saïnh maî säú naìy våïi maî säú nháûn âæåüc åí Cas2-Cas0. Nãúu bàòng nhau thç säú hiãûu ngàõt seî âæåüc âæa ra buï khi coï INTA. Vê duû : Trong mäüt hãû vi xæí lyï ta coï mäüt maûch 8259A chuí vaì 2 maûch 8259A thåü näúi vaìo chán IR1 cuía maûch chuí. Tçm giaï trë phaíi gaïn cho caïc tæì âiãöu khiãøn khåíi âáöu ICW ? Giaíi : Nhæ trãn âaî noïi, âãø caïc maûch naìy laìm viãûc âæåüc væoïi nhau ta seî phaíi gia caïc tæì âiãöu khiãøn khåíi âáöu nhæ sau: ICW3 = 03H cho maûch chuí. ICW3 = 00H cho maûch thæûo thæï nháút vaì ICW3 = 01H cho maûch thåü thæï hai. ICW4 Tæì âiãöu khiãøn khåíi âáöu naìy chè duìng âãún khi trong æìt âiãöu khãøin ICW1 coï IC4 = 1 (cáön thãm ICW4) Bit MPM cho ta khaí nàng choün loaûi vi xæí lyï âãø laìm viãûc våïi 8259A. Bit MPM = 1 cho pheïp caïc bäü vi xæí lyï tæì 8086/88 hoàûc cao hæon laìm viãûc væoïi 8259A. Bit SFNM = 1 cho pheïp choün chãú âäü æu tiãn cäú âënh âàûc biãût. Trong chãú âäü naìy yãu cáöu ngàõt våïi mæïc æu tiãn cao nháút hiãûn thåìi tæì mäüt maûch thåü laìm viãûc theo kiãøu näúi táöng seî âæåüc maûch chuí nháûn biãút ngay caí khi maûch chuí coìn âang phaíi phuûc vuû mäüt yãu cáöu ngàõt åí maûch thåü khaïc nhæng våïi mæïc æu tiãn tháúp hån. Sau khi caïc yãu cáöu ngàõt âæåüc phuûc vuû xong thç chæång trçnh phuûc vuû ngàõt phaíi coï lãûnh kãút thuïc yãu cáöu ngàõt (EOI) âàût træåïc lãûnh tråí vãö (IRET) âæa âãún cho maûch 8259A chuí. Khi bit SFNM = 0 thç chãú âäü æu tiãn cäú âënh âæåüc choü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æoïi maûch 8259A khäng duìng âãún ICW1 thç chãú âäü naìy âaî âæåüc choün nhæ laì ngáöm âënh. Trong chãú âäü æu tiãn cäú âënh taûi mäüt thåìi âiãøm chè coï mäüt yãu cáöu ngàõt i âæåüc phuûc vuû (bit Iri = 1) luïc naìy áútt caí caïc yãu cáöu khaïc væïoi æïmc æu tiãn cao hæon coï thãø ngàõt yãu cáöu khaïc våïi mæïc æu tiãn tháúp hån . Bit BUF cho pheïp âënh nghéa maûch 8259A âãø laìm viãûc våïi CPU trong træåìng håüp coï âãûm hoàûc khäng coï âãûm näúi våïi buï hãû thäúng. Khi laìm viãûc åí chãú âäü coï âãûm (BUF = 1). Bit M/S = 1/0 cho pheïp ta choün maûch 8259A âãø laìm viãûc åí chãú âäü chuí/ thåü. SP/EN tråí thaình âáöu ra cho pheïp måí âãûm âãø PIC vaì CPU thäng væoïi buï hãû thäúng. Bit AEOI = 1 cho pheïp choün caïch kãút thcuï yãu cáöu ngàõt tæû âäüng. Khi AEOI = 1 thç 8259A tæû âäüng xoïa ISRi = 0 khi xung INTA cuäúi cuìng chuyãøn lãn mæïc cao maì khäng laìm thay âäøi thæï tæû æu tiãn. Ngæåüc laûi. Khi ta choün caïch kãút thuïc yãu cáöu ngàõt thæåìng (AEOI = 0) thç chæång trçnh phuûc vuû ngàõt phaíi coï thãm lãûnh EOI âàût træåïc lãûnh IRET âãø kãút thuïc cho 8259A. Caïc tæì âiãöu khiãøn hoaût âäüng OCW Caïc tæì âãçu khiãøn hoaût âäüng OCW seî quyãút âënh maûch 8259A seî hoaût âäüng nhæ thãú naìo sau khi noï âaî âæåüc khåíi âáöu bàòng caïc tæì âiãöu khiãøn ICW . Táút caí caïc tæì âiãöu khiãøn hoaût âäüng seî âwowcj ghi vaìo caïc thanh ghi trong PIC khi A0 = 0,træì OCW1 âæåüc ghi khi A0 = 1. Daûng thæïc cuía OCW âwocj trinh baìy trãn hçnh 7.9 OCW1 OCW1 duìng âãø ghi giaï trë cuía caïc bit màût naû vaìo thanh ghi màût naû ngàõt IMR. Khi mäüt bit màût naû naìo âoï cuía âæåüc láûp thç yãu cáöu ngàõt tæång æïng våïi màût naû âoï seî khäng âæåüc 8259A nháûn biãút næîa (bë che). Tæì âiãöu khiãøn naìy phaíi âæåüc âæa âãún 8259A ngay sau khi ghi caïc ICW vaìo 8259A . Ta cuîng coï thãø âoüc laûi IMR âãø xaïc âënh tçnh traûng màût naû ngàõt hiãûn taûi (xem trong thåìi âiãøm hiãûn taûi yãu cáöu ngàõt naìo bë che) OCW2 Caïc bit R.SL vaì EOI phäúi håüp væoïi nhau cho pheïp choün ra caïc caïch thæïc kãút thuïc yãu cáöu ngàõt khaïc nhau. Mäüt vaìi caïch thcuï yãu cáöu ngàõt coìn taïc âäüng tåïi caïc yãu cáöu ngàõt âæåüc chè âêch danh våïi mæïc æu tiãn âæåüc giaíi maî hoïa cuía 3 bit L2,L1,L0 Træåïc khi noïi vãö caïc caïch kãút thuïc yãu cáöu ngàõt cho caïc chãú âäü ta cáön måí dáúu ngoàûc åí âáy âãø giåïi thiãûu caïc chãú âäü laìm viãûc cuía 8259A. a. Chãú âäü æu tiãn cäú âënh : Âáy laì chãú âäü laìm viãûc ngáöm âënh cuía 8259A sau khi noï âaî âæåüc naûp caïc tæì âiãöu khiãøn khåíi âáöu. Trong chãú âäü naìy, caïc âáöu vaìo IR7-IRO âæåüc gaïn cho caïc mæïc æu tiãn cäú âënh: IRO âæåüc gaïn cho mæïc æu tiãn cao nháút coìn IR7 mæïc æu tiãn tháúp nháút. Mæïc æu tiãn naìy âæåüc giæî khäng thay âäøi cho âãún khi ghi maûch 8259A bë láûp trçnh khaïc âi do OCW2. Trong chãú âäü æu tiãn cäú âënh tai 1 thåìi âiãøm chè coï 1 yãu cáöu ngàõt i âæåüc phuûc vuû (bit ISRi = 1) luïc naìy táút caí aïc yãu cáöu khaïc våïi mæïc æu tiãn tháúp hån âãöu bë cáúm, táút caí caïc yãu cáöu khaïc væoïi mæïc æu tiãn tháúp hån âãöu coï thãø ngàõt yãu cáöu khaïc våïi mæïc æu tiãn tháúp hån. OCW1 A0 D7 D6 D5 D4 D3 D2 D1 D0 I M7 M6 M5 M4 M3 M2 M1 M0 Màût naû ngàõt taûi caïc yãu cáöu ngàõt 1: Coï màût naû 0: Khäng coï màût naû OCW2 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0 Lãûnh EOI thæåìng Lãûnh EOI chè âêch danh (*) Âäøi mæïc æu tiãn khi coï EOI thæåìng. Láûp chãú âäü quay khi coï EOI tæû âäüng Xoïa chãú âäü quay khi coï EOI tæû âäüng Âäøi mæïc æu tiãn khi coï EOI âêch danh (*) Lãûnh láûp tæïc æu tiãn (*) Khäng laìm gç Kãút thuïc Ngàõt (EOI Âäøi mæïc æu tiãn tæû âäüng Âäøi m.æ.t Âêch danh 0 0 Maî hoïa mæïc æu tiãn ngàõt bë taïc âäüng 1 0 1 1 1 0 000.mæïc 0 111 ...mæïc 7 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 (*) duìng täø håüp L2 L1 L0 OCW3 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P ERIS RIS 10: doüc IRR åí láön âoüc sau 11: âoüc ISR åí láön âoüc sau Thàm doì hiãûn traûng cuía yãu cáöu ngàõt 1: âoüc maì mæïc æu tiãn cao nháút åí láön âoüc sau Chãú âäü màût naû âàûc biãût 10: Xoïa chãú âäü màût naû âàûc biãût 11: Láûp chãú âäü màût naû âàûc biãût Hçnh 7.9. Daûng thæïc cuía caïc tæì âiãöu khiãøn hoaût âäüng OCW b.chãú âäü quay mæïc æu tiãn (æu tiãn luán phiãn ) tæû âäüng : åí chãú âäü naìy sau khi mäüt yãu cáöu ngàõt âæåüc phuûc vuû xong ,8259A seî xoaï bit tæång æïng cuía noï trong thanh ghi ISR vaì gaïn cho âáöu vaìo cuía noï mæïc æu tiãn tháúp nháút âãø taûo âiãöu kiãûn cho caïc yãu cáöu ngàõt khaïc coï thåìi cå âæåüc phuûc vuû . c. chãú âäü quay (âäøi) mæïc æu tiãn chè âêch danh : åí chãú âäü naìy ta cáön chè roî (âêch danh) âáöu vaìo IRi naìo ,våïi i=L2L1L0,âæåüc gaïn mæïc æu tiãn tháúp nháút ,âáöu vaìo IRi+1 seî âuåüc tæû âäüng gaïn mæïc æu tiãn cao nháút . Báy giåì ta âoïng dáúu ngoàûc âaî âæåüc ra måí åí trãn vaì tråí laûi caïc váún âãö liãn quan âãún OC WC.ta seî noïi roî viãûc caïc bit R,Slvaì SOI phäúi håüp våïi nhau nhæ thãú naìo âãø taûo ra caïc lãûnh quy âënh caïc caïch thæïc kãút thuïc yãu caìu ngàõt cho caïc chãú âäü laìm viãûc khaïc nhau âaî noïi âãún åí pháön trãn (xem thãm hinh 7.9) . 1. kãút thuïc yãu cáöu ngàõt thæåìng : chæång trçnh coìn phuûc vuû ngàõt åphaíi coï lãûnh EOI âàût træåïc lãûnh tråí vãö IRET cho 8259A .maûch 8259 A seî xaïc âënh yãu cáöu ngàõt Iri væìa âæåüc phuûc vuû vaì xoaï bit ISRi tæång æïng cuía noï âãø taûo âiãöu kiãûn cho chênh yãu cáöu ngàõt naìy hoàûc caïc ngàõt khaïc coï mæïc æu tiãn tháúp hån coï thãø âæåüc taïc âäüng . 2.kãút thuïc yãu cáöu ngàõt thæåìng : chæång trçnh coìn phuûc vuû ngàõt phaíi co lãûnh EOI chè âêch danh âàût træåïc lãûnh tråí vãö IRET cho 8259A . maûch 8259A xoaï âêch danh bit ISRi ,våïi i=L2L1L0 âãø taûo âiãöu kiãûn cho chênh yãu cáöu ngàõt naìy hoàûc caïc ngàõt khaïc coï mæïc æu tiãn tháúp hån coï thãø âæåüc taïc âäüng. 3. Quay (âäøi) mæïc æu tiãn khi kãút thuïc yãu cáöu ngàõt thæåìng: chæång trçnh con phuûc vuû ngàõt phaíi coï lãûnh EOI âàût træåïc lãûnh tråí vãö IRET cho 8259A. Maûch 8259A seî xaïc âënh yãu cáöu ngàõt thæï i væìa âæåüc phuûc vuû. Xoïa bit ISRi tæång æïng vaì gaïn luän mæïc æu tiãn tháúp nháút cho âáöu vaìo IR, naìy coìn âáöu vaìo IRi+1 seî âwocj gaï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, : Mæïc æu tiãn tháúp nháút) IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 Traûng thaïi cuía ISR 0 1 0 1 0 0 0 0 Mæïc æu tiãn 7 6 5 4 3 2 1 0 Thanh ghi ISR sau khi IR4 âæåüc cháúp nháûn vaì sau khi coï lãûnh quay: (o: mæïc æu tiãncao nháút,7: mæïc æu tiãn tháúp nháút) IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 Traûng thaïi cuía ISR 0 1 0 0 0 0 0 0 Mæïc æu tiãn 2 1 0 7 6 5 4 3 Hçnh 7.10.ISR vaì mæïc æu tiãn våïi lãûnh quay khi kãút thuïc ngàõt thæåìng . Coï thãø theo doîi caïch tæïhc hoaût âäüng cuía maûch 8259A trong chãú âäü quay (âäøi) mæïc æu tiãn khi kãút thuïc yãu cáöu ngàõt thæåìng thäng qua vê duû minh hoüa trçnh baìy trãn hçnh 7.10 4. Quay (âäøi) mæïc æu tiãn trong chãú âäü kãút thuïc yãu cáöu ngàõt tæû âäüng: chè cáön mäüt láön âæa lãûnh choün chãú âäü âäøi mæïc æu tiãn khi kãút thuïc yãu cáöu ngàõt tæû âäüng. Coï thãø choün chãú âäü naìy bàòng lãûnh láûp “chãú âäü quay khi coï EOI tæû âäüng” . Tæì âoï tråí âi 8259A seî âäøi mæïc æu tiãn mäùi khi kãút thuïc ngàõt tæû âäüng theo caïch tæång tæû nhæ åí muûc 3. Muäún boí chãú âäü naìy ta coï thãø duìng lãûnh xoïa “chãú âäü quay khi coï EOI tæû âäüng”. 5. Quay (âäøi) mæïc æu tiãn khi kãút thuïc yãu cáöu ngàõt âêch danh: chæång trçnh coìn phuûc vuû ngàõt phaíi coï lãûnh EOI âêch danh cho 8259A âàût træåïc lãûnh tråí vãö IRET . Maûch 8259A seî xoïa bit ISRi cuía yãu cáöu ngàõt tæång æïng vaì gaïn luän mæïc æu tiãn tháúp nháút cho âáöu vaìo Iri, våïi i = L2 L1 L0. Yãu cáöu ngàõt IRi+1 seî âæåüc gaïn mæïc æu tiãn cao nháút. OCW3 Tæì âiãöu khiãøn hoaût âäüng sau khi âæåüc ghi vaìo 8259A cho pheïp: + Choün caïc ra thanh ghi âãø âoüc + Thàm doì traûng thaïi yãu cáöu ngàõt bàòng caïch traûng thaïi cuía âáöu vaìo yãu cáöu ngàõt Iri våïi mæïc æu tiãn cao náúht cuìng maî cuía âáöu vaìo âoï vaì. + Thao taïc våïi màût naû âàûc biãût . D7 D6 D5 D4 D3 D2 D1 D0 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 a) IRR Isi = 0: yãu cáöu ngàõt i khäng âæåüc phuûc vuû ISi = 1: âáöu vaìo i coï yãu cáöu ngàõt D7 D6 D5 D4 D3 D2 D1 D0 IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 b) ISR Isi = 0: yãu cáöu ngàõt i khäng âæåüc phuûc vuû Isi = 1: yãu cáöu ngàõt i âang âæåüc phuûc vuû Hçnh 7.11. Daûng thæïc cuía thanh ghi yãu cáöu ngàõt vaì thanh ghi phuûc vuû. Caïc thanh ghi IRR vaì ISR coï thãø âoüc âæåüc sau khi naûp vaìo 8259A tæì âiãöu khiãøn OCW3 våïi bit ERIS = 1: bit RIS = 0 seî cho pheïp âoüc IRR. Bit RIS = 1 seî cho pheïp âoüc ISR. Daûng thæïc cuía caïc thanh ghi naìy âwocj biãøu diãùn trãn hçnh 7.11a vaì 6.11b Bàòng viãûc âæa vaìo 8259A tæì âiãöu khiãøn OCW3 våïi bit P = 1 ta coï thãø âoüc âæåüc trãn bus dæî liãûu åí láön âoüc tiãúp ngay sau âoï tæì thàm doì, trong âoï coï caïc thäng tin vãö yãu cáöu ngàõt våïi mæïc æu tiãn cao nháút âang hoaût âäüng vaì maî tæång æïng våïi yãu cáöu ngàõt áúy theo daûng thæïc âæåüc biãøu diãùn trãn hçnh 7.12. D7 D6 D5 D4 D3 D2 D1 D0 I X X X X W2 W1 W0 1: âang coï yãu cáöu ngàõt maî säú hoïa cuía yãu cáöu ngàõt 0: KHäng coï yãu cáöu ngàõt (X: khäng âãø yï ) Hçnh 7.12 Daûng thæïc cuía tæì thàm doì traûng thaïi yãu cáöu ngàõt Coï thãø goüi âáy laì chãú âäü thàm doì yãu cáöu ngàõt vaì chãú âäü naìy thæåìng âwocj æïng duûng trong træåìng håüp coï nhiãöu chæång phuûc vuû ngàõt giäúng nhau cho mäüt yãu cáöu ngàõt vaì viãûc choün chæång trçnh naìo âãø sæí duûng laì traïch nhiãûm cuía ngæåìi láûp trçnh. Toïm laûi, muäún duìng chãú âäü thàm doì cuía 8259A âãø xaïc âënh yãu cáöu ngàõthiãûn taûi ta cáön laìm caïc thao taïc láön læåüt nhæ sau: - Cáúm caïc yãu cáöu ngàõt bàòng lãûnh CLI - Ghi tæì lãûnh OCW3 væoïi bit P = 1 - Âoüc tæì thàm doì traûng thaïi yãu cáöu ngàõt trãn bus dæî liãûu . Bit ESMM = 1 cho pheïp 8259A thao taïc våïi chãú âäü màût naû âàûc biãût. Bit SMM = 1 cho pheïp láûp chãú âäü màût naû âàûc biãût. Chãú âäü màût naû âàûc biãût âæåüc duìng âãø thay âäøi thæï tæû æu tiãn ngay bãn trong chæång trçnh con phuûc vuû ngàõt. Vê duû trong træåìng håüp coï mäüt yãúu cáöu ngàõt cáúm (bë che båíi chæång trçnh phuûc vuû ngàõt våïi tæì lãûnh OCW1 maì ta laûi muäún cho pheïp caï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 ngàõt bë cáúm âoï âæåüc taïc âäüng thç ta seî duìng chãú âäü màût naû âàûc biãût. Mäüt khi âaî âæåüc láûp, chãú âäü màût naû âàûc biãût seî täön taûi cho tåïi khi bë xoïa bàòng caïch ghi vaìo 8259A mäüt tæì lãûnh OCW3 khaïc væïoi bit SMM = 0. Màût naû âàûc biãût khäng aính hæåíng tåïi caïc yãu cáöu ngàõt væoïi mæïc æu tiãn cao hån.) Cuäúi cuìng âãø coï caïi nhçn mäüt caïch coï hãû thäúng vãö hoaût âäüng cuía hãû vi xæí lyï våïi CPU 8088 vaì PIC 8259A khi cso yãu cáöu ngàõt, ta toïm læåüt hoaût âäüng cuía chuïng nhæ sau: 1. Khi coï yãu cáöu ngàõt tæì thiãút bë ngoaûi vi taïc âäüng vaìo mäüt trong caïc chán IR cuía PIC .8259A seî âæa INT = 1 âãún chán INTR cuía 8088. 2. 8088 âæa ra xung INTA âáöu âãún 8259A 3. 8259A duìng xung INTA âáöu nhæ laì thäng baïo âãø noï hoaìn táút caïc xæí lyï näüi bäü cáön thiãút, kãø caí xæí lyï æu tiãn nãúu nhæ coï nhiãöu yãu cáöu ngàõt cuìng xaí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 cuía yãu cáöu ngàõt væìa âæåüc nháûn biãút. 6. 8088 duìng säú hiãûu ngàõt âãø tênh ra âëa chè ngàõt cuía vectå ngàõt tæång æïng . 7. 8088 cáút FR, xoïa caïc cåì Ç vaì TF vaì cáút âëa chè tråí vãö CS:IP vaìo ngàn xãúp. 8. 8088 láúy âëa chè CS:IP cuía chæång trçnh phuûc vuû ngàõt tæì baíng vectå ngàõt vaì thæûc hiãûn chæång trçnh âoï . Mäüt säú vê duû láûp trçnh våïi 8259A Vê duû 1: Láûp trçnh cho 8259A âãø laìm viãûc væïoi CPU 8088 åí chãú âäü cuî (âån leí), trong hãû coï âãûm Bus, chãú âäü æu tiãn cäú âënh vaì våïi EOI thæåìng, IR kêch theo mæïc, tên hiãûu IR0 âæåüc gaïn säú hiãûu ngàõt laì 50H. Giaíi Tæì hçnh 7.8 vaì càn cæï theo caïc yãu cáöu cuía baìi toaïn ta coï thãø tæìû âiãöu khiãøn khåíi âáöu nhæ sau : ICW1 = 00011011 = 1BH D0 = 1 Cáön thãm ICW4 D1 = 1 Laìm viãûc âån leí, khäng cáön ICW3 D2 = 0 Laìm viãûc våïi hãû 8086/88 D3 = 1 Âáöu vaìo IR àn theo mæïc D4 = 1 Bàõt buäüc våïi ICW1 D5 = D6 = D7 =0 gaïn bàòng 0 cho hãû 8086/88 ICW2 = 01010000 = 50H Vç caïc bit T1 - T3 cuía ICW2 phaíi maî hoïa trë säú 50H âãø IR0 - IR7 âæåüc maî hoïa tiãúp båíi caïc Bit T2 - T0 = 000 ICW3 khäng cáön âãúm ICW4 = 00001101 = 0DH D0 = 1 laìm viãûc våïi hãû säú 8086/88 D1 = 0 EOI thæåìng (phaíi coï EOI træåïc IRET) D3 D2 = 11 Laìm viãûc åí chãú âoü chuí trong hãû coï âãûm Bus D4 = 0 Chãú âäü æu tiãn cäú âënh D5 = D6 = D7 = 0 Luän bàòng 0 cho ICW4 Vê duû 2 : Viãút chæång trçnh âãø khåíi âáöu cho maûch 8259A åí vê duû trãn nãúu noï âæåüc näúi væoïi 8088 theo så âäö trãn hçnh 7.6 våïi âëa chè F0H vaì F1H Giaíi Âoaûn chæång trçnh âãø khåíi âáöu cho maûch naìy coï thãø laì: MOV AL,1BH ;ICW1 OUT OFOH, AL ;ICW1 âæa ra cäøng FOH MOV Al,50H ;ICW2 OUT OF1H,AL ;ICW2 âæa ra cäøng F1H MOV AL, ODH ;ICW4 OUT OF1H, AL ;ICW4 âæa ra cäøng F1H Vê duû 3: Giaí thiãút taûi chán IR3 cuía maûch 8259A åí trãn coï tên hiãûu yãu cáöu ngàõt .Taûi chæång trçnh con phuûc vuû cho yãu cáöu ngàõt naìy coï cáön phaíi coï lãûnh kãút thuïc ngàõt (EOI) khäng ? nãúu coï thç haîy viãút ra caïc lãûnh âoï. Giaíi: Giaí thiãút taûi IR3 coï tên hiãûu yãu cáöu ngàõt vaì CPU âaî traí låìi cháúp nháûn ngàõt. 8259A seî láûp Bit ISR3 = 1 âãø ghi nhåï laì yãu cáöu ngàõt IR3 âang âæåüc phuûc vuû. Vç træåïc âoï ta âaî âënh nghéa chãú âäü kãút thuïc ngàõt bçnh thæåìng cho 8259A, nãn trong chæång trçnh con phuûc vuû ngàõt cuía yãu cáöu ngàõt naìy ta phaíi coï lãûnh kãút thuïc ngàõt EOI âæa âãún 8259A âãø xoïa Bit ISR3 âæpåüc láûp træåïc âoï, taûo âiãöu kiãûn cho caïc yãu cáöu ngàõt khaï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 taûi chán IR3 coï thåìi cå âæåüc phuûc vuû. Daûng thæåìng tháúy cuía 1 chæång trçnh con phuûc vuû ngàõt kiãøu naìy coï thãø nhæ sau (ta chè chuï yï nháún maûnh âãún caïc lãûnh cuäúi liãn quan âãún EOI): Phuc vu IR3 Proc ; thán cuía chæång trçnh con phuûc vuû ngàõt . MOV AL20 ;OCW2 væoïi EOI âãø kãút thuïc OUT OFOH, AL ; âæa OCW2 âãún 8259A . IRET ; tråí vãö chæång trçnh chênh phuc vu IR3Endp Vê duû 4: Giaí thiãút váùn sæí duûng så âäö trãn hçnh 7.6 vaì caïc säú liãûu nhæ åí caïc vê duû træåïc. Hãû naìy bçnh thæåìng laìm mäüt cäng viãûc gç âoï, nhæng khi coï yãu cáöu ngàõt åí IR3 ta phaíi âoüc 100 dæî liãûu åí cäøng 70H, nhán âäi mäùi dæî liãûu âoüc âæåüc räöi âæa ra cäøng 71H (âãø cho âån giaín ta coi dæî liãûu khi âoüc vaì caí khi âaî nhán âäi váùn chæïa âæåüc trong 1 Byte) Giaíi Hçnh 7.13 biãøu diãùn læu âäö cuía chæång trçnh thæûc hiãûn cäng viãûc noïi trãn. Âãø chuáøn bë cho cäng viãûc trãn chæång trçnh chênh phaíi âæåüc bàõt âáöu bàòng caïc lãûnh khåíi âáöu cho 8259A nhæ trong caïc vê duû træåïc, tiãúp theo âoï laì cäng viãûc cuû thãø âàût ra cho chæång trçnh chênh. Trong chæång trçnh con phuûc vuû ngàõt ta phaíi âoüc caïc giaï trë vaìo vaì nhán âäi räöi âæa ra cäøng. Træåïc khi kãút thuïc chæång trçnh con âãø tråí laûi chæång trçnh chênh ta phaíi coï caïc lãûnh kãút thuïc yãu cáöu ngàõt (EOI) cho 8259A nhæ åí vê dæuû 3. Giaí thiãút ràòng chæång trçnh con phuûc vuû ngàõt xong sau khi âaî dëch ra maî maïy seî âæåüc naûp vaìo ROM vaì âãø laûi âëa chè C0000H. Khi muäún cho chaûy chæång trçnh ta phaíi vaìo âëa chè æïng våïi Vectå ngàõt 53H vaì thay âäøi näüi dung cuía Vectå naìy sao cho 2 ä 0014CH, 0014DH chæïa 0000H vaì 2 ä tiãúp theo 0014EH, 0014FH chæïa C000H (âëa chè chæång trçnh con phuûc vuû ngàõt) . Nhåì váûy mäùi khi coï yãu cáöu ngàõt tåïi chán IR3 cuía 8259A thç chæång trçnh con phuûc vuû ngàõt âæåüc kêch hoaût. Thán cuía chæång trçnh chæïa seî chæïa caïc lãûnh nhæ sau: CLI ;cáúm caïc ngàõt MOV AL, 1BH ; ICW1 OUT OFOH,AL ; ICW1 âæa ra cäøng FOH MOV AL, 50H ; ICW2 OUT OF1H, AL ; ICW2 âæa ra cäøng F1H MOV AL, ODH ;ICW4 OUT OF1H,Al ; ICW4 âæa ra cäøng F1H MOV AL, 0 ; thaïo màût naû cho caïc IR OUT OF1H, Al ;OCW1 âæa âãún 8259A STI ; cho pheïp ngàõt ; Caïc cäng viãûc cuía chæång trçnh chênh åí âáy Chæång trçnh con phuûc vuû ngàõt IR3 coï daûng sau : Phucvu IR3 Proc PUSH AX ; Cáút caïc thanh ghi PUSH BX PUSH CX IN AL,OF1H ; Âoüc màût naû ngàõt MOV BL, AL ; Cáút màût naû MOV AL,0F7H ; Chè cho pheïp yãu cáöu IR3 OUT OF1H, AL ; âæåüc taïc âäüng MOV CL,100 ; 100 säú liãûu phaíi thao Taïc TIEP: IN AL, 70H ; âoüc vaìo mäüt säú liãûu SHL AL, 1 ; nhán âäi räöi OUT 71H,AL ; âæa ra cäøng LOOP TIEP MOV AL, BL ; Láúy laûi màût naû cuî OUT 0F1H,AL ; âæa màût naû cuî âãún 8259A MOV AL, 20 ; OCW2 våïi EOI âãø kãút thuïc OUT OFOH, AL ; âæa OCW2 âãún 8259A POP CX ; láúy laûi caïc thanh ghi POP BX POP AX STI ; cho pheïp ngàõt tråí laûi IRET ; tråí vãö chæång trçnh chênh Phucvu IR3 Endp Trong chæång trçnh con åí trãn ta xæí lyï màût naû ngàõt khaï cáøn tháûn. Vç åí trong chæång trçnh chênh, sau khi khåíi âáöu cho maûch 8259A ta âaî cho pheïp táút caí caïc ngàõt coï thãø taïc âäüng vaì vç chæång trçnh chênh khi hoaût âäüng coï thãø thay âäøi caïc màût naû khaïc cuía 8259A (træì màût naû cuía IR3), nãn taûi chæång trçnh con trong khi phuûc vuû yãu cáöu ngàõt IR3 ta âaî cáút giaï trë cuía caïc màût naû ngàõt hiãûn thåìi räid uìng lãûnh âãø che caïc yãu cáöu ngàõt khaïc âi vaì chè âãø yãu cáöu ngàõt IR3 âæåüc nháûn biãút. Khi xæí lyï xong caïc cäng viãûc ta phaíi traí laûi giaï trë màût naû ngàõt cuî cho 8259A räöi mæoïi tråí vãö chæång trçnh chênh. 3. Ngàõt trong maïy IBM PC Vç caïc maïy IBM PC âæåüc sæí duûng ráút räüng raîi nãn taûi cuäúi chæång naìy ta seî trçnh baìy så læåüc cáúu truïc ngàõt trong caïc maïy âoï. 3.1 Ngàõt trong maïy IBM PC/XT Baíng 7.3 Caïc ngàõt chênh cuía IBM PC/XT INT N? Âëa chè Daình cho 0 00E3 : 3072 Pheïp chia cho 0 1 0600 : 08ED Chaûy tæìng lãûnh 2 F000 : E2C3 NMI 3 0600 : 08E6 Âiãøm dæìng 4 0700 : 0174 Traìn khi laìm viãûc våïi säú coï dáúu 5 F000 : FF34 In maìn hçnh (BIOS) 6.7 Âãø daình 8 F000 : FEA5 IRQ0 cuía 8259A (ngàõt BIOS cuía âäöng häö) 9 F000 : E987 IRQ1 cuía 8259A (ngàõt BIOS cuía baìn phêm) A IRQ2 cuía 8259A (âãø daình) B IRQ3 cuía 8259A (âãø daình cho COM 2) C IRQ4 cuía 8259A (âãø daình cho COM 1) D IRQ5 cuía 8259A (âãø daình cho âéa cæïng) E F000 : EF57 IRQ6 cuía 8259A (cho äø âéa mãöm) F 0070 : 0147 IRQ7 cuía 8259A (cho maïy in LPT1) ... ... ... 60 - 66 Daình cho ngæåìi sæí duûng Trong maïy IBM PC/XT caïc täø chæïc ngàõt coï thãø toïm læåüt nhæ åí trãn baíng 7.3 . Maïy IBM PC/XT coï sæí duûng 1 maûch PIC 8259A. Caïc âáöu vaìo IRi cuía maûch naìy âæåüc sæí duûng hãút âãø gàõn cho caïc thiãút bë ngoaûi vi cuû thãø nhæ baìn phêm, maûch âäöng häö thåìi gian thæûc ... khi khåíi âäüng, maûch PIC 8259A cuía maïy IBM PC/XT âæåüc ghi våïi caïc tæì âiãöu khiãøn khåíi âáöu sau (ghi vaìo cäøng 20H vaì 21 H) + ICW1 = 13H ; Kêch sæåìn, âån leí, cáön 1 ICW4 + ICW2 = 08H ; Kiãøu ngàõt 8 + ICW3 khäng cáön + ICW4 = 09H ; Coï âãûm, 8086, EOI træåïc IRET Caïc ngàõt daình cho ngæåìi sæí duûng våïi INT 60H – INT66H.Nãúu sæí duûng caïc ngàõt naìy cho caïc cäng viãûc cuía mçnh, ngæåìi sæí duûng phaíi coï thãm caïc maûch phuû âãø âæa yãu cáöu ngàõt âãún CPU vaì âãø âæa säú hiãûu ngàõt N vaìo BUS dæî liãûu cho CP âoüc khi coï traí låìi cháúp nháûn yãu cáöu ngàõt INTA . 3.2 Ngàõt trong maïy IBM PC/AT Trong caïc maïy IBM PC/AT (våïi caïc CPU tæì 80286 tråí âi) Cáúu truïc cuía hãû thäúng coï mäüt säú thay âäøi so våïi maïy XT. Lyï do chênh laì åí caïc maïy thãú hãû sau ngæåìi ta âaî sæí duûng 2 maûch PIC 8259A (so våïi 1 PIC våïi caïc maïy XT) âãø måí räüng khaí nàng quaín lyï 1 säú låïn hån caïc yãu cáöu ngàõt thäng qua PIC. Så âäö näúi cuía caïc maûch PIC 8259A chuí vaì thåü nhæ trãn hçnh 7.14 Viãûc gaïn càõt yãu cáöu ngàõt IRQ cho caïc ngàõt INT N âæåüc thãø hiãûn trãn abngr 7.4 . Caïc ngàõt INT N coìn laûi cuîng giäúng nhæ maïy IBM PC/XT . Baíng 7.4. Caïc IRQ cuía caïc maïy PC/AT IRQ INT N? Daình cho IRQ0 INT08H Bäü âãúm 8254 âaût TC IRQ1 INT09H Baìn phêm IRQ2 INT0AH Yãu cáöu ngàõt tæì 8259A thåü IRQ3 INT0BH COM 2 IRQ4 INT0CH COM 1 IRQ5 INT0DH Cäüng maïy in song song LPT2 IRQ6 INT0EH Âiãöu khiãøn âéa mãöm IRQ7 INT0FH Cäüng maïy in song song LPT1 IRQ8 INT70H CMOS cuía âäöng häö thåìi gian thæûc IRQ9 INT71H Âënh hæåïng laûi bàòng chæång trçnh vãö INT0AH IRQ10 INT72H Daình cho ngæåìi sæí duûng IRQ11 INT73H Daình cho ngæåìi sæí duûng IRQ12 INT74H Chuäüt cuía PS/2 IRQ13 INT75H Âäöng xæí lyï toaïn hoüc IRQ14 INT76H ÄØ âéa cæïng IRQ015 INT77H Daình cho ngæåìi sæí duûng Sau khi khåíi âäüng CPU ghi caïc tæì âiãöu khiãøn vaìo PIC nhæ sau: * PIC chuí (cäøng 20H vaì 21H) + ICW1 = 11H ; kêch sæåìn,chuí , cáön ICW4 + ICW2 = 8 ; Kiãøu ngàõt 8 + ICW3 = 04H ; Chuí coï thåü åí mæïc 2 + ICW4 = 01H ; chuí khäng coï âãûm, 80 x 86,EOI træåïc IRET. * PIC thåü (cäøng A0H vaì A1H) + ICW1 = 11H ; Kêch sæåìn,thåü , cáön ICW4 + ICW2 = 70H ; Kiãøu ngàõt 70H + ICW3 = 02H ; Thåü coï chuí åí mæïc 2 + ICW4 = 01H ; Thåü khäng coï âãûm 80 x 86, EOI træåïc IRET. Viãûc sæí duûng khaí nàng ngàõt trãn maïy vi tênh IBM PC âãø vaìo/ra dæî liãûu khi coï yãu cáöu theo kiãøu nhæ åí vê duû træåïc cuîng coï thãø thæûc hiãûn âæåüc nhæng phaíi coï caïc thay âäøi trong chæång trçnh cho phuì håüp våïi cáúu truïc ngàõt cuû thãø trong mäùi loaûi maïy. Vç näüi dung caïc vectå ngàõt cuía caïc maïy coï thãø khaïc nhau chuït êt do coï sæû khaïc nhau giæîa caïc phiãn baín DOS vaì BIOS do âoï ta phaíi tham khaío taìi liãûu cuû thãø cuía tæìng maïy âãø thæûc hiãûn âæåüc täút viãûc täø chæïc chæång trçnh. Hån næîa vãö pháön cæïng åí caïc maïy AT vaì XT coï cáúu truïc ngàõt håi khaïc nhau nãn viãûc täø chæïc vaìo/ ra dæî liãûu bàòng ngàõt laûi cuîng phaíi âæåüc xem xeït cáøn thán. Vãö màût chæång trçnh thç chæång trçnh chênh vaì chæång trçnh con phuûc vuû ngàõt âãöu phaíi âæåüc taíi vaìo bäü nhåï RAM cuía maïy dæåïi sæû kiãøm soaït cuía DOS nãn ta phaíi viãút chuïng dæåïi daûng thêch håüp sao cho trong khi chæång trçnh chênh laìm viãûc maì coï yãu cáöu ngàõt thç chæång trçnh con phuûc vuû ngàõt coï thãø âæåüc goüi âãø hoaût âäüng. * Vê duû 5 : Giaí thiãút ta váùn phaíi thæûc hiãûn cäng viãûc nhæ åí vê duû træåïc næng pháön cæïng báy giåì laì maïy IBM PC/XT. Hãû naìy bçnh tæhåìng laìm 1 cäng viãûc gç âoï, nhæng khi coï yãu cáöu ngàõt ta phaíi âoüc 100 dæî liãûu åí cäøng 70H, nhán âäi mäùi dæî liãûu âoüc âæåüc räöi âæa ra cäøng 71H (Âãø cho âån giaín ta coi dæî liãûu khi âoüc vaì caí khi âaî nhán âäi âáúch âæåüc trong 1 Byte) Giaíi Nhæ âaî noïi åí pháön træåïc, âãø vaìo ra dæî liãûu bàòng caïch ngàõt CPU trong maïy IBM PC/XT . Maì khäng phaíi lo viãûc âæa säú hiãûu ngàõt N vaìo Bus dæî liãûu trong chu kyì INTA ta coï thãø táûn duûng tên hiãûu IRQ2 åí khe càõm måí räüng vaì duìng caïc maûch cäøng dãø âæa dæî liãûu vaìo Bus dæî liãûu. Trong caïc maïy IBM PC/XT, maûch 8259A âaî âæåüc khåíi âáöu khi maïy bàõt âáöu laìm viãûc, do váûy trong chæång trçnh chênh ta chè cáön âæa vaìo caïc vectå ngàõt (bàõt âáöu taûi âëa chè 0000 : (0AH x 4)) tæång æïng våïi IRQ2 âëa chè cuía chæång trçnh con phuûc vuû ngàõt. Trong chæång trçnh con phuûc vuû ngàõt ta phaíi âoüc caïc giaï trë vaìo räöi nhán âäi vaì âæa ra cäøng . Træåïc khi kãút thuïc chæång trçnh con âãø tråí laûi chæång trçnh chênh ta phaíi coï caïc lãûnh kãút thuïc yãu cáöu ngàõt (EOI) cho 8259A nhæ åí vê duû træåïc. Chæång trçnh chênh vaì chæång trçnh con coï daûng nhæ sau: * Model small * Stack 100 * Code Main Proc MOV AX, 0 ; khåíi taûo ES MOV ES, AX CLI ; cáúm ngàõt âãø âæa âëa chè MOV WORD PTR ES:002AH,SEG phucvu IRQ2 MOV WORD PTR ES:0028H,Offset phucvu IRQ2 STI ; cho pheïp ngàõt tråí laûi; cäng viãûc cuía chæång trçnh chênh bàõt âáöu åí âáy MOV AH,4CH ; tråí vãö DOS INT 21H Main Endp PhucvuIRQ2 Proc PUSH AX ; cáút laûi thanh ghi PUSH CX MOV CL,100 ; 100 säú liãûu phaíi thao taïc TIEP: IN, AL, 70H ; âoüc vaìo 1 säú liãûu SHL AL,1 ; nhán âäi räöi OUT 71H, AL ; Âæa ra cäøng LOOP TIEP MOV AL, 20 ; OCW2 våïi EOI âãø kãút thuïc OUT 20H,AL ; âæa OCW2 âãún 8259A POP CX ; Láúy laûi caïc thanh ghi POP AX STI ; cho pheïp ngàõt tråí laûi IRET ; tråí vãö chæång trçnh chênh PhucvuIRQ2 Endp END Main

Các file đính kèm theo tài liệu này:

  • docchuong7.doc
Tài liệu liên quan