CHUONG 6

VA O RA DU LIÊ U BÄ NG CA CH THÄM DO
1. Gio i thiê u chung vê ca c phuong pha p diê u kiê n va o/ra du 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 du liê u bã ng phuong 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 dô ng cu a phâ n ma ch va o du 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

Sign up to vote on this title
UsefulNot useful