Tài liệu Bài soạn vi xử lý - Chương 6: Vào ra dữ liệu bằng cách thăm dò
3 trang |
Chia sẻ: tranhong10 | Lượt xem: 1144 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài soạn vi xử lý - Chương 6: Vào ra dữ liệu bằng cách thăm dò, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHÆÅNG 6
VAÌO RA DÆÎ LIÃÛU BÀÒNG CAÏCH THÀM DOÌ
1. Giåïi thiãûu chung vãö caïc phæång phaïp âiãöu kiãøn vaìo/ra dæî liãûu
Sau khi âaî trçnh baìy vãö caïc maûch thæåìng duìng cho viãûc phäúi gheïp CPU våïi thiãút ngoaûi vi ta seî tiãún haình nghiãn cæïu caïc phæång thæïc âiãöu khiãøn viãûc trao âäøi dæî liãûu. Caïc maûch phäúi gheïp vaìo / ra âaî trçnh baìy træåïc âáy coï thãø âæåüc æïng duûng âãø phuûc vuû cho muûch âêch naìy.
Noïi chung ngæåìi ta phán biãût ra 3 phæång phaïp âiãöu khiãøn vaìo/ra dæî liãûu:
· vaìo/ra dæî liãûu âiãöu khiãøn bàòng caïch thàm doì traûng thaïi sàôn saìng cuía thiãút bë ngoaûi vi.
· vaìo/ra dæî liãûu âiãöu khiãøn bàòng caïch ngàõt bäü vi xæí lyï.
· vaìo/ra dæî liãûu âiãöu khiãøn bàòng pháön cæïng phuû âãø thám nháûp træûc tiãúp vaìo bäü nhåï.
Mäùi phæång phaïp âiãöu khiãøn vaìo/ra dæî liãûu noïi trãn coï nhæîng âàûc âiãøm khaïc nhau vaì seî âæåüc æïng duûng trong caïc hoaìn caính khaïc nhau. Mäüt trong nhæîng caïch âiãöu khiãøn âån giaín nháút maì chuïng ta xem xeït trong chæång naìy laì phæång phaïp thàm doì (polling) traûng thaïi sàôn saìng laìm viãûc cuía thiãút bë ngoaûi vi træåïc khi thæûc hiãûn vaìo/ra dæî liãûu. Caïc phæång phaïp âiãöu khiãøn vaìo ra dæî liãûu khaïc seî âæåüc giåïi thiãûu trong caïc chæång sau.
2. Vaìo/ra dæî liãûu bàòng phæång phaïp thàm doì.
Váún âãö âiãöu khiãøn vaìo/ra dæî liãûu seî tråí thaình ráút âån giaín nãúu thiãút bë ngoaûi vç luïc naìo cuîng sàôn saìng chåì âãø laìm viãûc våïi CPU. Vê duû, bäü pháûn do nhiãût âäü säú (nhæ laì mäüt thiãút bë vaìo) làõp sàôn trong mäüt hãû thäúng âiãöu khiãøn luïc naìo cuîng coï thãø cung cáúp säú âo vãö nhiãût âäü cuía âäúi tæåüng cáön âiãöu chènh, coìn mäüt bäü âeìn LED 7 neït (nhæ laì mäüt thiãút bë ra) duìng âãø chè thë mäüt giaï trë naìo âoï cuía mäüt âaûi læåüng váût lyï nháút âënh trong hãû thäúng noïi trãn thç luïc naìo cuîng coï thãø biãøu hiãûn thäng tin âoï. Nhæ váûy khi CPU muäún coï thäng tin vãö nhiãût âäü cuía hãû thäúng thç noï chè viãûc âoüc cäøng phäúi gheïp våïi bäü âo nhiãût âäü, vaì nãúu CPU muäún biãøu diãùn thäng tin væìa âoüc âæåüc trãn âeìn LED thç noï chè viãûc âæa tên hiãûu âiãöu khiãøn tåïi âoï maì khäng cáön phaíi kiãøm tra xem caïc thiãút bë naìy coï âang sàôn saìng laìm viãûc hay khäng.
Tuy nhiãn trong thæûc tãú khäng phaíi luïc naìo CPU cuîng laìm viãûc våïi caïc âäúi tæåüng "liãn tuûc sàông saìng" nhæ trãn. Thäng thæåìng khi CPU muäún laìm viãûc våïi mäüt âäúi tæåüng naìo âoï, træåïc tiãn noï phaíi kiãøm tra xem thiãút bë âoï coï âang åí traûng thaïi sàôn saìng laìm viãûc hay khäng nãúu coï thç noï måïi thæûc hiãûn vaìo viãûc trao âäøi dæî liãûu. Nhæ váûy, nãúu laìm viãûc theo phæång thæïc thàm doì thç thäng thæåìng CPU phaíi âæåüc daình riãng cho viãûc trao âäøi dæî liãûu vç noï phaíi liãn tuûc kiãøm tra traûng thaïi sàôn saìng cuía thiãút bë ngoaûi vi thäng qua caïc tên hiãûu moïc näúi (handshake signal). Caïc tên hiãûu naìy âæåüc láúy tæì caïc maûch phäúi, do ngæåìi thiãút kãú taûo ra, âãø cho chæång trçnh thàm doì hoaût âäüng trãn âoï.
Sau âáy laì thê duû mäüt caïch taûo ra tên hiãûu moïc näúi vaì læu âäö thuáût toaïn cuía chæång trçnh duìng cho viãûc trao âäøi dæî liãûu giæîa CPU vaì thiãút bë ngoaûi vi (hçnh 6.1)
Trong thê duû naìy âãø cho váún âãö âån giaín, ta giaí thuyãút CPU chè laìm viãûc våïi 1 thiãút bë vaìo vaì 1 thiãút bë ra. Viãûc täø chæïc phäúi gheïp âæåüc thæûc hiãûn trãn caïc maûch IC cåî væìa âãø ta âãø theo gioíi caïc tên hiãûu.
Mäüt cäøng vaìo säú 0 (coï âëa chè 00) âæåüc duìng âãø âoüc traûng thaïi sàôn saìng cuía 2 thiãút bë ngoaûi vi noïi trãn. Tên hiãûu saîn saìng cuía thiãút bë ngoaûi vi säú 1 (cäøng vaìo 01) âæåüc âàût vaìo bit D0, tên hiãûu sàôn saìng cuía thiãút bë ngoaûi vi säú 2 (cäøng ra 02) âæåüc âàût vaìo bit D1. Caïc bit naìy seî coï giaï trë 1 khi thiãút bë ngoaûi vi tæång æïng åí traûng thaïi sàôn saìng laìm viãûc våïi CPU vaì chuïng seî âæåüc âæa vaìo bus dæî liãûu khi CPU âoüc noï bàòng lãûnh âoüc cäøng vaìo säú 0. Chæång trçnh trao âäøi dæî liãûu seî kiãøm tra caïc bit baïo sàôn saìng naìy vaì seî coï caïc âaïp æïng phuì håüp.
Mä taí hoaût âäüng cuía pháön maûch vaìo dæî liãûu
Khi thiãút bë vaìo säú 1 coï byte säú liãûu cáön trao âäøi, noï âæa ra xung STB âãø cho pheïp maûch chäút 8 bit láúy byte dæî liãûu âoï âäöng thåìi kêch cho maûch láût D (maûch taûo tên hiãûu sàôn saìng ) laìm viãûc. CPU seî thàm doì traûng thaïi sàôn saìng cuía thiãút bë vaìo säú 1 qua bit DO khi noï âoüc cäøng 00. Âãún khi CPU âoüc 1 byte dæî liãûu vaìo thç âäöng thåìi noï xoïa luän maûch taûo traûng thaïi sàôn saìng âãø chuáøn bë cho láön laìm viãûc tåïi våïi 1 byte dæî liãûu khaïc.
Tæång tæû ta cuîng coï thãø deî daìng tháúy âæåüc caïch hoaût âäüng cuía pháön maûch thæï hai cuía hçnh 6.1 våïi chæïc nàng âæa dæî liãûu ra thiãút bë säú 2.
Læu âäö thuáût toaïn cho chæång trçnh vaìo/ra dæî liãûu cuía cäøng säú 01/02 theo så âäö moïc näúi trãn hçnh 6.2 âæåüc thãø hiãûn åí hçnh 6.2 a) vaì b) âæåìng liãön neït.
· Vê duû
Láûp chæång trçnh theo læu âäö trãn hçnh 6.2 âãø thæûc hiãûn viãûc âoüc vaìo dæî liãûu mäùi khi cäøng 01 baïo sàôn saìng räöi sæí lyï säú liãûu âoï. Coï 100 säú liãûu phaíi âoüc nhæ váûy (giaí thuyãút coï sàôn chæång trçnh con xæí lyï dæî liãûu coï tãn Xuly)
Giaíi
Cæï mäùi láön nháûn âæåüc tên hiãûu baïo sàôn saìng cuía cäøng 01 ta goüi chæång trçnh con Xuly. Thán cuía chæång trçnh hoaìn thaình cäng viãûc noïi trãn (theo læu âäö trãn hçnh 6.2a âæåìng liãön neït) coï thãø coï cáúu truïc sau :
MOV CX, 100 ; säú dæî liãûu phaíi âoüc trong cx
Lap : IN AL, 0 ; âoüc cäøng 00 âãø kiãøm tra cåì sàôn saìng
TEST AL, 1 ; thiãút bë säú 01 sàôn saìng?
JZ Lap ; chæa, quay laûi thàm doì tiãúp
IN AL, 1 ; sàôn saìng, âoüc cäøng 01
CALL xuly ; xæí lyï dæî liãûu
LOOP Lap ; chæa hãút, quay laûi thàm doì tiãúp
Ra:........
Trong træåìng håüp thiãút bë vaìo/ra hoaût âäüng theo caïch khaïc : cåì sàôn saìng âãø baïo cho CPU âoüc/ghi nhiãöu byte dæî liãûu cuìng 1 luïc thç ta coï nhaïnh chæång trçnh âi theo âæåìng âæït quaîng. Luïc naìy ta phaíi sæîa âäøi âäi chuït caí trong pháön maûch taûo ra tên hiãûu moïc näúi láùn trong pháön chæång trçnh âãø cho toaìn hãû thäúng laìm viãûc âuïng.
Trong thê duû trãn, nãúu thay vç caïc maûch IC cåî væìa (caïc maûch cäøng 3 traûng thaïi vaì chäút 8 bit) ta duìng maûch 8255A âãø phäúi gheïp CPU våïi thiãút bë ngoaûi vi. Viãûc âoüc (thàm doì) traûng thaïi cuía caïc tên hiãûu moïc näúi chè âån giaín laì âoüc caïc bêt tæång æïng cuía cäøng PC.
Trãn hçnh 6.3 laì thê duû mäüt æïng duûng cuía 8255A âãø phäúi gheïp våïi CPU 8088 trong viãûc vaìo/ra dæî liãûu theo kiãøu thàm doì traûng thaïi sàôn saìng cuía thiãút bë ngoaûi vi. Trong thê duû naìy ta chæa sæí duûng âãún chæïc nàng cuía caïc tên hiãûu moïc näúi INTR naìy âæåüc näúi vaìo chán INTR cuía 8088 thç ta coï khaí nàng thæûc hiãûn mäüt kiãøu phäúi gheïp khaïc âãø vaìo/ra dæî liãûu. Âoï laì âiãöu khiãøn vaìo/ra dæî liãûu bàòng caïch ngàõt CPU. Caïch âiãöu khiãøn vaìo/ra dæî liãûu kiãøu naìy seî âæåüc trçnh baìy åí chæång sau.
Hçnh 6.3. Maûch 8255A duìng âãø phäúi gheïp vaìo/ra åí chãú âäü thàm do
Các file đính kèm theo tài liệu này:
- chuong 6.doc