Vào/Ra dữ liệu bằng cách thăm dò Tài liệu Kĩ thuật vi xử lý - Văn Thế Minh
CHỈÅNG 6 VO RA DỈỴ LIÃÛU BÀỊNG CẠCH THÀM D 1. Giåïi thiãûu chung vãư cạc phỉång phạp âiãưu kiãøn vo/ra dỉỵ liãûu Sau khi â trçnh by vãư cạc mảch thỉåìng dng cho viãûc phäúi ghẹp CPU våïi thiãút ngoải vi ta s tiãún hnh nghiãn cỉïu cạc phỉång thỉïc âiãưu khiãøn viãûc trao âäøi dỉỵ liãûu. Cạc mảch phäúi ghẹp vo / ra â trçnh by trỉåïc âáy cọ thãø âỉåüc ỉïng dủng âãø phủc vủ cho mủch âêch ny. Nọi chung ngỉåìi ta phán biãût ra 3 phỉång phạp âiãưu khiãøn vo/ra dỉỵ liãûu: • vo/ra dỉỵ liãûu âiãưu khiãøn bàòng cạch thàm d trảng thại sàơn sng ca thiãút bë ngoải vi. • vo/ra dỉỵ liãûu âiãưu khiãøn bàòng cạch ngàõt bäü vi xỉí l. • vo/ra dỉỵ liãûu âiãưu khiãøn bàòng pháưn cỉïng phủ âãø thám nháûp trỉûc tiãúp vo bäü nhåï. Mäùi phỉång phạp âiãưu khiãøn vo/ra dỉỵ liãûu nọi trãn cọ nhỉỵng âàûc âiãøm khạc nhau v s âỉåüc ỉïng dủng trong cạc hon cnh khạc nhau. Mäüt trong nhỉỵng cạch âiãưu khiãøn âån gin nháút m chụng ta xem xẹt trong chỉång ny l phỉång phạp thàm d (polling) trảng thại sàơn sng lm viãûc ca thiãút bë ngoải vi trỉåïc khi thỉûc hiãûn vo/ra dỉỵ liãûu. Cạc phỉång phạp âiãưu khiãøn vo ra dỉỵ liãûu khạc s âỉåüc giåïi thiãûu trong cạc chỉång sau. 2. Vo/ra dỉỵ liãûu bàòng phỉång phạp thàm d. Váún âãư âiãưu khiãøn vo/ra dỉỵ liãûu s tråí thnh ráút âån gin nãúu thiãút bë ngoải vç lục no cng sàơn sng chåì âãø lm viãûc våïi CPU. Vê dủ, bäü pháûn do nhiãût âäü säú (nhỉ l mäüt thiãút bë vo) làõp sàơn trong mäüt hãû thäúng âiãưu khiãøn lục no cng cọ thãø cung cáúp säú âo vãư nhiãût âäü ca âäúi tỉåüng cáưn âiãưu chènh, cn mäüt bäü ân LED 7 nẹt (nhỉ l mäüt thiãút bë ra) dng âãø chè thë mäüt giạ trë no âọ ca mäüt âải lỉåüng váût l nháút âënh trong hãû thäúng nọi trãn thç lục no cng cọ thãø biãøu hiãûn thäng tin âọ. Nhỉ váûy khi CPU mún cọ thäng tin vãư nhiãût âäü ca hãû thäúng thç nọ chè viãûc âc cäøng phäúi ghẹp våïi bäü âo nhiãût âäü, v nãúu CPU mún biãøu diãùn thäng tin vỉìa âc âỉåüc trãn ân LED thç nọ chè viãûc âỉa tên hiãûu âiãưu khiãøn tåïi âọ m khäng cáưn phi kiãøm tra xem cạc thiãút bë ny cọ âang sàơn sng lm viãûc hay khäng. Tuy nhiãn trong thỉûc tãú khäng phi lục no CPU cng lm viãûc våïi cạc âäúi tỉåüng "liãn tủc sàơng sng" nhỉ trãn. Thäng thỉåìng khi CPU mún lm viãûc våïi mäüt âäúi tỉåüng no âọ, trỉåïc tiãn nọ phi kiãøm tra xem thiãút bë âọ cọ âang åí trảng thại sàơn sng lm viãûc hay khäng nãúu cọ thç nọ måïi thỉûc hiãûn vo viãûc trao âäøi dỉỵ liãûu. Nhỉ váûy, nãúu lm viãûc theo phỉång thỉïc thàm d thç thäng thỉåìng CPU phi âỉåüc dnh riãng cho viãûc trao âäøi dỉỵ liãûu vç nọ phi liãn tủc kiãøm tra trảng thại sàơn sng ca thiãút bë ngoải vi thäng qua cạc tên hiãûu mọc näúi (handshake signal). Cạc tên hiãûu ny âỉåüc láúy tỉì cạc mảch phäúi, do ngỉåìi thiãút kãú tảo ra, âãø cho chỉång trçnh thàm d hoảt âäüng trãn âọ. Sau âáy l thê dủ mäüt cạch tảo ra tên hiãûu mọc näúi v lỉu âäư thût toạn ca chỉång trçnh dng cho viãûc trao âäøi dỉỵ liãûu giỉỵa CPU v thiãút bë ngoải vi (hçnh 6.1) Trong thê dủ ny âãø cho váún âãư âån gin, ta gi thuút CPU chè lm viãûc våïi 1 thiãút bë vo v 1 thiãút bë ra. Viãûc täø chỉïc phäúi ghẹp âỉåüc thỉûc hiãûn trãn cạc mảch IC cåỵ vỉìa âãø ta âãø theo gii cạc tên hiãûu. Mäüt cäøng vo säú 0 (cọ âëa chè 00) âỉåüc dng âãø âc trảng thại sàơn sng ca 2 thiãút bë ngoải vi nọi trãn. Tên hiãûu sn sng ca thiãút bë ngoải vi säú 1 (cäøng vo 01) âỉåüc âàût vo bit D0, tên hiãûu sàơn sng ca thiãút bë ngoải vi säú 2 (cäøng ra 02) âỉåüc âàût vo bit D1. Cạc bit ny s cọ giạ trë 1 khi thiãút bë ngoải vi tỉång ỉïng åí trảng thại sàơn sng lm viãûc våïi CPU v chụng s âỉåüc âỉa vo bus dỉỵ liãûu khi CPU âc nọ bàòng lãûnh âc cäøng vo säú 0. Chỉång trçnh trao âäøi dỉỵ liãûu s kiãøm tra cạc bit bạo sàơn sng ny v s cọ cạc âạp ỉïng ph håüp. Mä t hoảt âäüng ca pháưn mảch vo dỉỵ liãûu Khi thiãút bë vo säú 1 cọ byte säú liãûu cáưn trao âäøi, nọ âỉa ra xung STB âãø cho phẹp mảch chäút 8 bit láúy byte dỉỵ liãûu âọ âäưng thåìi kêch cho mảch láût D (mảch tảo tên hiãûu sàơn sng ) lm viãûc. CPU s thàm d trảng thại sàơn sng ca thiãút bë vo säú 1 qua bit DO khi nọ âc cäøng 00. Âãún khi CPU âc 1 byte dỉỵ liãûu vo thç âäưng thåìi nọ xọa ln mảch tảo trảng thại sàơn sng âãø chøn bë cho láưn lm viãûc tåïi våïi 1 byte dỉỵ liãûu khạc. Tỉång tỉû ta cng cọ thãø d dng tháúy âỉåüc cạch hoảt âäüng ca pháưn mảch thỉï hai ca hçnh 6.1 våïi chỉïc nàng âỉa dỉỵ liãûu ra thiãút bë säú 2. Lỉu âäư thût toạn cho chỉång trçnh vo/ra dỉỵ liãûu ca cäøng säú 01/02 theo så âäư mọc näúi trãn hçnh 6.2 âỉåüc thãø hiãûn åí hçnh 6.2 a) v b) âỉåìng liãưn nẹt. • Vê dủ Láûp chỉång trçnh theo lỉu âäư trãn hçnh 6.2 âãø thỉûc hiãûn viãûc âc vo dỉỵ liãûu mäùi khi cäøng 01 bạo sàơn sng räưi sỉí l säú liãûu âọ. Cọ 100 säú liãûu phi âc nhỉ váûy (gi thuút cọ sàơn chỉång trçnh con xỉí l dỉỵ liãûu cọ tãn Xuly) Gii Cỉï mäùi láưn nháûn âỉåüc tên hiãûu bạo sàơn sng ca cäøng 01 ta gi chỉång trçnh con Xuly. Thán ca chỉång trçnh hon thnh cäng viãûc nọi trãn (theo lỉu âäư trãn hçnh 6.2a âỉåìng liãưn nẹt) cọ thãø cọ cáúu trục sau : MOV CX, 100 ; säú dỉỵ liãûu phi âc trong cx Lap : IN AL, 0 ; âc cäøng 00 âãø kiãøm tra cåì sàơn sng TEST AL, 1 ; thiãút bë säú 01 sàơn sng? JZ Lap ; chỉa, quay lải thàm d tiãúp IN AL, 1 ; sàơn sng, âc cäøng 01 CALL xuly ; xỉí l dỉỵ liãûu LOOP Lap ; chỉa hãút, quay lải thàm d tiãúp Ra: Trong trỉåìng håüp thiãút bë vo/ra hoảt âäüng theo cạch khạc : cåì sàơn sng âãø bạo cho CPU âc/ghi nhiãưu byte dỉỵ liãûu cng 1 lục thç ta cọ nhạnh chỉång trçnh âi theo âỉåìng âỉït qung. Lục ny ta phi sỉỵa âäøi âäi chụt c trong pháưn mảch tảo ra tên hiãûu mọc näúi láùn trong pháưn chỉång trçnh âãø cho ton hãû thäúng lm viãûc âụng. Trong thê dủ trãn, nãúu thay vç cạc mảch IC cåỵ vỉìa (cạc mảch cäøng 3 trảng thại v chäút 8 bit) ta dng mảch 8255A âãø phäúi ghẹp CPU våïi thiãút bë ngoải vi. Viãûc âc (thàm d) trảng thại ca cạc tên hiãûu mọc näúi chè âån gin l âc cạc bêt tỉång ỉïng ca cäøng PC. Trãn hçnh 6.3 l thê dủ mäüt ỉïng dủng ca 8255A âãø phäúi ghẹp våïi CPU 8088 trong viãûc vo/ra dỉỵ liãûu theo kiãøu thàm d trảng thại sàơn sng ca thiãút bë ngoải vi. Trong thê dủ ny ta chỉa sỉí dủng âãún chỉïc nàng ca cạc tên hiãûu mọc näúi INTR ny âỉåüc näúi vo chán INTR ca 8088 thç ta cọ kh nàng thỉûc hiãûn mäüt kiãøu phäúi ghẹp khạc âãø vo/ra dỉỵ liãûu. Âọ l âiãưu khiãøn vo/ra dỉỵ liãûu bàòng cạch ngàõt CPU. Cạch âiãưu khiãøn vo/ra dỉỵ liãûu kiãøu ny s âỉåüc trçnh by åí chỉång sau. Hçnh 6.3. Mảch 8255A dng âãø phäúi ghẹp vo/ra åí chãú âäü thàm do . hçnh 6. 1 våïi chỉïc nàng âỉa dỉỵ liãûu ra thiãút bë säú 2. Lỉu âäư thût toạn cho chỉång trçnh vo/ra dỉỵ liãûu ca cäøng säú 01/02 theo så âäư mọc näúi trãn hçnh 6. 2 âỉåüc thãø hiãûn åí hçnh 6. 2. thût toạn ca chỉång trçnh dng cho viãûc trao âäøi dỉỵ liãûu giỉỵa CPU v thiãút bë ngoải vi (hçnh 6. 1) Trong thê dủ ny âãø cho váún âãư âån gin, ta gi thuút CPU chè lm viãûc våïi 1 thiãút bë vo. CHỈÅNG 6 VO RA DỈỴ LIÃÛU BÀỊNG CẠCH THÀM D 1. Giåïi thiãûu chung vãư cạc phỉång phạp âiãưu kiãøn vo/ra