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 INTA 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 INTA . Baí ng 7.1. Cho ta quan hãû AD7 IR6 IR5 IR4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1
giæî a IRi vaì säú hiãû u ngàõ t N tæång æï ng. IR3 IR2 IR1 IR0 N 1 1 1 0 FEH (254) 1 1 0 1 FDH (253) 1 0 1 1 FBH (251) 0 1 1 1 F7H (247) 1 1 1 1 EFH (239) 1 1 1 1 DFH (223) 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: 1. 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) 2. 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) 3. 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) 4. 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) 5. {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) 6. 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 0080H-0081H
CS cuí a CTPVN INT 20H IP cuí a CTPVN INT 20H
000AH-000BH 0008H-0009H 0006H-0007H 0004H-0005H 0002H-0003H 0000H-0001H
CS cuí a CTCPVN INT 2 IP cuí a CTCPVN INT 2 CS cuí a CTCPVN INT 1 IP cuí a CTCPVN INT 1 CS cuí a CTCPVN INT 0 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ï . + SP / EN [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åü ( SP = 0 ) hoàû c chuí ( SP = 1 ); 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 EN 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. + INTA [I]: näú i våï i tên hiãû u baï o cháú p nháû n ngàõ t INTA 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. o 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. o 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... o 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.
A0 D7
OCW1 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û
A0 D7
Kãú t thuï c Ngàõ t (EOI Âäø i mæï c æu tiãn tæû âäü ng Âäø i m.æ.t Âêch danh
0 0 1 1 0 1 1 0
0 1 0 0 0 1 1 1
OCW2 D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0 1 1 1 0 0 1 0 0
Lãû nh EOI thæåì ng Lãû nh EOI chè âêch danh (*)
Maî hoï a mæï c æu tiãn
ngàõ t bë taï c âäü ng
Âäø 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
000….mæï c 0
Âäø 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ç
(*) 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 Mæï c æu tiãn
0 7
1 6
0 5
1 4
0 3
0 2
0 1
0 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 Mæï c æu tiãn
0 2
1 1
0 0
0 7
0 6
0 5
0 4
0 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 laì m viãû c våï i hãû säú 8086/88 D0 = 1 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 Chãú âäü æu tiãn cäú âënh D4 = 0 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 : Proc Phucvu IR3 PUSH AX PUSH BX PUSH CX IN AL,OF1H MOV BL, AL MOV AL,0F7H OUT OF1H, AL MOV CL,100 TIEP: IN AL, 70H SHL AL, 1 OUT 71H,AL LOOP TIEP MOV AL, BL OUT 0F1H,AL MOV AL, 20 OUT OFOH, AL POP CX POP BX POP AX STI IRET Phucvu IR3 Endp
; Cáú t caï c thanh ghi
; Âoü c màû t naû ngàõ t ; Cáú t màû t naû ; Chè cho pheï p yãu cáö u IR3 ; âæåü c taï c âäü ng ; 100 säú liãû u phaí i thao Taï c ; âoü c vaì o mäü t säú liãû u ; nhán âäi räö i ; âæa ra cäø ng ; Láú y laû i màû t naû cuî ; âæa màû t naû cuî âãú n 8259A ; OCW2 våï i EOI âãø kãú t thuï c ; âæa OCW2 âãú n 8259A ; láú y laû i caï c thanh ghi
; cho pheï p ngàõ t tråí laû i ; tråí vãö chæång trçnh chênh
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? 0 1 2 3 4 5 6.7 8
Âëa chè 00E3 : 3072 0600 : 08ED F000 : E2C3 0600 : 08E6 0700 : 0174 F000 : FF34
9
F000 : E987
F000 : FEA5
A B C D E F ... 60 - 66
F000 : EF57 0070 : 0147 ...
Daì nh cho Pheï p chia cho 0 Chaû y tæì ng lãû nh NMI Âiãø m dæì ng Traì n khi laì m viãû c våï i säú coï dáú u In maì n hçnh (BIOS) Âãø daì nh IRQ0 cuí a 8259A (ngàõ t BIOS cuí a âäö ng häö ) IRQ1 cuí a 8259A (ngàõ t BIOS cuí a baì n phêm) IRQ2 cuí a 8259A (âãø daì nh) IRQ3 cuí a 8259A (âãø daì nh cho COM 2) IRQ4 cuí a 8259A (âãø daì nh cho COM 1) IRQ5 cuí a 8259A (âãø daì nh cho âéa cæï ng) IRQ6 cuí a 8259A (cho äø âéa mãö m) IRQ7 cuí a 8259A (cho maï y in LPT1) ... 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 IRQ0 IRQ1 IRQ2 IRQ3 IRQ4
INT N? INT08H INT09H INT0AH INT0BH INT0CH
Daì nh cho Bäü âãú m 8254 âaû t TC Baì n phêm Yãu cáö u ngàõ t tæì 8259A thåü COM 2 COM 1
IRQ5 IRQ6 IRQ7 IRQ8 IRQ9
INT0DH INT0EH INT0FH INT70H INT71H
IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ015
INT72H INT73H INT74H INT75H INT76H INT77H
Cäü ng maï y in song song LPT2 Âiãö u khiãø n âéa mãö m Cäü ng maï y in song song LPT1 CMOS cuí a âäö ng häö thåì i gian thæû c Âënh hæåï ng laû i bàò ng chæång trçnh vãö INT0AH Daì nh cho ngæåì i sæí duû ng Daì nh cho ngæåì i sæí duû ng Chuäü t cuí a PS/2 Âäö ng xæí lyï toaï n hoü c ÄØ âéa cæï ng 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 POP CX POP AX STI IRET PhucvuIRQ2 Endp
END Main
; âæa OCW2 âãú n 8259A ; Láú y laû i caï c thanh ghi ; cho pheï p ngàõ t tråí laû i ; tråí vãö chæång trçnh chênh