Está en la página 1de 98

ÑAÏI HOÏC QUOÁC GIA TP.

HOÀ CHÍ MINH


ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT
KHOA ÑIEÄN – ÑIEÄN TÖÛ

LUAÄN VAÊN TOÁT NGHIEÄP


Ñeà taøi:
GIAO TIEÁP MAÙY TÍNH VÔÙI
KIT VI XÖÛ LYÙ 8086

Giaùo vieân höôùng daãn : Thaày NGUYEÃN


ÑÌNH PHUÙ
Sinh vieân thöïc hieän : PHAÏM XUAÂN
HÖNG
Lôùp : 95 KÑÑ

TP.HOÀ CHÍ MINH


2 – 2000
ÑAÏI HOÏC QUOÁC GIA TP. HOÀ CHÍ MINH
ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT
KHOA ÑIEÄN - ÑIEÄN TÖÛ

LUAÄN VAÊN TOÁT NGHIEÄP

Ñeà taøi:
GIAO TIEÁP MAÙY TÍNH
VÔÙI KIT VI XÖÛ LYÙ 8086

PHAÀN 1: GIÔÙI THIEÄU CHUNG


CHÖÔNG DAÅN NHAÄP
CHÖÔNG CÔ SÔÛ LYÙ LUAÄN
CHÖÔNG I: CAÁU TRUÙC VI XÖÛ LYÙ 8086
CHÖÔNG II: KHAÛO SAÙT TOÅNG QUAÙT TAÄP LEÄNH 8086
CHÖÔNG III: GIAO TIEÁP VÔÙI MAÙY TÍNH
PHAÀN 2 : PHAÀN CÖÙNG VAØ PHAÀN MEÀM CUÛA Û MAÏCH
GIAO TIEÁP
CHÖÔNG IV: GIÔÙI THIEÄU KIT VXL 8086
CHÖÔNG V: GIAO TIEÁP NOÁI TIEÁP DUØNG VI MAÏCH 8251A
CHÖÔNG VI: CHÖÔNG TRÌNH GIAO TIEÁP ( CHÖÔNG TRÌNH
TRUYEÀN, NHAÄN DÖÕ LIEÄU)
HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI
KEÁT LUAÄN ÑAÙNH GIAÙ
PHUÏ LUÏC
TAØI LIEÄU THAM KHAÛO

Giaùo vieân höôùng daãn: NGUYEÃN ÑÌNH PHUÙ


Sinh vieân thöïc hieän: PHAÏM XUAÂN HÖNG
BOÄ GIAÙO DUÏC& ÑAØO TAÏO COÄNG HOØA XAÕ HOÄI CHUÛ NGHÓA
VIEÄT NAM
ÑAÏI HOÏC QUOÁC GIA TP. HOÀ CHÍ MINH ÑOÄC LAÄP – TÖÏ DO – HAÏNH
PHUÙC
ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT TP. HOÀ CHÍ MINH _____________

KHOA ÑIEÄN
BOÄ MOÂN ÑIEÄN – ÑIEÄN TÖÛ
NHIEÄM VUÏ LUAÄN VAÊN TOÁT NGHIEÄP

Hoï vaø teân sinh vieân : PHAÏM XUAÂN HÖNG
Lôùp : 95KÑÑ
Ngaønh : Kyõ thuaät Ñieän – Ñieän töû
1. Teân ñeà taøi: GIAO TIEÁP MAÙY TÍNH VÔÙI KIT VI XÖÛ LYÙ
8086
2. Caùc soá lieäu ban ñaàu:
……………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
………………………………………………………………………………
3. Noäi dung caùc phaàn thuyeát minh tính toaùn:
……………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
4. Caùc baûn veõ:
……………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
………………
5. Giaùo vieân höôùng daãn : NGUYEÃN ÑÌNH PHUÙ
6. Ngaøy giao nhieäm vuï :
7. Ngaøy hoaøn thaønh nhieäm vuï: 25/2/2000
Giaùo vieân höôùng daãn: Thoâng qua Boä moân
Ngaøy thaùng
naêm 1999
NHAÄN XEÙT CUÛA GIAÙO VIEÂN
HÖÔÙNG DAÃN


………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
………………………………………………………………

Giaùo vieân höôùng daãn


NHAÄN XEÙT CUÛA GIAÙO VIEÂN PHAÛN
BIEÄN


………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
………………………………………………………………

Giaùo vieân phaûn bieän


Lôøi caûm taï


Trong thôøi gian thöïc hieän ñeà taøi sinh vieân thöïc hieän ñaõ hoïc

hoûi ñöôïc nhieàu ñieàu boå ích töø thaày höôùng haãn, caùc thaày coâ

vaø caùc baïn.

Sinh vieân thöïc hieän xin baøy toû loøng bieát ôn ñeán thaày

Nguyeãn Ñình Phuù treân cöông vò laø ngöôøi höôùng daãn ñeà taøi

ñaõ taän tình höôùng daãn vaø taïo ñieàu kieän thuaän lôïi cho em

hoaøn thaønh toát ñeà taøi.

Sinh vieân thöïc hieän cuõng xin chaân thaønh caûm ôn caùc thaày,

caùc coâ trong khoa cuøng caùc baïn ñaõ ñoùng goùp yù kieán vaø kinh

ngieäm quùy baùu trong quùa trình thöïc hieän ñeà taøi naøy.

TP.HOÀ CHÍ MINH Ngaøy 25 thaùng 2 naêm 2000

Sinh vieân thöïc hieän

Phaïm Xuaân Höng


MUÏC LUÏC
Phaàn 1: Phaàn giôùi thieäu
Chöông daãn nhaäp
Chöông cô sôû lyù luaän
I. Xaây döïng ñeà cöông luaän vaên
II. Keá hoaïch nghieân cöùu
Chöông I: Caáu truùc beân trong cuûa VXL 8086
I. Caáu taïo beân trong
1. khoái thöïc hieän
2. khoái phoái phoái gheùp bus
3. sô ñoà khoái beân trong
II. Caáu truùc beân trong vaø chöùc naêng cuûa VXL 8086
1. sô ñoà chaân cuûa VXL 8086
2. chöùc naêng caùc chaân
III. Caùc phöông phaùp ñònh ñòa chæ cuûa 8086
Chöông II: Khaûo saùt toång quaùt taäp leänh cuûa VXL 8086
I. caùch maõ hoùa leänh
II. khaûo saùt toång quaùt taäp leänh
Chöông III: Giao tieáp vôùi maùy tính
I. Giao tieáp song song
1. Giao tieáp qua coång maùy in
2. Giao tieáp qua Slot card
II. Giao tieáp noái tieáp qua coång COM
1. Vaøi neùt cô baûn veà coång noái tieáp
2. Söï trao ñoåi cuûa caùc ñöôøng daãn tín hieäu
Phaàn 2: Phaàn cöùng cuûa maïch giao tieáp
Chöông IV: Giôùi thieäu kit VXL 8086
I. Caùc linh kieän baùn daãn lieân quan
1. vi maïch MAX 232
2. IC ñeäm 74LS244
3. Maïch taïo xung nhòp 8284
4. Toång quaùt veà boä nhôù
II. Giôùi thieäu kit VXL 8086.
Chöông V: Giao tieáp noái tieáp duøng 8251A.
I. truyeàn thoâng tin noái tieáp
II. Vi maïch USART 8251A
III. ÖÙng duïng 8251A ñeå truyeàn thoâng tin noái tieáp
1. Truyeàn thoâng tin noái tieáp giöõa 2 kit VXL
2. Truyeàn thoâng tin noái tieáp giöõa kit VXL vaø maùy tính
Phaàn 3 : Phaàn meàm cuûa maïch giao tieáp
Chöông VI: Caùc chöông trình truyeàn döõ lieäu
I. Chöông trình truyeàn, nhaän döõ lieäu döõ lieäu treân kit
1. Giaûi thuaät
2. Chöông trình
II. Chöông trình truyeàn döõ lieäu treân maùy tính
Phaàn 4: Toång keát, ñaùnh giaù
Höôùng phaùt trieån ñeà taøi
Keát luaän ñaùnh giaù
Taøi lieäu tham khaûo
LÔØI NOÙI ÑAÀU
Ñaát nöôùc ta ñang treân con ñöông tieán leân moät ñaát nöôùc coâng
ngieäp hoùa hieän ñaïi hoùa. Ñeå ñaït ñöôïc muïc tieâu ñoù thì ngaønh coâng
ngieäp maùy tính laø moät ngaønh then choát ñeå tieán leân con ñöôøng coâng
ngieäp hoaù vaø hieän ñaïi hoùa ñaát nöôùc.

Ngaøy nay trong caùc nhaø maùy xí nghieäp hay coâng xöôûng ñeàu söû
duïng maùy vi tính vaøo vieäc ño löôøng ñieàu khieån, tính toaùn vaø trong
quaûn lyù haønh chính, nhôø coù ñaëc tính goïn nheï, ñoä tin caäy cao linh
hoaït vaø ñôn giaûn trong söû duïng. Ñaëc bieät trong caùc ngaønh coâng
nghieäp hieän ñaïi, maùy tính ñieän töû khoâng nhöõng goùp phaàn vaøo vieäc
naâng cao naêng suaát lao ñoäng maø coøn goùp phaàn vaøo vieäc baûo veä
söùc khoeû vaø an toaøn lao ñoäng cho con ngöôøi.

Ñeã hoaøn thaønh nhöõng coâng vieäc keå treân chuùng ta caàn phaûi keát
noái caùc maùy vi tính vôùi nhau, hoaëc keát noái chuùng vôùi caùc thieát bò
ngoaïi vi nhaän döõ lieäu ñeå xöû lyù hay göûi döõ lieäu ñi cho caùc thieát bò
khaùc xöû lyù. Ñeå thöïc hieän ñöôïc coâng vieäc naøy thì ñieàu ñaàu tieân
chuùng ta phaûi laøm ñoù laø chuùng ta phaûi keát noái phaàn cöùng cho phuø
hôïp vaø vieát caùc chöông trình truyeàn döõ lieäu.

Tröôùc yeâu caàu ñoù sinh vieân thöïc hieän ñeà taøi quyeát ñònh thöïc
hieän ñeà taøi “Giao tieáp maùy tính vôùi kit VXL 8086” nhaèm muïc ñích tìm
hieåu, hoïc hoûi theâm vaø öùng duïng caùc kieán thöùc ñaõ hoïc ra thöïc teá.

Sinh vieân thöïc hieän xin chaân thaønh caûm ôn thaày Nguyeãn Ñình
Phuù cuøng caùc thaày coâ trong khoa ñaõ taän tình höôùng daãn em hoaøn
thaønh toát ñeà taøi naøy.

Vì thôøi gian vaø kieán thöùc coù haïn neân taäp luaän vaên naøy chaéc
chaén khoâng traùnh khoûi sai soùt, raát mong nhöõng yù kieán ñoùng goùp
cuûa quùy thaày coâ vaø caùc baïn.

TP.Hoà Chí Minh, ngaøy 25 thaùng 2 naêm 2000


Sinh vieân thöïc hieän
Phaïm Xuaân Höng
Phaàn 1

GIÔÙI THIEÄU CHUNG


CHÖÔNG DAÃN NHAÄP
oOo

Cuøng vôùi söï phaùt trieån cuûa khoa hoïc kyõ thuaät thì ngaønh coâng
nghieäp maùy tính cuõng ñöôïc phaùt trieån raát maïnh meõ vaø ngaøy caøng
ñöôïc öùng duïng roäng raõi trong moïi coâng vieäc nhö caùc coâng vieäc trong
coâng nghieäp cuõng nhö trong thoâng tin lieân laïc.

Ñeå thöïc hieän ñöôïc nhöõng coâng vieäc nhaän döõ lieäu töø caùc thieát
bò khaùc ñeå xöû lyù hoaëc göûi döõ lieäu ñi ñeå ñieàu khieån caùc thieát bò
khaùc thì coâng vieäc giao tieáp giöõa hai heä vi xöû lyù vôùi nhau hay giöõa
vi xöû lyù vôùi maùy tính laø moät coâng vieäc chuû yeáu trong vieäc truyeàn
döõ lieäu vì theá sinh vieân quyeát ñònh thöïc hieän ñeà taøi “Giao tieáp maùy
tính vôùi kit VXL 8086”. Muïc ñích ñeå hoïc hoûi vaø tìm hieåu theâm caùc
öùng duïng cuûa VXL vaø caùc IC giao tieáp ngoaïi vi trong thöïc teá, laøm
quen vôùi caùc chöông trình truyeàn döõ lieäu ñeå hoaøn thaønh toát luaän
vaên toát nghieäp naøy.

Trong phaïm vi chuyeân ngaønh thì ñeà taøi ñaõ hoaøn thaønh toát phaàn
cöùng vaø phaàn meàm giao tieáp. Rieâng trong lónh vöïc giao tieáp thì ñoù
cuõng laø taøi lieäu tham khaûo ban ñaàu cho nhöõng ngöôøi muoán ñi saâu
vaøo lónh vöïc giao tieáp.

Ñeà taøi naøy khoâng chæ giuùp cho sinh vieân hoøan thaønh luaän vaên
toát nghieäp maø coøn hình thaønh trong moãi sinh vieân nhöõng kinh
nghieäm, saùng taïo vaø naêng ñoäng. Sau naøy ñeà taøi seõ keát hôïp vôùi
caùc ngaønh chuyeân moân khaùc ñeå phaùt trieån moâ hình naøy ñöôïc hoaøn
thieän hôn.
CHÖÔNG CÔ SÔÛ LYÙ LUAÄN
___ oOo ___
I. XAÂY DÖÏNG ÑEÀ CÖÔNG LUAÄN VAÊN:
1). Xaùc ñònh nhieäm vuï nghieân cöùu:
Vieäc choïn ñeà taøi xuaát phaùt töø hai lyù do:
- Khaùch quan: hieän nay caùc neàn coâng nghieäp coù nhu caàu hieän
ñaïi hoùa caùc thieát bò theo xu höôùng caûi tieán hoùa caùc thieát bò
baèng cô khí sang thieát bò ñieàu khieån töï ñoäng öùng duïng kyõ
thuaät ñieän töû.
- Chuû quan: do nhu caàu hoïc taäp, nghieân cöùu, reøn luyeän kyõ
naêng thöïc haønh, öùng duïng voán kieán thöùc khoa hoïc kyõ thuaät
tieân tieán tröïc tieáp vaøo lónh vöïc saûn xuaát.
Nhieäm vuï nghieân cöùu nhaèm ñaït ñöôïc caùc muïc ñích chuû yeáu:
+ Muïc ñích tröôùc maét: thoûa maõn veà cô baûn caùc yeâu caàu ñeà
ra theo phöông chaâm “Hoïc ñi ñoâi vôùi haønh“.
+ Muïc ñích sau cuøng: Tích luõy kinh nghieäm, reøn luyeän vaø
naâng cao naêng löïc, taïo baûn lónh ñeå saün saøng tham gia lao ñoäng saûn
xuaát, hoøa nhaäp vaøo böôùc tieán cuûa theá heä.
2). Phaân tích taøi lieäu lieân heä:
Trong thôøi gian nghieân cöùu ñeà taøi, sinh vieân thöïc hieän ñaõ thoáng
nhaát tham khaûo moät soá taøi lieäu coù lieân quan trong khoaûng thôøi gian
cho pheùp.
- Phöông phaùp luaän nghieân cöùu khoa hoïc: tìm hieåu veà caáu truùc
hình thöùc cuûa moät ñeà taøi nghieân cöùu khoa hoïc vaø phöông
phaùp tö duy ñeå giaûi quyeát vaán ñeà.
- Kyõ thuaät Vi xöû lyù - Traàn Vaên Troïng: Taøi lieäu cung caáp veà
caáu truùc cuûa vi xöû lyù 8086.
- Sô ñoà chaân linh kieän baùn daãn - Döông Minh Trí: cung caáp sô
ñoà chaân vaø baûng traïng thaùi hoïat ñoäng cuûa caùc IC vaø caùc
linh kieän baùn daãn.
- Caáu truùc maùy tính - Leâ Anh Vieät: Taøi lieäu cung caáp kieán
thöùc cô baûn veà caáu truùc maùy tính, toå chöùc CPU, hôïp ngöõ
vaø caùch laäp trình.
- The 8086/8088 - Family Design Programming and Interfacing – John
Uffenbeck: taøi lieäu cung caáp nhöõng kyõ thuaät keát noái vi xöû
lyù vaø nhöõng phaàn meàm öùng duïng.
- Kyõ thuaät vi xöû lyù – Vaên Theá Minh: taøi lieäu cung caáp kyõ
thuaät giao tieáp vôùi caùc thieát bò ngoaïi vi.
II. KEÁ HOAÏCH NGHIEÂN CÖÙU:
1). Daøn yù nghieân cöùu:
Phaàn I: Giôùi thieäu chung.
Phaàn II: Phaàn cöùng vaø phaàn meàm cuaû maïch giao tieáp.
Phaàn III : Toång keát vaø ñaùnh giaù

2). Ñoái töôïng nghieân cöùu:


Vi xöû lyù laø trung taâm ñieàu khieån caùc ñoái töôïng, ñieàu khieån heä
thoáng nhö maùy töï ñoäng, daây chuyeàn saûn xuaát… Ñeå heä thoáng xöû
lyù thi haønh caùc chöùc naêng ñieàu khieån nhö mong muoán, chuùng ta
phaûi laäp trình baèng ngoân ngöõ töông öùng vaø trao ñoåi döõ lieäu giöõa
caùc heä vi xöû lyù. Vì theá ñoái töôïng nghieân cöùu chính laø thieát keá
maïch giao tieáp ñeå truyeàn döõ lieäu ñi xa.
CHÖÔNG I
CAÁU TRUÙC BEÂN TRONG CUÛA VI XÖÛ LYÙ 8086
___ oOo ___

Ñaây laø boä vi xöû lyù noåi tieáng moät thôøi cuûa haõng Intel, noù
ñöôïc söû duïng trong nhieàu lónh vöïc khaùc nhau, nhaát laø trong caùc maùy
IBM PC/XT. Caùc boä vi xöû lyù thuoäc hoï naøy seõ coøn ñöôïc söû duïng
roäng raõi trong haøng chuïc naêm nöõa.

I . CAÁU TAÏO BEÂN TRONG:

Beân trong goàm hai khoái chính:


- Khoái thöïc hieän EU (Execution Unit)
- Khoái giap tieáp bus (Bus Interface Unit)
1 .Khoái thöïc hieän EU
ÔÛ hình 1.1 ta thaáy trong khoái EU ta thaáy coù moät khoái ñieàu
khieàn (Control Unit, CU) chính taïi beàn trong khoái ñieàu khieån naøy coù
maïch giaûi maõ leänh. Maõ leänh ñoïc vaøo töø boä nhôù ñöa ñeán ñaàu cuûa
boä giaûi maõ, caùc thoâng tin thu ñöôïc töø ñaàu ra cuûc noù seõ ñöôïc ñöa
ñeán maïch taïo xung ñieàu khieån, keát quaû laø thu ñöôïc caùc daõy xung
khaùc nhau (tuøy theo maõ leänh) ñeå ñieàu khieån hoaït ñoäng cuûa caùc boä
phaän beân trong vaø beân ngoaøi CPU. Trong khoái EU coøn coù khoái soá
hoïc vaø logic (Arithmetic and Logic Unit ALU) duøng ñeå thöïc hieän caùc
thao taùc khaùc nhau vôùi caùc toaùn haïng cuaû leänh. Toùm laïi khi CPU
hoaït ñoäng EU seõ cung caáp thoâng tin veà ñiaï chæ cho BIU ñeå khoái naøy
ñoïc leänh vaø döõ lieäu, coøn baûn thaân noù thì giaûi maõ leänh vaø thöïc
hieän leänh

2. Khoái phoái gheùp bus (Bus Interface Unit BIU)


Khoái BIU coù nhieäm vuï ñöa ra ñiaï chæ, ñoïc maõ leänh töø boä
nhôù. Noùi caùch khaùc BIU chiu traùch nhieäm ñöa ñiaï chæ ra bus vaø trao
ñoåi döõ lieäu vôùi bus.
Trong BIU coøn coù boä nhôù ñeäm leänh vôùi dung löôïng 4 byte
duøng ñeå ñöa caùc maõ leänh ñoïc ñöôïc naèm saün saøng chôø EU xöû lyù
(trong taøi lieäu cuaû Intel boä leänh naøy coøn ñöôïc goïi laø haøng ñôïi
leänh. Ñaây laø moät caáu truùc môùi ñöôïc ñöa vaøo boä VXL 8086/8088 cho
vieäc Intel ñöa cheá ñoä xöû lyù xen keõ lieân tuïc duøng maõ leänh vaøo öùng
duïng vaøo trong caùc boä VXL theá heä môùi.
3. Sô ñoà khoái beàn trongvaø chöùc naêng caùc khoái cuaû
VXL 8086:
Bus ñòa chæ Bus döõ
lieäu
Caùc bus heä
thoáng
Ñieàu khieån bus
vaø taïo ñòa chæ


AHALBHBL 654321
CHCLDHDL
Haøng
BPDISISP
ñôïi
CSESSSDSIP leänh
Caùc
thanh ghi
ñoaïn

Bus döõ lieäu noäi

Arithmetic logic
unit (ALU)

Caùc
côø
Excution Unit Bus Interface Unit
(EU) (BIU)

Hình 1.1: Sô ñoà khoái 8086


Boä vi xöû lyù thöïc hieän caùc leänh theo caùc böôùc sau:
- Laáy leänh töø boä nhôù.
- Ñoïc toaùn haïng (neáu leänh yeâu caàu).
- Thöïc hieän leänh.
- Ghi keát quaû.

3.1). Khoái thöïc hieän:


Nhieäm vuï cuûa khoái thöïc hieän leänh laø thöïc hieän caùc leänh cuûa
chöông trình. Noù goàm coù khoái soá hoïc – logic (ALU) cho pheùp thöïc
hieän caùc pheùp tính soá hoïc (+ , - , * , /) vaø caùc pheùp logic (AND, OR,
NOT…). Trong khoái thöïc hieän coøn coù moät soá oâ nhôù goïi laø thanh ghi
duøng ñeå chöùa döõ lieäu cho caùc pheùp tính. Moãi thanh ghi gioáng nhö
moät oâ nhôù ngoaïi tröø chuùng ñöôïc ñaët teân thay vì duøng soá ñeå chæ
ñòa chæ. EU (Execution Unit) coù caùc thanh ghi coâng duïng chung chia
thaønh hai nhoùm: nhoùm thanh ghi döõ lieäu vaø nhoùm thanh ghi chæ soá.
 Caùc thanh ghi döõ lieäu (Data Register):
AHALBHBLCHCLDHDL AX (Accumulator)
BX (Base)
CX (Count)
DX (Data)

 Caùc thanh ghi chæ soá vaø con troû (Index & Pointer Register):
SPBPSIDI Con troû Stack (Stack Pointer)
Con troû neàn (Base Pointer)
Chæ soá nguoàn (Source Index)
Chæ soá ñích (Destnation Index)

 Caùc thanh ghi ñoaïn (Segment Register):


CSDSSSES
Ñoaïn maõ (Code Segment)
Ñoaïn döõ lieäu (Data Segment)
Ñoaïn Stack (Stack Segment)
Ñoaïn theâm (Extra Segment)

 Caùc thanh ghi traïng thaùi vaø ñieàu khieån (Status & Control
Register):
IPFlag Con troû leänh (Intruction Pointer)
Côø
 Caùc thanh ghi döõ lieäu:
Coù boán thanh ghi döõ lieäu kyù hieäu laàn löôït laø: AX, BX, CX, DX,
ñöôïc ngöôøi laäp trình söû duïng cho caùc thao taùc vôùi döõ lieäu. Maëc duø
vi xöû lyù coù theå thao taùc vôùi döõ lieäu trong boä nhôù, nhöng moät leänh
nhö vaäy seõ ñöôïc thöïc hieän nhanh hôn trong thanh ghi (caàn ít chu kyø
ñoàng hoà hôn). Ñoù cuõng laø nguyeân nhaân taïi sao caùc boä vi xöû lyù
hieän ñaïi coù xu höôùng nhieàu thanh ghi.
Caùc byte cao vaø byte thaáp trong thanh ghi ñöôïc truy caäp ñoäc laäp:
Byte cao cuûa thanh ghi AX ñöôïc goïi laø AH vaø byte thaáp ñöôïc goïi laø
AL. Töông töï nhö vaäy cho caùc byte cao vaø byte thaáp cuûa caùc thanh ghi
BX, CX, DX laàn löôït laø BH & BL, CH & CL, DH & DL. Nhôø ñieàu naøy
maø ta coù nhieàu thanh ghi hôn khi laøm vieäc vôùi caùc soá lieäu coù kích
thöôùc byte daøi. Trong ña soá leänh caùc thanh ghi döõ lieäu ñöôïc choïn tuøy
yù nhöng caùc thanh ghi naøy laïi coù chöùc naêng rieâng coá ñònh trong moät
soá ít leänh.
 Thanh ghi tích luõy AX (Accumulator):
Laø thanh ghi ñöôïc söû duïng nhieàu nhaát trong caùc leänh soá hoïc –
logic vaø truyeàn döõ lieäu bôûi vì vieäc söû duïng thanh ghi naøy taïo ra maõ
maùy ngaén nhaát.
Trong caùc thao taùc nhaân hoaëc chia moät trong caùc soá haïn tham gia
phaûi chöùa trong AH hoaëc AL, caùc thao taùc vaøo ra cuõng söû duïng thanh
ghi AH hoaëc AL.
 Thanh ghi cô sôû BX (Base):
Thanh ghi BX ñöôïc duøng cho tính toaùn ñòa chæ trong phöông phaùp
ñònh ñòa chæ giaùn tieáp.
 Thanh ghi ñeám CX (Count):
Vieäc thöïc hieän caùc chöông trình laäp ñöôïc thöïc hieän deã daøng
nhôø thanh ghi CX, trong ñoù CX ñoùng vai troø laø boä ñeám voøng laäp.
Moät thí duï khaùc cuûa vieäc söû duïng thanh ghi CX ñoù laø leänh REP
(Repeat) leänh naøy ñieàu khieån moät lôùp caùc leänh chuyeân veà caùc thao
taùc chuoãi. CL cuõng ñöôïc söû duïng laø moät bieán ñeám trong caùc leänh
dòch hay quay caùc bit.
 Thanh ghi döõ lieäu DX (Data):
DX duøng ñeå ñònh ñòa chæ giaùn tieáp trong caùc thao taùc vaøo ra,
noù cuõng coøn ñöôïc söû duïng chöùa toaùn haïn, keát quaû trong pheùp
nhaân vaø chia.
 Thanh ghi con troû vaø chæ soá:
Caùc thanh ghi SP, BP, SI, DI thöôøng troû tôùi caùc oâ nhôù (töùc laø
chöùa caùc ñòa chæ offset cuûa caùc oâ nhôù ñoù). Khaùc vôùi thanh ghi
ñoaïn, caùc thanh ghi con troû vaø ngaên xeáp ñöôïc söû duïng trong caùc thao
taùc soá hoïc vaø moät soá thao taùc khaùc nhau.
 Thanh ghi con troû – ngaên xeáp SP (Stack Pointer):
Di chuyeån töø ñòa chæ cao ñeán ñòa chæ thaáp, duøng ñeå keát hôïp
vôùi thanh ghi ñoaïn Stack SS (Stack Segment)ñeå löu tröû ñòa chæ trôû veà
hoaëc döõ lieäu vaøo trong ngaên xeáp.
 Thanh ghi con troû cô sôû BP (Base Pointer):
Thanh ghi naøy ñöôïc duøng ñeå truy caäp döõ lieäu trong ngaên xeáp
maø khoâng laøm thay ñoåi SP. Tuy nhieân, khaùc vôùi SP thanh ghi BP cuõng
coøn ñöôïc söû duïng ñeã truy caäp döõ lieäu ôû caùc ñoaïn khaùc.
 Thanh ghi chæ soá nguoàn SI (Source Index):
Thanh ghi SI ñöôïc söû duïng ñeå troû tôùi caùc oâ nhôù trong ñoaïn döõ
lieäu ñöôïc ñònh bôûi thanh ghi ñoaïn döõ lieäu DS (Data Segment), coù theå
truy caäp deã daøng caùc oâ nhôù lieân tieáp baèng caùch taêng SI.
 Thanh ghi chæ soá ñích DI (Destination Index):
Thanh ghi DI coù chöùc naêng töông töï nhö thanh ghi SI vaø ñöôïc
duøng keát hôïp vôùi thanh ghi ñoaïn theâm ES (Extra Segment). Caû hai DI
vaø SI thích hôïp trong caùc thao taùc sao cheùp, di chuyeån hoaëc so saùnh
caùc khoái döõ lieäu coù dung löôïng ñeán 64kB.
 Thanh ghi con troû leänh IP (Intruction Pointer):
8086 khoâng thöïc hieän leänh tröïc tieáp trong boä nhôù maø leänh ñöôïc
laáy ôû haøng ñôïi leänh coù caáu taïo gioáng nhö moät thanh ghi dòch (FIFO:
First In First Out: vaøo tröôùc ra tröôùc) chöùa caùc maõ leänh cung caáp bôûi
khoái BIU. Thanh ghi IP chæ ñeán leänh tieáp theo chöa ñöôïc nhaäp vaøo
haøng ñôïi leänh vaø ñöôïc duøng keát hôïp vôùi thanh ghi CS. Thanh ghi IP
ñöôïc caäp nhaät moãi khi coù moät leänh ñöôïc thöïc hieän xong, khaùc vôùi
caùc thanh ghi khaùc, IP khoâng bò taùc ñoäng tröïc tieáp bôûi caùc leänh.
 Thanh ghi côø (Flag Register):
Thanh ghi côø cuûa 8086 coù ñoä daøi 16bit (2byte) byte thaáp chöùa
caùc bit traïng thaùi gioáng nhö trong 8085 phaûn aùnh traïng thaùi cuûa vi xöû
lyù, byte cao chöùa 1 bit traïng thaùi ñoù laø bit 11 vaø 3 bit ñieàu khieån
duøng ñeå ñieàu khieån hoaït ñoäng cuûa vi xöû lyù. Sau ñaây laø caáu taïo
cuûa thanh ghi côø trong 8086:
15 8 7 0
O D I T S Z A P C
Thanh ghi côø cuûa 8086
C: carry flag.
P: parity flag.
A: auxiliary flag.
Z: zero flag.
S: sign flag.
T: trap flag.
I: interrupt enable flag.
D: direction flag.
O: overflow flag.
+ Côø nhôù CF :
Côø nhôù CF ñöôïc thieát laäp khi coù soá nhôù töø bit MSB. Trong
pheùp coäng hoaëc soá thieáu trong pheùp tröø (MSB trong caùc leänh byte laø
bit 7 vaø trong caùc leänh word laø bit 15) côø CF cuõng bò aûnh höôûng bôûi
caùc leänh quay vaø dòch.
+ Côø chaün leû PF :
Sau caùc leänh soá hoïc hoaëc logic ñoái vôùi caùc leänh byte neáu soá
löôïng soá ‘1’ trong byte keát quaû laø chaün thì côø PF ñöôïc thieát laäp laø
‘1’ ngöôïc laïi laø ‘0’ neáu laø leû, ñoái vôùi caùc leänh word chæ xeùt caùc
byte thaáp.
+ Côø nhôù phuï AF:
Côø nhôù phuï ñöôïc thieát laäp neáu coù nhôù (coäng) hoaëc coù thieáu
(tröø) töø phaân nöûa döôùi ñeán phaân nöûa treân cuûa toaùn haïn (ñoái vôùi
leänh byte ñoù laø bit 3 vaø ñoái vôùi leänh word laø bit 7) côø AF ñöôïc söû
duïng trong caùc thao taùc vôùi soá BCD.
+ Côø zero ZF:
Côø zero ñöôïc thieát laäp khi keát quaû baèng 0.
+ Côø daáu SF:
Côø daáu laø ‘1’ khi bit MSB cuûa keát quaû baèng ‘1’ töùc laø soá aâm,
ñoái vôùi leänh byte MSB laø bit 7 vaø trong leänh word laø bit 15.
+ Côø baãy TF:
Taïo khaû naêng thöïc hieän chöông trình theo töøng böôùc, khi TF baèng
‘1’ 8086 phaùt sinh ngaét loaïi 1 (ngaét cöùng). Chöông trình DEBUG söû
duïng khi thi haønh leänh T (trace) ñeå chaïy töøng böôùc moät leänh. Ñaàu
tieân DEBUG thieát laäp côø TF roài môùi chuyeån ñieàu khieån cho leänh
ñoù. Sau khi leänh ñöôïc thi haønh vi xöû lyù seõ phaùt sinh moät ngaét do TF
ñöôïc laäp DEBUG söû duïng chính phuïc vuï ngaét naøy ñeå laáy quyeàn
ñieàu khieån töø vi xöû lyù.
+ Côø ngaét IF:
Côø ngaét ñöôïc söû duïng ñeå ñieàu khieån caùc ngaét phaàn cöùng beân
ngoaøi, neáu côø naøy ñöôïc thieát laäp caùc ngaét phaàn cöùng coù theå ngaét
8086. Khi xoùa IF, caùc ngaét beân ngoaøi khoâng coøn taùc duïng nöûa (bò
che). Thöïc ra vaãn coøn moät ngaét cöùng khoâng che ñöôïc NMI (Non
Maskable Interrupt).
Tröôùc khi vi xöû lyù trao quyeàn ñieàu khieån cho moät phuïc ngaét noù
xoùa caû IF vaø TF, nhö vaäy phuïc ngaét ñoù seõ khoâng bò ngaét. Taát
nhieân moät phuïc vuï ngaét coù theå ñoåi côø ñeå cho pheùp ngaét khi noù
ñang thi haønh.
+ Côø traøn OF:
Côø traøn laø ‘1’ khi coù hieän töôïng traøn vaø ngöôïc laïi noù baèng
‘0’. Hieän töôïng traøn cho thaáy moät söï thaät laø phaïm vi bieåu dieãn caùc
soá trong maùy tính laø coù giôùi haïn.
Phaïm vi bieåu dieån caùc soá coù daáu trong moät word töø –32768 ñeán
+32767 vaø trong moät byte töø –126 ñeán +127.
Ñoái vôùi caùc soá khoâng daáu töø 0 ñeán 65535 cho moät word vaø töø
0 ñeán 255 cho moät byte. Neáu keát quaû cuûa moät pheùp tính vöôït ra
ngoaøi phaïm vi naøy thì hieän töôïng traøn seõ xaûy ra vaø keát quaû nhaän
ñöôïc bò caét bôùt seõ khoâng phaûi laø keát quaû ñuùng.
+ Côø ñieàu khieån DF:
Laø moät trong ba côø ñieàu khieån duøng ñieàu khieån caùc thao taùc
cuûa vi xöû lyù coâng duïng cuûa DF laø dòch höôùng cho caùc thao taùc
chuoãi, caùc thao taùc naøy ñöôïc thöïc hieän bôûi hai thanh ghi chæ soá SI &
DI, noäi dung cuûa hai thanh ghi naøy seõ töï ñoäng taêng leân khi DF = 0 vaø
giaûm xuoáng khi DF =1.
3.2). Khoái giao tieáp (BIU):
Khoái giao tieáp laøm ñôn giaûn vieäc lieân laïc giöõa EU vaø boä nhôù
hoaëc caùc vi maïch vaøo ra. Noù coù nhieäm vuï gôûi caùc ñòa chæ, soá lieäu
vaø tín hieäu ñieàu khieån vaøo caùc bus, BUI & EU lieân heä vôùi nhau baèng
caùc bus noäi boä, khi EU ñang thi haønh moät leänh, BIU naïp 6 byte maõ
leänh tieáp theo vaøo vaø ñaët chuùng vaøo haøng ñôïi leänh, muïc ñích cuûa
vieäc naøy laø laøm taêng toác ñoä cuûa vi xöû lyù. Neáu EU caàn lieân laïc
vôùi boä nhôù hay thieát bò ngoaïi vi, BIU seõ treo caùc leänh nhaän tröôùc
vaø thöïc hieän thöïc hieän caùc thao taùc caàn thieát. BIU caáu taïo goàm caùc
thanh ghi ñoaïn vaø con troû leänh duøng ñeå chöùa ñòa chæ caùc oâ nhôù.
a). Caùc thanh ghi ñoaïn:
Ñöôïc duøng ñeå löu tröû ñòa chæ cuûa caùc leänh vaø döõ lieäu trong
boä nhôù, vi xöû lyù döïa treân caùc giaù trò naøy ñeå truy caäp boä nhôù.
Boä nhôù laø taäp hôïp caùc byte oâ nhôù, moãi byte coù moät ñòa chæ
xaùc ñònh baét ñaàu töø 0. 8086 gaùn cho moãi oâ nhôù moät ñòa chæ vaät lyù
20 bit. Nhö vaäy, noù coù theå ñònh ñòa chæ ñeán byte (töông ñöông 1MB) oâ
nhôù, caùc byte ñaàu tieân cuûa boä nhôù coù ñòa chæ nhö sau:
0000 0000 0000 0000 0000
0000 0000 0000 0000 0001
0000 0000 0000 0000 0010
0000 0000 0000 0000 0011
0000 0000 0000 0000 0100
Ñeå ñôn giaûn, caùc ñòa chæ treân thöôøng ñöôïc bieåu dieån baèng soá
thaäp luïc phaân nhö sau:
00000H
00001H
00002H
………… H
vaø cöù tieáp tuïc cho ñeán giaù trò lôùn nhaát laø FFFFFH
Do caùc ñòa chæ quaù lôùn (20 bit) khoâng theå chöùa trong moät thanh
ghi cuûa 8086 (16 bit) neân 8086 chia boä nhôù thaønh caùc ñoaïn boä nhôù
(Memory Segment).
Moät ñoaïn boä nhôù laø moät khoái goàm 216 (64K) oâ nhôù lieân tieáp
nhau, moãi ñoaïn ñöôïc xaùc ñònh baèng moät ñòa chæ ñoaïn baét ñaàu töø ñòa
chæ 0, ñòa chæ ñoaïn laø moät soá 16 bit neân ñòa chæ ñoaïn lôùn nhaát laø
FFFF. Beân trong moãi ñoaïn soá oâ nhôù ñöôïc xaùc ñònh baèng ñòa chæ
töông ñoái (offset), ñoù laø soá byte tính töø ñaàu ñoaïn, vôùi moät ñoaïn 64K
thì offset cuõng laø moät soá 16 bit, byte ñaàu tieân trong ñoaïn coù offset
baèng 0 vaø byte cuoái cuøng baèng FFFF.
Moät oâ nhôù coù theå ñöôïc xaùc ñònh baèng ñòa chæ ñoaïn:ñòa chæ
töông ñoái trong ñoaïn (segment:offset) vaø ñöôïc goïi laø ñòa chæ logic.
Thí duï: oâ nhôù A4FB: 4872 coù ñòa chæ ñoaïn laø A4FB vaø ñòa chæ
offset laø 4872. Ñeå tìm ñòa chæ vaät lyù cuûa oâ nhôù tröôùc tieân ta dòch
ñòa chæ ñoaïn veà beân traùi 4 bit vaø sau ñoù coäng vôùi ñòa chæ offset, nhö
vaäy ñòa chæ vaät lyù cuûa oâ nhôù A4FB:4872 ñöôïc tính nhö sau: A4FB0
4872
A9822
b). Saép xeáp ñoaïn:
Trong boä nhôù ñoaïn 0 baét ñaàu töø ñòa chæ 0000:0000 = 00000 vaø
keát thuùc ôû 0000:FFFF = 0FFFF, ñoaïn 1 baét ñaàu töø ñòa chæ 0001:0000 =
00010 vaø keát thuùc ôû ñòa chæ 0001:FFFF = 1000F. Nhö vaäy, coù raát
nhieàu söï choàng nhau giöõa caùc ñoaïn. Caùc ñoaïn baét ñaàu töø caùc ñòa
chæ caùch nhau 16byte vaø ñòa chæ ñaàu cuûa moãi ñoaïn luoân keát thuùc
baèng caùc soá 0. 16byte ñöôïc goïi laø moät khuùc (Paragraph), caùc ñòa chæ
chia heát cho 16 ( caùc ñòa chæ keát thuùc baèng 0) laø caùc bieân giôùi khuùc
(Paragraph Boundary)
c). Caùc ñoaïn cuûa chöông trình:
Moãi ñoaïn chöông trình ngoân ngöõ maùy bao goàm caùc leänh vaø döõ
lieäu, coøn moät vuøng ñaëc bieät trong RAM goïi laø ngaên xeáp (stack). Maõ
leänh, döõ lieäu vaø ngaên xeáp cuûa chöông trình ñöôïc naïp vaøo caùc ñoaïn
boä nhôù khaùc nhau ñoù laø ñoaïn maõ (code segment), ñoaïn döõ lieäu (data
segment), ñoaïn ngaên xeáp (stack segment).
Ñeå theo doõi caùc ñoaïn khaùc nhau cuûa chöông trình 8086 ñöôïc cung
caáp 4 thanh ghi ñoaïn ñeå chöùa caùc ñòa chæ ñoaïn, caùc thanh ghi CS, DS,
SS laàn löôïc chöùa caùc ñòa chæ ñoaïn maõ, ñoaïn döõ lieäu, vaø ñoaïn ngaên
xeáp. Neáu chöông trình muoán truy caäp ñeán moät döõ lieäu thöù hai noù
coù theå söû duïng thanh ghi ñoaïn theâm ES (extra segment).
Moät chöông trình khoâng phaûi bao giôø cuõng caàn chieám heát moät
ñoaïn 64KB, do ñaëc ñieåm choàng nhau giöõa caùc ñoaïn cho pheùp caùc
ñoaïn cuûa moät chöông trình nhoû hôn 64KB coù theå ñaët gaàn laïi vôùi
nhau. Taïi moät thôøi ñieåm, chæ coù caùc oâ nhôù ñöôïc ñònh ñòa chæ bôûi 4
thanh ghi ñoaïn môùi coù theå truy caäp, nghóa laø chæ coù 4 ñoaïn boä nhôù
laø taùc ñoäng. Tuy nhieân noäi dung cuûa caùc thanh ghi ñoaïn coù theå thay
ñoåi bôûi chöông trình ñeå truy caäp ñeán caùc ñoaïn khaùc nhau.
d). Haøng ñôïi leänh:
Nhö ta ñaõ bieát, ñeå taêng toác ñoä vi xöû lyù khoái BIU tieáp nhaän
caùc leänh vaø ñöa vaøo haøng ñôïi leänh (Queue) trong khi ñoù khoái EU
ñang thi haønh leänh. Haøng ñôïi leänh coù theå nhaän 6 byte maõ leänh, caùc
leänh cuûa 8086 coù ñoä daøi töø 1 ñeán 6 byte, neáu leänh chöa vaøo ñaày
ñuû trong haøng ñôïi leänh thì khoái EU seõ chôø cho ñeán khi leänh naïp heát
vaøo haøng ñôïi leänh.
II. CAÁU TRUÙC BEÂN NGOAØI VAØ CHÖÙC NAÊNG CUÛA VXL
8086.
1). Sô ñoà chaân cuûa 8086:
8086 laø vi xöû lyù 16 bit noù goàm 16 ñöôøng döõ lieäu vaø 20 ñöôøng
ñòa chæ, caùc ñöôøng döõ lieäu töø D0 ñeán D15 vaø caùc ñöôøng ñòa chæ
töø A0 ñeán A15 hoaït ñoäng theo phöông phaùp ña loä thôøi gian.
8086 coù theå laøm vieäc ôû hai cheá ñoä:
- Cheá doä Minimum.
- Cheá ñoä Maximum.
Trong cheá ñoä minimum, 8086 ñieàu khieån caùc thieát bò baèng caùc
tín hieäu ñieàu khieån cuûa chính noù, trong cheá ñoä naøy hoã trôï boä xöû
lyù toaùn hoïc 8087
Trong cheá ñoä maximum caàn thieát phaûi keát hôïp vôùi vi maïch ñieàu
khieån bus 8288 ñeå taïo ra caùc tín hieäu ñoïc – ghi cho boä nhôù vaø caùc
thieát bò ngoaïi vi vaø cheá ñoä naøy cho pheùp laøm vieäc vôùi 8087.
Sau ñaây laø sô ñoà chaân cuûa 8086 ôû caû hai cheá ñoä minimum vaø
maximum:

GND 1 40 Vcc
AD14 2 39 AD15
AD13 38 A16/S3
3
AD12 37 A17/S4
4
AD11 36 A18/S5
5
AD10 35 A17/S6
6
AD9 34 BHE/S7
7
AD8 8 33 MN/MX
AD7 9 8086 32 RD
AD6
AD5
10
11
CPU 31
30
HOLD
HLDA
(RQ/GT0)
(RQ/GT1)
AD4 12 29 WR (LOCK)
AD3 13 28 M/IO (S2)
AD2 14 27 DT/R (S1)
AD1 15 26 DEN (S0)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA (QS1)
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET

Hình 1.2: Sô ñoà chaân 8086


2). Chöùc naêng cuûa caùc chaân cuûa 8086:
 Vcc = 5V
Ñieän aùp nuoâi laø 5V DC, dung sai cho pheùp laø 10%.
 GND = 0V
Caùc ñöôøng mass neân coù ñieän trôû caøng nhoû caøng toát.
 CLK = clock (input)
Xung ñoàng hoà ñöa vaøo chaân naøy laø khoâng ñoái xöùng vaø coù tyû
leä laø ½ (High/Low).
 INTR- Interrupt Request (input):
Möùc cao ôû ngoõ naøy baùo cho 8086 bieát coù moät yeâu caàu ngaét
(thuôøng ñöôïc gôûi tôùi töø vi maïch xöû lyù ngaét 8259), tín hieäu ngaét taïi
chaân naøy coù theå bò che baèng phaàn meàm. Khi vi xöû lyù chaáp nhaän
yeâu caàu ngaét, noù seõ ñöa ra moät chu kyø chaáp nhaän ngaét vaø vi maïch
xöû lyù ngaét phaûi gôûi ñòa chæ cuûa ngaét leân bus döõ lieäu töông öùng
vôùi chu kyø thöù hai.
 NMI (Non Maskable Interrupt):
Ñaây laø ngaét khoâng che ñöôïc, taùc ñoäng ôû möùc cao vi xöû lyù
nhaûy ñeán ñòa chæ ngaét soá 2 trong baûng vector ngaét vaø khoâng taïo ra
chu kyø chaáp nhaän ngaét.
 Reset (input):
Ngoõ vaøo möùc cao ñaët vi xöû lyù veà traïng thaùi ban ñaàu sau ít
nhaát 4 chu kyø ñoàng hoà. Thanh ghi CS ñöôïc ñaët giaù trò FFFF vaø thanh
ghi IP ñöôïc ñaët giaù trò 0000. Nhö vaäy chæ thò ñöôïc thöïc hieän ñaàu tieân
chöùa ôû oâ nhôù FFFF0 quaù trình chuyeån tieáp töø möùc cao xuoáng möùc
thaáp ñöôïc ñoàng boä bôûi chu kyø ñoàng boä töø vi maïch taïo xung ñoàng
hoà 8284.
 Ready (input):
Tín hieäu baùo ñaõ hoaøn taát thao taùc truyeàn döõ lieäu cuûa boä nhôù
hoaëc thieát bò vaøo – ra, taùc ñoäng ôû möùc cao, vi xöû lyù seõ ñôïi neáu tín
hieäu naøy ôû möùc thaáp.
 AD0… AD15 - Address/Data bus (input/output):
Gioáng nhö trong 8085, caùc ñöôøng ñòa chæ - döõ lieäu naøy laøm vieäc
theo nguyeân taéc ña loä thôøi gian, laø ñòa chæ trong chu kyø T 1 vaø laø döõ
lieäu trong chu kyø T2, T3, Tw, T4, taùc ñoäng ôû möùc cao, coù caáu taïo ba
traïng thaùi vaø ôû traïng thaùi toång trôû cao trong luùc vi xöû lyù ‘Interrupt
acknowlegde’ vaø ‘Hold acknowledge’.
 A16/S3 …… A19/S6 – Addres/Status (output):
Trong chu kyø T1 laø 4 bit ñòa chæ cao khi thao taùc vôùi boä nhôù, trong
luùc thao taùc vôùi thieát bò vaøo - ra chaân naøy coù gía trò thaáp. Trong caû
hai thao taùc cuõng nhö vaøo – ra caùc bit naøy laø traïng thaùi trong caùc chu
kyø T2, T3, Tw, T4. Traïng thaùi bit cao cho pheùp ngaét, S 5 ñöôïc caäp nhaät
taïi moãi thôøi ñieãm baét ñaàu cuûa moãi chu kyø ñoàng hoà. S 3 & S4 cho
bieát thanh ghi ñoaïn ñang ñöôïc söû duïng, thoâng tin naøy caàn thieát cho Co-
processor xaùc ñònh vò trí cuûa toaùn haïng. Coù caáu taïo ba traïng thaùi vaø
traïng thaùi toång trôû cao khi vi xöû lyù ‘Hold acknowledge’.
S3 S4 Thanh ghi ñoaïn ñöôïc
choïn
0 0 Thanh ghi ñoaïn theâm.
0 1 Thanh ghi ñoaïn ngaên
1 0 xeáp.
1 1 Thanh ghi ñoaïn leänh.
Thanh ghi ñoaïn döõ lieäu .
Hai bit S3 & S4 ñeå choïn caùc thanh ghi ñoaïn.
 BHE/S7 – Bus high enable / status (output):
Keát hôïp vôùi bit ñòa chæ A0 ñeå xaùc ñònh cheá ñoä truyeàn döõ lieäu,
BHE ôû möùc thaáp trong chu kyø T1 cuûa caùc thao taùc ñoïc – ghi vaø chaáp
nhaän ngaét khi moät byte ñöôïc truyeàn trong byte cao cuûa bus döõ lieäu. S 7
coù hieäu löïc trong caùc chu kyø T 2, T3 & T4, caáu taïo ba traïng thaùi vaø
traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold’.
HBE A0 Kieåu truyeàn döõ lieäu
0 0 Truy xuaát 16 bit
0 1 Truy xuaát byte cao töø ñòa chæ
1 0 leû
1 1 Truy xuaát byte thaáp ñòa chæ
chaún.
Khoâng söû duïng .
Caùc kieåu truy xuaát döõ lieäu.
 RD – Read (output):
Tín hieäu ra ñieàu khieån vieäc ñoïc boä nhôù hoaëc khoái vaøo ra phuï
thuoäc vaøo bit traïng thaùi S2, möùc thaáp taïi T2, T3 vaø Tw trong moãi chu
kyø ñoïc, caáu taïo ba traïng thaùi vaø toång trôû cao khi vi xöû lyù ôû cheá
ñoä ‘Hold acknowledge’.

 Test (input):
Tín hieäu vaøo ñöôïc kieãm tra bôûi leänh ‘wait’ vi xöû lyù seõ khoâng
laøm gì caû khi ñieän aùp chaân naøy coù giaù trò thaáp, ñoàng boä taïi caïnh
leân cuûa moãi xung ñoàng hoà.
 MN-MX – Minimum-Maximum (input):
Chaân choïn cheá ñoä laøm vieäc cuûa 8086, cheá ñoä laøm vieäc laø
minimum töông öùng vôùi möùc cao vaø cheá ñoä laøm vieäc laø maximum
öùng vôùi möùc thaáp. Bus ñieàu khieån ôû hai cheá ñoä coù chöùc naêng
khaùc nhau.
 M/IO (output):
Ngoû ra traïng thaùi gioáng nhö bit S0 ôû cheá ñoä maximum duøng ñeå
baùo vò trí ñang truy xuaát döõ lieäu. Möùc cao laø boä nhôù vaø möùc thaáp
laø khoái vaøo-ra. Caáu taïo ba traïng thaùi, toång trôû cao khi vi xöû lyù ôû
cheá ñoä ‘Hold acknowledge’.
 WR – write (output):
Tín hieäu ra ñieàu khieån thao taùc ghi vaøo boä nhôù hoaëc khoái vaøo-
ra tuøy theo giaù trò cuûa ngoõ M/IO. Taùc ñoäng möùc thaáp ôû T 2, T3 vaø Tw
cuûa moãi chu kyø ghi, caáu taïo ba traïng thaùi vaø traïng thaùi toång trôû cao
khi vi xöû lyù ôû cheá ñoä ‘Hold acknowledge’.
 INTRA – Interrup Acknowlegde (output):
Tín hieäu chaáp thuaän ngaét, taùc ñoäng möùc thaáp taïi T 2, T3 vaø Tw
duøng ñeå ñöa ñòa chæ cuûa ngaét leân bus döõ lieäu.
 ALE – Adress Latch Enable
Tín hieäu ñieàu khieån choát ñòa chæ 74LS373 hoaëc 8282/8283 taùc
ñoäng möùc cao trong khoaûng T1 cuûa moãi chu kyø bus :
+ Khi ALE = 1 caùc bit AD0 … AD15 laø ñòa chæ.
 Hold (input):
Tín hieäu vaøo cho bieát moät linh kieän ñoøi quyeàn söû duïng bus, taùc
ñoäng ôû möùc cao.
 HLDA – Hold acknowlegde (output):
Tín hieäu ra ôû möùc cao cho bieát yeâu caàu Hold ñöôïc chaáp thuaän, vi
xöû lyù seõ treo bus noäi boä vaø caùc ñöôøng ñieàu khieån cuûa noù ôû traïng
thaùi toång trôû cao.
 DT/R – Data Transmit/Receive (output):
Tín hieäu ra duøng ñeå ñieàu khieån höôùng truyeàn döõ lieäu cuûa vi
maïch thu-phaùt. Caáu taïo ba traïng thaùi vaø traïng thaùi toång trôû cao khi vi
xöû lyù ôû cheá ñoä ‘Hold acknowledge’.
 DEN – Data enable (output):
Tín hieäu ra ôû möùc thaáp cho moãi chu kyø thao taùc boä nhôù vaø I/O
vaø caû INTRA ñieàu khieån ngoû ra cho pheùp cuûa 8286/8287 trong hoaït
ñoäng thu – phaùt döõ lieäu. Caáu taïo ba traïng thaùi, traïng thaùi toång trôû
cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowledge’.
 S0, S1, S2 (thoâng tin traïng thaùi) :
Vi maïch 8288 döïa treân caùc thoâng tin naøy ñeå thöïc hieän caùc thao
taùc ñieàu khieån. Caáu taïo ba traïng thaùi, traïng thaùi toång trôû cao khi
‘Hold acknowledge’. Taùc ñoäng trong caùc chu kyø T 4, T1 & T2 vaø trôû veà
traïng thaùi thuï ñoäng ôû T3 hoaëc Tw khi Ready ôû möùc cao. Moät söï thay
ñoåi baát kyø cuûa tín hieäu naøy trong chu kyø T 4 ñöôïc duøng ñeå ñaùnh
daáu thôøi ñieåm baét ñaàu cuûa chu kyø bus vaø trôû veà thuï ñoäng ôû trong
T3 hoaëc Tw xaùc ñònh ñieåm keát thuùc cuûa chu kyø bus.
S2 S1 S0 Thoâng tin ñieàu khieån
0 0 0 Chaáp nhaän ngaét.
0 0 1 Ñoïc töø coång.
0 1 0 Vieát ra coång
0 1 1 Döøng.
1 0 0 Nhaäp maõ leänh.
1 0 1 Ñoïc töø boä nhôù.
1 1 0 Vieát ra boä nhôù.
1 1 1 Thuï ñoäng.

 RQ/GT0, RQ/GT1 – Request/Gram (input/output):


Hai tín hieäu yeâu caàu vi xöû lyù nhöôøng quyeàn söû duïng bus, tín
hieäu RQ/GT0 coù möùc öu tieân cao hôn. Nguyeân lyù hoaït ñoäng ñöôïc moâ
taû nhö sau:
+ Moät xung coù beà roäng moät chu kyø ñoàng hoà cho bieát moät linh
kieän caàn söû duïng bus.
+ Trong chu kyø ñoàng hoà T4 hoaëc T1 vi xöû lyù gôûi ñeán linh kieän
ñoù xung coù beà roäng chu kyø ñoàng hoà cho bieát vi xöû lyù chaáp nhaän
nhöôøng quyeàn söû duïng bus vaø noù seõ tieán vaøo traïng thaùi ‘Hold
acknowledge’ sau xung ñoàng hoà keá tieáp ñeå treo bus cuûa chính noù.
+ Xung beà roäng chu kyø ñoàng hoà ñöôïc gôûi ñeán 8086 cho bieát
quaù trình ‘Hold’ keát thuùc vaø vi xöû lyù trôû laïi quaûn lyù bus xau khi
chaám döùt chu kyø ñoàng hoà keá tieáp. Neáu yeâu caàu naøy xaûy ra trong
khi vi xöû lyù ñang truy xuaát boä nhôù, noù seõ treo bus trong khoaûngT 4
neáu thoûa nhöõng dieàu kieän sau ñaây:
- Yeâu caàu xaûy ra trong khi hoaëc tröôùc T2.
- Chu kyø hieän haønh khoâng phaûi laø byte thaáp cuûa word (ôû
ñòa chæ leû).
- Chu kyø hieän haønh khoâng ôû traïng thaùi chaáp nhaän ngaét.
- Khoâng coù chæ thò khoùa.
Neáu bus khoâng baän khi coù yeâu caàu thì coù hai tröôøng hôïp seõ
xaûy ra.
- Bus seõ treo ôû chu kyø ñoàng hoà keá tieáp.
- Moät chu boä nhôù seõ khôûi ñoäng trong voøng 3 chu kyø
ñoàng hoà.
 Clock (output):
Möùc cao baùo cho caùc linh kieän ngoaøi bieát (Co-processor) raèng chu
kyø bus tieáp theo khoâng ñöôïc pheùp giaùn ñoaïn, ñieàu naøy xaûy ra khi
trong chöông trình coù chæ thò ‘Clock’. Caáu taïo ngoõ ra ba traïng thaùi,
traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold acknowledge’
 QS1, QS0 – Queue status (output):
Ngoõ ra cho bieát traïng thaùi cuûa haøng ñôïi leänh, nhöõng thoâng tin
naøy caàn thieát cho Co-processor.

QS0 QS1 Traïng thaùi haøng ñôïi leänh


0 0 Khoâng hoaït ñoäng .
0 1 Xoùa noäi dung haøng ñôïi keänh.
1 0 Naïp byte maõ leänh ñaàu tieân vaøo thanh ghi
1 1 leänh.
Naïp byte maõ leänh tieáp theo cuûa leänh nhieàu
byte
III. CAÙC PHÖÔNG PHAÙP ÑÒNH ÑÒA CHÆ CUÛA VI XÖÛ
LYÙ 8086:
Phöông phaùp ñònh ñòa chæ (Addressing Mode) laø caùch ñeå CPU tìm
thaáy toaùn haïng cho caùc leänh cuûa noù khi hoaït ñoäng. Moät boä vi xöû
lyù coù theå coù nhieàu cheá ñoä ñònh ñòa chæ.
Caùc cheá ñoä ñònh ñòa chæ naøy ñöôïc xaùc ñònh ngay töø khi cheá taïo
ra boä vi xöû lyù vaø sau naøy ngöôøi ta laáy ñoù ñeå laøm chuaån maø
khoâng thay ñoåi.
Ngoaøi caùc phöông phaùp ñònh ñòa chæ: töùc thôøi, tröïc tieáp, giaùn
tieáp gioáng nhö cuûa 8085, vi xöû lyù 8086 coøn coù theâm caùc caùch ñònh
ñòa chæ khaùc vaø ñöôïc phaân loaïi nhö sau:
- Ñònh ñòa chæ baèng thanh ghi.
- Ñònh ñòa chæ töùc thôøi.
- Ñònh ñòa chæ tröïc tieáp.
- Ñònh ñòa chæ giaùn tieáp.
- Ñònh ñòa chæ töông ñoái.
Baèng caùch keát hôïp caùc phöông phaùp ñònh ñòa chæ khaùc nhau
trong moät chæ thò, coù theå taïo ra nhieàu khaû naêng phöùc taïp ñeå truy
xuaát toaùn haïng (operand) caùc thieát bò vaøo – ra chæ ñöôïc truy caäp baèng
caùc phöông phaùp tröïc tieáp vaø giaùn tieáp. Thöù töï moâ taû byte cuûa
moät word ñöôïc löu trong boä nhôù gioáng nhö qui ñònh cuûa 8085, coù
nghóa laø caùc byte thaáp (LSB) ôû ñòa chæ thaáp vaø caùc byte cao (MSB)
ñöôïc ñaët ôû ñòa chæ cao hôn keá caän.
Trong caùc trình baøy sau ñaây, boä ñeám chöông trình PC (Program
Counter) chöùa ñòa chæ offset cuûa chæ thò keá tieáp seõ thöïc hieän, chæ thò
naøy ñaû saún saøng trong haøng ñôïi leänh. Con troû leänh IP troû ñeán ñòa
chæ cao hôn, ñoù laø byte tieáp theo seõ ñöôïc BIU nhaäp vaøo haøng ñôïi
leänh.
1). Caùc phöông phaùp ñònh ñòa chæ thoâng duïng:
1.1) Ñònh ñòa chæ töùc thôøi:
Trong phöông phaùp naøy toaùn haïng nguoàn chính laø döõ lieäu caàn
xöû lyù cuûa chæ thò.
Thí duï: Mov ax, 1200
Mov Ax, 1200 CPU Boä
Tröôùc nhôù
2300
AX SP CS 2300
BX BP DS 0100 B8
CX SI SS PC 0100 00
12
DX DI ES

O D I T S Z A P C
FI

Sau
2300
AX 1200 SP CS 2300 B8
BX BP DS PC 0103 00
CX SI SS 12
DX DI ES 0103

O D I T S Z A P C
FI
1.2). Phöông phaùp ñònh ñòa chæ tröïc tieáp:
Trong chæ thò bao goàm ñòa chæ offset cuûa toaùn haïng, ñòa chæ ñoaïn ñöôïc
Hình1.3 :Phöông phaùp ñònh ñòa chæ töùc thôøi
quy ñònh laø noäi dung cuûa thanh ghi DS.
Thí duï: Mov ax [0230]

CPU Boä
Tröôùc nhôù
2300
0100 EC
SP CS 2300
BP DS PC 0100
SI SS
0260 DI ES I/O
O D I T S Z A P C 260 1C
FI
Sau
2300
AX 1200 SP CS 2300 EC
BX BP DS PC 0101 0101
CX SI SS
DX DI ES
I/O 1C
O D I T S Z A P C 260
FI

Hình1.4:Phöông phaùp ñònh ñòa chæ giaùn


tieáp
1.3). Ñònh ñòa chæ giaùn tieáp:
Trong phöông phaùp truy xuaát giaùn tieáp caùc coång luoân luoân taùc
ñoäng ñeán thanh ghi DX, noäi dung cuûa DX laø ñòa chæ 16 bit cuûa coång.
Soá löôïng coång laø 64k.
Thí duï: IN AL, DX
CPU Boä
Tröôùc nhôù
AX SP CS 2300
2300
BX 0280 BP DS 2780
PC 0100 010 8B 2080 00
CX SI SS
0 07 12
DX DI ES

O D I T S Z A P C
FI
Sau

AX CS 2300
1200 SP 2300
8B 208 00
BX 0280 BP DS 2780 PC 1002
07 0 12
CX SI SS
DX DI ES 010
3
O D I T S Z A P C
FI

Hình 2.4: Phöông phaùp ñònh ñòa chæ töông ñoái


CHÖÔNG II
KHAÛO SAÙT TOÅNG QUAÙT TAÄP LEÄNH CUÛA VI
XÖÛ LYÙ 8086

I. CAÙCH MAÕ HOAÙ LEÄNH CUÛA 8086


Vi xöû lyù 8086 coù nhieàu phöông phaùp ñònh ñòa chæ vaø cuõng coù
nhieàu khaû naêng keát hôïp caùc phöông phaùp ñoù laïi vôùi nhau. Tuy
nhieân, moät leänh chæ caàn 6 byte ñeå maõ hoùa, vaø byte baét ñaàu laø maõ
coâng taùc (Operations code), byte tieáp theo chöùa kieåu ñòa chæ vaø tieáp
theo ñoù coù theå laø moät hoaëc hai byte duøng ñeå chöùa ñòa chæ. Caùc byte
cuoái cuøng goàm moät hoaëc hai chöùa toaùn haïng 8 hoaëc 16 bit.
Thöïc teá ñeå bieåu dieån daïng thöùc caùc byte duøng ñeå maõ hoùa
leänh Mov. Ta ttaáy raèng ñeå maõ hoùa leänh Mov ta phaûi caàn ít nhaát laø
hai byte, trong ñoù 6 bit cuûa byte ñaàu duøng ñeå chöùa maõ leänh. Ñoái vôùi
leänh Mov ñeå chuyeån döõ lieäu kieåu:
- Thanh ghi  thanh ghi Tröø thanh ghi ñoaïn
- Boä nhôù  thanh ghi
Thì bit ñaàu (opcode) naøy luoân laø ‘100010’ (ñoái vôùi thanh ghi ñoaïn
thì khaùc).
Ñoái vôùi bit ‘D’ duøng ñeå chæ höôùng ñi cuûa döõ lieäu.
D = 0 thì döõ lieäu ñi töø thanh ghi cho bôûi 3 bit cuûa REG.
D = 1 döõ lieäu ñi ñeán thanh ghi cho bôûi 3 bit REG.
Ñoái vôùi bit W duøng ñeå chæ raèng moät byte (W = 0) hoaëc moät töø
(W = 1) seõ ñöôïc chuyeån.
Byte1 Byte 2 Byte 3 Byte
4 DispL DispH
1 0 0 0 1 0
Opcode D W Mod R M
EG /R hoaëc
Disp: displacement (dòch chuyeån )
Ñòa chæ tröïc tieáp Ñòa chæ tröïc tieáp
phaàn thaáp phaàn cao

II. KHAÛO SAÙT TOÅNG QUAÙT TAÄP LEÄNH CUAÛ VXL 8086.
Taäp leänh cuûa 8086 goàm 9 nhoùm leänh:
- Nhoùm leänh truyeàn soá lieäu.
- Nhoùm leänh soá hoïc.
- Nhoùm leänh thao taùc chuoãi.
- Nhoùm leänh logic.
- Nhoùm leänh xöû lyù bit.
- Nhoùm leänh ñieàu khieån chöông trình.
- Nhoùm leänh ngoân ngöõ baäc cao.
- Nhoùm leänh ôû cheá ñoä baûo veä.
- Nhoùm leänh ñieàu khieån caùc boä vi xöû lyù.
Qua nhöõng nhoùm leänh giôùi thieäu treân nhoùm thöïc hieän ñeà taøi
chæ khaûo saùt nhöõng nhoùm leänh thoâng duïng nhaèm phuïc vuï cho vieäc
laäp trình baèng ngoân ngöõ maùy.
2.1). Nhoùm leänh truyeàn soá lieäu:
Caùc leänh truyeàn döõ lieäu seõ sao cheùp döõ lieäu giöõa thanh ghi
vôùi thanh ghi, vôùi boä nhôù hoaëc vôùi khoái vaøo-ra. Chuùng coù theå söû
duïng nhieàu caùch ñònh ñòa chæ khaùc nhau. Trong caùch vieát leänh döôùi
daïng gôïi nhôù: toaùn haïng ñaàu tieân laø thanh ghi ñích hoaëc ñòa chæ ñích
vaø tieáp sau daáu phaåy laø thanh ghi nguoàn hoaëc ñòa chæ nguoàn. Khaùc
vôùi 8085, trong 8086 taát caû caùc leänh truyeàn döõ lieäu ñeàu duøng leänh
“Mov”
 Truyeàn töø thanh ghi vaøo thanh ghi:
Mov (Reg1), (Reg2)
Noäi dung (Reg2) ñöôïc sao cheùp vaøo (Reg1).
Thí duï: Mov AL, BL
Sao cheùp noäi dung BL vaøo thanh ghi AL.
 Truyeàn töø thanh ghi vaøo boä nhôù:
Mov (Mem), (Reg)
Ñoái vôùi leänh byte, noäi dung cuûa thanh ghi ñöôïc ñöa vaøo ñòa chæ
cuûa oâ nhôù. Ñoái vôùi leänh word thì noäi dung cuûa thanh ghi ñöôïc ñöa
vaøo hai oâ nhôù coù ñòa chæ laàn löôïc laø (Mem) vaø (Mem + 1).
Thí duï: Mov [1200], BL
Sao cheùp noäi dung cuûa thanh ghi BL vaøo oâ nhôù coù ñòa chæ töông
ñoái laø 1200.
 Truyeàn töø oâ nhôù vaøo thanh ghi:
Mov (Reg), (Mem)
Ñoái vôùi leänh byte, noäi dung oâ nhôù ñöôïc cheùp vaøo thanh ghi.
Ñoái vôùi leänh word, noäi dung cuûa 2 oâ nhôù (Mem) vaø (Mem + 1) ñöôïc
cheùp vaøo thanh ghi.
Thí duï: Mov BL, [1500]
Sao cheùp noäi dung oâ nhôù taïi ñòa chæ 1500 vaøo thanh ghi BL.
Mov BX, [1500]
Sao cheùp noäi dung hai oâ nhôù taïi ñòa chæ 1500 vaø 1501 vaøo thanh
ghi BX (oâ 1500 vaøo BL vaø oâ 1501 vaøo BH)
Chuù yù: neáu söû duïng AL hoaëc AX trong caùc leänh truyeàn töø
thanh ghi vaøo oâ nhôù vaø ngöôïc laïi seõ nhaän ñöôïc maõ coâng taùc ngaén
hôn khi söû duïng caùc thanh ghi khaùc.
 Truyeàn töùc thôøi vaøo thanh ghi:
Mov (Reg), (Data)
Trong leänh naøy, döõ lieäu ñöôïc truyeàn töùc thôøi vaøo thanh ghi.
Thí duï: Mov BL, 20
Giaù trò 20 ñöôïc ñöa vaøo thanh ghi BL.
 Truyeàn töùc thôøi vaøo boä nhôù:
Mov (Mem), (Data)
Trong leänh byte döõ lieäu ñöôïc truyeàn töùc thôøi vaøo oâ nhôù coù
ñòa chæ (Mem). Trong leänh word döõ lieäu ñöôïc truyeàn töùc thôøi vaøo 2
oâ nhôù coù ñòa chæ (Mem) vaø (Mem + 1).
Thí duï: Mov [1200], 50
Giaù trò 50 ñöôïc ñöa vaøo oâ nhôù coù ñòa chæ 1200.
Mov Word PTR [1200], 50
Giaù trò Word 0050 ñöôïc ñöa vaøo 2 oâ nhôù baét daàu taïi ñòa chæ
1200:50 (LSB) vaøo ñòa chæ 1200:00 (MSB) vaøo ñòa chæ 1201
- Truy xuaát tröïc tieáp coång:
IN (Reg), (Port)
Ñoïc noäi dung cuûa coång vaøo thanh ghi. thanh ghi söû duïng l2 AL
(daïng byte) vaø AX (daïng Word), ñòa chæ coång laø moät soá 8 bit.
OUT (Reg), (Port)
Xuaát noäi dung cuûa thanh ghi ra coång.
- Truy xuaát giaùn tieáp coång:
IN (Reg), DX
Ñoïc noäi dung cuûa coång coù ñòa chæ chöùa trong DX vaøo thanh ghi.
Thanh ghi söû duïng laø AL hoaëc AX, ñòa chæ coång laø soá 16 bit.
OUT DX, (Reg)
Gôûi noäi dung thanh ghi ra coång coù ñòa chæ chöùa trong DX
2.2). Nhoùm leänh soá hoïc:
Bao goàm caùc pheùp tính cô baûn (coäng, tröø, nhaân vaø chia) vaø
pheùp so saùnh, toaùn haïng coù theå laø döõ lieäu 8 bit hoaëc 16 bit, keát quaû
coù theå laø 8 bit, 16 bit hoaëc 32 bit. Caùc toaùn haïng ñöôïc chöùa trong
thanh ghi boä nhôù töùc thôøi. Tuøy theo thao taùc, keát quaû coù theå ñöôïc
chöùa trong 1 hoaëc 2 thanh ghi trong boä nhôù.
 Pheùp coäng:
Vi xöû lyù 8086 thöïc hieän pheùp coäng coù löu yù soá nhôù hoaëc
khoâng löu yù soá nhôù 8 bit hoaëc 16 bit.
+ Soá haïng ñaàu tieân ñöôïc chöùa trong caùc thanh ghi döõ lieäu
(AX, BX, CX, DX, AH, AL, BH …), trog moät thanh ghi chæ soá hoaëc moät
oâ nhôù. Soá haïng thöù hai coù theå laø töùc thôøi trong thanh ghi hoaëc trong
boä nhôù. Hai soá haïng khoâng theå cuøng ôû trong boä nhôù, keát quaû
pheùp coäng ñöôïc chöùa trong toaùn haïng thöù nhaát. Sau ñaây laø baûng
lieät keâ leänh coäng döôùi daïng gôïi nhôù:
Coäng khoâng löu yù soá Coäng coù löu yù soá Thí duï
nhôù nhôù
ADD (accu), (data) ADC (accu), (data) ADD AX, 1250
ADD (mem), (data) ADC (mem), (data) ADD Byte PTR
ADD (reg), (data) ADC (reg), (data) [0900],50
ADD (reg1), (reg2) ADC (reg1), (reg2) ADD BL, 50
ADD (reg), (mem) ADC (reg), (mem) ADC AL, AH
ADD (mem), (reg) ADC (mem), (reg) ADD CX, [0800]
ADC [0600], DL
 Pheùp tröø:
8086 coù theå thöïc hieän pheùp tröø vôùi 8 bit hoaëc 16 bit, leänh SBB
coù löu yù soá thieáu vaø leänh SUB khoâng löu yù soá thieáu. Sau ñaây laø
baûng lieät keâ leänh tröø döôùi daïng gôïi nhôù:
Tröø coù soá thieáu Tröø khoâng coù soá Thí duï
thieáu
SUB (accu), (data) SBB (accu), (data) SUB AX, 1230
SUB (mem), (data) SBB (mem), (data) SBB Byte PTR [5000],
SUB (reg), (data) SBB (reg), (data) 90
SUB (reg1), (reg2) SBB (reg1), (reg2) SUB BL, 50
SUB (reg), (mem) SBB (reg), (mem) SBB AL, DL
SUB (mem), (reg) SBB (mem), (reg) SUB CX, [1230]
SBB [0300], DL
Chöông III
GIAO TIEÁP VÔÙI MAÙY TÍNH
I. GIAO TIEÁP SONG SONG
1. GIAO TIEÁP QUA COÅNG MAÙY IN:
1.1 Vaøi neùt cô baûn veà coång maùy in:
Vieäc noái maùy in vôùi maùy tính ñöôïc thöïc hieân qua oå caém 15
chaân ôû phía sau maùy tính. Nhöng ñaây khoâng phaûi chæ laø choã noái vôùi
maùy in maø khi söû duïng maùy tính vaøo vieäc khaùc, nhö truyeàn döõ lieäu
töø maùy tính tôùi moät thieát bò khaùc, hay ñieàu khieån thieát bò baèng
maùy tính thì vieäc gheùp noái cuõng ñöôïc gheùp noái qua coång maùy in.
Qua coång naøy döõ lieäu ñöôïc truyeàn ñi song song, neân ñoâi khi
coøn ñöôïc goïi la coång gheùp noái song song vaø toác ñoä truyeàn cuõng ñaït
ñeán möùc ñaùng keå. Taát caû caùc ñöôøng daãn cuûa coång maùy in ñeàu
töông thích vôùi TTL. Nghóa laø chuùng ñeàu cung caáp möùc ñieän aùp naèm
giöõa 0V ñeán 5V. Do ñoù ta caà löu yù laø caùc ñöôøng daãn vaøo coång
naøy khoâng ñöôïc ñaët möùc ñieän aùp quaù lôùn.
Söï saép xeáp caùc chaân cuûa coång maùy in vôùi taát caû caùc ñöôøng
daãn ñöôïc moâ taû nhö sau:

O O O O O O O O O O O O O
O O O O O O O O O O O O
25 14

HÌNH 3.1
Chöùc naêng caùc chaân
Chaân Kyù Out/in Chöùc naêng
hieäu
1 Strobe Out Byte ñöôïc in

2 .. 9 D0 .. D7 Out Caùc ñöôøng döõ lieäu D0 .. D7.

10 ACK In Phaàn thu baùo cho phaàn phaùt bieát ñaõ thu xong
moät kí töï
11 Busy In Phaàn tín hieäu do phaàn thu baùo cho phaàn phaùt
bieát laø phaàn thu ñang baän

12 PE In Baùo heát giaâi

13 SLCT In Baùo l75a choïn maùy in

14 AF Out Maùy tính baùo ra maùy in töï naïp giaá

15 ERROR In Baùo caùc loãi cuûa maùy in

16 INIT Out Reset maùy in

17 SLCTIN Out Chon maùy in

18 ..25 GND Noái ñaát

1.3 . Trao ñoåi vôùi caùc ñöôøng daãn tín hieäu:

LPT1: Goàm coù 3 thanh ghi: thanh ghi döõ lieäu, thanh ghi traïng thaùi vaø
thanh ghi ñieàu khieån.

a. Thanh ghi döõ lieäu: goàm coù 8 bit döõ lieäu, coù ñòa chæ laø 378h.

D7 D6 D5 D4 D3 D2 D1 D0
b. Thanh ghi trang thaùi: coù ñòa chæ laø 379h.

D7 D6 D5 D4 D3 D2 D1 D0
c. Thanh ghi ñieàu khieånCHAÂN
coù ñòa SOÁ
chæ :: 937AH8 7 6 5 4 3 2

D7 D6 D5 D4 D3 D2 D1 D0 ERROR
1.4 . Hoaït ñoäng cuûa vieäc trao ñoåi döõ lieäu . Strobe
a. hoaït ñoäng cuûa phaàn phaùt SLCT
HÌNH 3.1
+ ñoïc Busy cho ñeán khi Busy\ = 1. AF
PE
+ göûi döõ lieäu ra bus döõ lieäu
ACK
INIT
+ cho Strobe = 0. BUSY
SLCTIN
( Ngaét 8259 )
+ chuoån bò döõ lieäu tieáp theo
+ quay veà böôùc 1

b. Hoaït ñoâng cuûa phaàn thu


+ ñoïc Strobe cho ñeán khi Strobe = 1.
+ Busy = 0 , ACK = 0.
+ ñoïc döõ lieäu vaøo .
+ ñöa ACK = 1 .
+ xöû lyù döõ lieäu .
+ cho Busy = 1 ñeå phaùt kyù töï tieáp theo
+ quay veà böôùc 1.
LÖU ÑOÀ
PHAÙT

BEGIN

LÖU ÑOÀ THU

BUSY = 1

BEGIN

GÔÛI DÖÕ
LIEÄU

STROBE = 1
STROBE =1 CHUAÂN BÒ
DÖÕ LIEÄU
TIEÁP THEO
ACK = 1

BUSY =1 , ACK =0

STROBE = 0

ÑOÏC DÖÕ LIEÄU

HEÁT
FILE
HÌNH 5.1 ACK = 1

THOAÙT RA
XÖÛ LYÙ DÖÕ LIEÄU

HÌNH 5.2

BUSY = 1
2 . GIAO TIEÁP QUA SLOT CARD. (coù ñòa chæ töø 300..31FH):
Trong maùy tính ngöôøi ta cheá taïo saün caùc slot cho pheùp ngöôøi söû
duïng tính naêng cuûa maùy vi tính baèng caùch gaén theâm caùc thieát bò
vaøo noù.

Moãi slot ñeàu coù caùc ñöôøng döõ lieäu (data), ñòa chæ (address), caùc
ñöôøng +5V , – 5V , + 12V , -12V vaø caùc ñöôøng ñieàu khieån nhö CLK,
IRQ, RESET, /IOW, IOR … vì vaäy neáu thieát keá maïch giao tieáp qua slot
seõ giaûm ñöôïc raát nhieàu linh kieän, giaûm ñöôïc boä nguoàn beân ngoaøi,
deã ñieàu khieån, giaù thaønh thaáp neân ñoàng thôøi toác ñoä truyeàn döõ
lieäu cuõng nhanh.

Tuy nhieân beân caïnh nhöõng öu ñieåm noù cuõng coù nhöõng nhöôïc
ñieåm nhö: do slot card giao tieáp ñöôïc gaén beân trong maùy neân caùch giao
tieáp naøy khoù nhaän ñöôïc döõ lieäu töø beân ngoaøi. Noù bò haïn cheá veà
khoaûng caùch laøm vieäc ñoàng thôøi moãi laàn söû duïng phaûi môû raùp
maùy gaây baát tieän cho ngöôøi söû duïng.

* Caùc raõnh caém trong maùy tinh PC:

ÔÛ maùy tính PC/XT raõnh caém trong maùy tính chæ coù 1 loaïi vôùi
ñoä roäng laø 8 bit vaø tuaân theo tieâu chuaån ISA (Industry Standard
Architecture). Töø maùy tính AT trôû ñi vieäc boá trí chaân treân raõnh caém
trôû leân phöùc taïp hôn, tuøy theo tieâu chuaån khi löïa choïn maùy tính, caùc
loaïi raõnh caém theo tieâu chuaån khaùc nhau coù theå kieåm tra nhö sau:

+ Raõnh caém 16 bit theo tieâu chuaån ISA (Industry standard


Architecture)
+ Raõnh caém PS/2 vôùi 16 bit theo tieâu chuaån MCA (Micro Channel
Architecture).
+ Raõnh caém PC/2 vôùi 32 bit theo tieâu chuaån MCA
+ Raõnh caém 32 bit theo tieâu chuaän EISA (Extended Micro Channel
Architecture)
+ Raõnh caém 32 bit theo tieâu chuaån VESA.
+ Raõnh caém 32 bit theo tieâu chuaån PCI.

Cho ñeán nay phaàn lôùn caùc card gheùp noái duøng trong kyõ thuaät do
löôøng vaø ñieàu khieån ñeàu ñöôïc cheá taïo ñeå ñaët vaøo raõnh caém theo
tieâu chuaån ISA.
GIAO TIEÁP NOÁI TIEÁP QUA COÅNG COM . RS232:
1. VAØI NEÙT CÔ BAÛN VEÀ COÅNG NOÁI TIEÁP:

Coång noái tieáp RS232 laø moät loaïi giao dieän phoå bieán roäng raõi
nhaát, ta coøn goïi laø coång COM1 , COM2 ñeå töï do cho caùc öùng duïng
khaùc nhau.
Gioáng nhö coång maùy in,coång noái tieáp RS232 cuõng ñöôïc söû
duïng raát thuaän tieän trong vieäc gheùp noái maùy tính vôùi caùc thieát bò
ngoaïi vi. Vieäc truyeàn döõ lieäu qua coång RS232 ñöôïc tieán haønh theo
caùch noái tieáp, nghóa laø caùc bit döõ lieäu ñöôïc gôûi ñi noái tieáp voái
nhau treân moät ñöôøng daãn.
Tröôùc heát loaïi truyeàn naøy coù khaû naêng duøng cho nhöõng
khoaûng caùch lôùn hôn, bôûi vì khaû naêng gaây nhieãu laø nhoû ñaùng keå
hôn laø khi duøng moät coång song song. Vieäc duøng coång song song coù
moät nhöôïc ñieåm ñaùng keå laø caùp truyeàn nhieàu sôïi vaø vì vaäi raát ñaét
tieàn, hôn nöa möùc tín hieäu naèm trong khoûang 0..5V ñaõ toû ra khoâng
thich öùng vôùi khoaûng caùch lôùn.
Treân hình 5.3 laø söï boá trí chaân cuûa phích caém RS232 cuûa maùy
tính PC.

1 2 3 4 5

O O O O O
O O O O

6 7 8 9

13

O O O O O O O O O O O O O
O O O O O O O O O O O O
14 25

HÌNH 5.3
CHAÂN CHAÂN KYÙ YÙ NGHÓA
(loaïi 9 chaân ) ( loaïi 25 chaân HIEÄU
)
1 8 DCD Data carrier detect

2 3 RxD Nhaän döõ lieäu

3 2 TxR Phaùt döõ lieäu

4 20 DTR Döõ lieäu ñaàu cuoái saün saøng

5 7 GND Noái ñaát

6 6 DSR Thieát bò thoâng tin saün saøng

7 4 RTS Yeâu caàu göûi

8 5 CTS Thieát bò thoâng tin saün saøng


truyeàn
9 22 RI
Ring in dicator

Vieäc truyeàn döõ lieäu xaåy ra treân 2 ñöôøng daãn qua chaân caém ra
TxD, maùy tính göûi döõ lieäu cuûa noù ñeán thieát bò khaùc. Trong khi ñoù
döõ lieäu maø maùy tính nhaän ñöôïc daãn ñeán chaân RxD. Caùc tín hieäu
khaùc ñoùng vai troø nhö tín hieäu hoã trôï khi trao ñoåi thoâng tin vaø vì theá
khoâng phaûi trong moïi öùng duïng ñeàu duøng ñeán.

Möùc tín hieäu treân chaân ra RxD tuøy thuoäc vaøo ñöôøng daãn TxD
vaø thoâng tin thöôøng naèm trong khoaûng – 12V.. + 12V caùc bit döõ lieäu
ñöôïc ñaûo ngöôïc laïi. Möùc ñieän aùp ôû möùc cao naèm trong khoaûng – 3V
vaø – 12V vaø möùc thaáp naèm trong khoaûng töø + 3Vvaø +12V. Traïng
thaùi tónh treân ñöôøng daãn coù möùc ñieän aùp – 12V .

Baèng toác ñoä baud ta thieát laäp toác ñoä truyeàn döõ lieäu caùc giaù
trò thoâng thöôøng laø 300, 600, 1200, 2400, 4800, 9600 vaø 19200 baud. Kyù
hieäu baud laø soá löôïng bit truyeàn trong 1s.

Coøn moät vaán ñeà nöõa laø khuoâân maãu (Format) truyeàn döõ lieâu
caàn phaûi ñöôïc thieát laäp nhö nhau caû beân göûi cuõng nhö beân nhaän
caùc thoâng soá truyeàn coù theå ñöôïc thieát laäp treân maùy tính PC baèng
caùc caâu leänh treân DOS. Ngaøy nay Windows cuõng coù caùc chöông trình
rieâng ñeå söû duïng, khi ñoù caùc thoâng soá truyeàn döõ lieäu nhö: toác ñoä
baud, soá bit döõ lieäu, soá bít döøng, bit chaün leû (parity) coù theå ñöôïc
thieát laäp moät caùch raát ñôn giaûn.
2. SÖÏ TRAO ÑOÅI CUÛA CAÙC ÑÖÔØNG DAÃN TÍN HIEÄU

Cuõng nhö ôû coång maùy in, caùc ñöôøng daãn tín hieäu rieâng bieät
cuõng cho pheùp trao ñoåi qua laïi caùc ñòa chæ trong maùy tính PC. Trong
tröôøng hôïp naøy ngöôøi ta thöôøng söû duïng nhöõng vi maïch coù ñoä tích
hôïp cao ñeå coù theå hôïp nhaát nhieà chöùc naêng treân 1 chip.

ÔÛ maùy tính PC thöôøng coù moät boä phaùt/nhaän khoâng ñoàng boä
vaïn naêng goïi taét laø UART: Universal Asynchronous Receiver/Transmister.
Ñeå ñieàu khieån söï trao ñoåi thoâng tin giöõa maùy tính vaø caùc thieát bò
ngoaïi vi. Phoå bieán nhaát laø vi maïch 8250 cuûa haõng NSC hoaëc caùc
thieát bò tieáp theo, chaúng haïn nhö 16C550. Boä AURT naøy coù 10 thanh
ghi ñeå ñieàu khieån taát caû chöùc naêng cuûa vieäc nhaäp vaøo, xuaát ra döõ
lieäu theo caùch noái tieáp lieân quan ñeán noäi dung cuûa phaàn naøy chæ ñeà
caäp ñeán hai ñieàu ñaùng quan taâm ñoù laø: thanh ghi ñieàu khieån modem
vaø thanh ghi traïng thaùi modem.
a) Thanh ghi ñieàu khieån modem:

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 LOOP OUT2 UOT1 RTS DTR

D0 =1 ñöa /DTR =0
D0 =0 ñöa /DTR =1
D1 =1 ñöa /RTS =0
D1 =0 ñöa /RTS =1
OUT1 vaø OUT2 ñieàu khieån ñaàu ra phuï

b) Thanh ghi traïng thaùi modem :(ñòa chæ cô baûn +6)

RLSD RI DSR CTS RLSD RI DSR CTR

Cuõng gioáng nhö ôû coång gheùp noái vôùi maùy in, caùc Thanh ghi
ñöôïc trao ñoåi qua oâ nhôù trong vuøng vaøo/ra (input/output). Ñòa chæ ñaàu
tieân coù theå tôùi ñöôïc cuûa coång noái tieáp goïi laø ñòa 1chæ neáucôRIbaûn
coù (basic
bieán ñoåi
Coù caùc giaù trò cuûa caùc bít out 2 out 1
Address) caùc ñæa chæ cuûa caùc thanh
, DTR , RTS , trong MCR khi bit LOOP = ghi tieáp theo ñöôïc ñaït tôùi baèng
vieäc coäng
1 theâm soá thanh ghi ñaõ gaëp cuûa boä1:UART vaøo
neáu coù söï ñòa
thay chæ cô tín hieäu
ñoå caùc
baûn . töông öùng

Ñòa chæ cô baûn cuûa coång noái tieáp cuûa maùy tính PC ñöôïc toùm
taét trong baûng sau:

COÅNG ÑÒA CHÆ CÔ


BAÛN
COM 1 3F8H
COM 2 2F8H
COM 3 3E8H
COM 4 2E8H
PHAÀN 2

PHAÀN CÖÙNG
CUÛA MAÏCH
GIAO TIEÁP
CHÖÔNG IV
GIÔÙI THIEÄU KÍT VI XÖÛ LYÙ 8088

I. CAÙC LINH KIEÄN BAÙN DAÃN LIEÂN QUAN


1. Vi maïch MAX 232

Vi maïch MAX 232 chuyeån ñoåi möùc TTL ôû ngoõ vaøothaønh


möùc +10V hoaëc –10V ôû phía truyeàn vaø caùc möùc +3V… +15V hoaëc –
3V … -15V thaønh möùc TTL ôû phía nhaän. Treân hình 4.1 moâ taû caùch
saép xeáp chaân vaø sô ñoà caáu truùc cuûa vi maïch MAX232

O
C1+ 1 16 Vcc
1
6 2 15
V+ GND
1
C1- 6 3 MAX 14 T1OUT
1 1
C2+ 6 6 R1IN
232 1
1 4 13
C2- 6 R1OUT
6
1 5 12 1
V- T1IN
6 6
1 6 11 1 Hình 4.1
T2OUT T2IN
6 6
1
R2IN 1 7 10 R2OUT
6
6
1 8 9 1
6 6

Ñöôøng daãn TxD daãn yröïc tieáp ñeán chaân 11 cuûa vi maïch MAX
232 coøn boä ñeäm noái ra ôû chaân 14 ñöôïc noái tröïc tieáp tôùi chaân soá 2
cuûa coång noái tieáp.

Vieäc saép xeáp chaân ôû oå caém noái tieáp ñöôïc löïa choïn sao cho
coù theå duøng moät caùp noái tröïc tieáp coång noái tieáp cuûa heä phaùt
trieån, vôùi coång noái tieáp cuûa maùy tính thöôøng laø COM 2.

Vôùi ñöôøng daãn RxD moïi vieäc cuõng dieãn ra töông töï chaân 13
cuûa vi maïch ñöôïc noái ñeán chaân 3 cuûa coång noái tieáp.
2. IC ÑEÄM 74LS244:
Ñeå naâng cao khaû naêng taûi cuûa caùc bus, ñeå ñaûm nhaän vieäc
nuoâi caùc maïch beân ngoaøi, caùc tín hieäu ra cuûa CPU caàn phaûi ñöôïc
khueách ñaïi thoâng qua caùc maïch ñeäm moät chieàu, hai chieàu vôùi caùc
ñaàu ra thöôøng hay ñaàu ra ba traïng thaùi ñoù laø IC 74LS244.
IC 74LS244 laø moät vi maïch coù 8 boä ñeäm vaø boä laùi ñöôøng ñöôïc
thieát keá nhö nhöõng boä laùi ñòa chæ nhôù.
Sô ñoà chaân 74LS244:

74LS244
1G 1 20 Vcc
1A1 2 19 2G
2Y1 3 18 1Y1
1A2 4 17 2A4
2Y3 5 16 1Y2
1A3 6 15 2A3
2Y2 7 14 1Y3
1A4 8 13 2A2
2Y1 9 12 1Y4
GND 10 11 2A1
Baûng söï thaät:
Hình 4.2: Sô ñoà chaân 74LS244
INPUT H: möùc ñieän theá cao
1G 2G D OUTPUT L: möùc ñieän theá
thaáp
L L L X: khoâng quan taâm
L H H Z: toång trôû cao
H X Z
Thoâng soá ngöôûng:
Kyù Thoâng soá Min Type Max Ñôn vò
hieäu
Vcc Nguoàn cung caáp 4,45 5,0 5,25 V
o
TA Nhieät ñoä hoaït 0 2,5 70 C
ñoäng
IOH Doøng ra cao -1,5 mA
IOL Doøng ra thaáp 24 mA
3. MAÏCH TAÏO XUNG NHÒP 8284:
Cho duø laøm vieäc ôû cheá ñoä naøo ñi nöûa CPU 8086 luoân caàn xung
nhòp ñeå hoaït ñoäng, maïch taïo xung nhòp 8284 seõ ñaûm nhaän vieäc taïo
xung nhòp clock cho CPU 8086. Maïch taïo xung nhòp khoâng nhöõng cung
caáp xung clock vôùi taàn soá thích hôïp cho toaøn boä maø noù coøn coù aûnh
höôûng tôùi vieäc ñoàng boä tín hieäu Reset vaø tín hieäu Ready cuûa CPU.
1). Sô ñoà chaân 8284:
CSYN 1 18 Vcc

C 2 17 X1

PCLK 3 16 X2

AEN1 4 15 ASYN

RDY1 5 8284 14 C

READ 6 13 EFI

Y7 12 F/C

RDY2 8 11 OSC

AEN2 9 10 RES

2). CKL
Hình 4.3:
Chöùc naêngSô ñoà
caùcchaân
chaânRESET
8284
8284:
GND
 AEN1, AEN2: tín hieäu cho pheùp choïn ñaàu vaøo töông öùng
RDY1, RDY2 laøm tín hieäu baùo traïng thaùi cuûa boä nhôù vaø thieát bò
ngoaïi vi.
 RDY1, RDY2: cuøng vôùi AEN1, AEN2 duøng gaây ra caùc chu
kyø ñôïi ôû CPU.
 ASYNC: choïn ñoàng boä hai taàng hay ñoàng boä moät taàng cho
tín hieäu RDY1, RDY2. Trong cheá ñoàng boä moät taàng (ASYNC = 1) tín
hieäu RDY coù aûnh höôûng ñeán tín hieäu Ready ñeán taän söôøn xuoáng
cuûa xung ñoàng hoà tieáp theo. Coøn trong cheá ñoä ñoàng boä hai taàng
(ASYNC = 0) tín hieäu RDY chæ coù aûnh höôûng tôùi tín hieäu Ready khi
coù söôøn xuoáng cuûa xung ñoàng hoà tieáp theo.
 Ready: noái ñeán ñaàu vaøo Ready cuûa CPU. Tín hieäu naøy ñöôïc
ñoàng boä vôùi caùc tín hieäu RDY1 vaø RDY2.
 X1, X2: noái vôùi hai chaân cuûa thaïch anh taïo dao ñoäng chuaån
vôùi taàn soá fx, thaïch anh naøy laø boä phaän cuûa moät maïch dao ñoäng
beân trong 8284 coù nhieäm vuï taïo xung chuaån duøng laøm tín hieäu ñoàng
hoà cho toaøn heä thoáng.
 F/C: duøng ñeå choïn nguoàn tín hieäu chuaån cho 8284, khi chaân
naøy ôû möùc cao thì xung ñoàng hoà beân ngoaøi seõ ñöôïc duøng laøm xung
nhòp cho 8284, ngöôïc laïi thì xung ñoàng hoà cuûa maïch dao ñoäng beân
trong duøng thaïch anh seõ ñöôïc choïn laøm xung nhòp.
 EFI: loái vaøo cho xung töø boä dao ñoäng ngoaøi.
fx
 CLK: xung nhòp fclk  vôùi ñoä roång 77% noái ñeán chaân CLK
3
cuûa CPU 8086.
fx
 PCLK: xung nhòp fPCLK  vôùi ñoä roång 50% daøng cho thieát
6
bò ngoaïi vi.
 OSC xung nhòp ñaõ ñöôïc khueách ñaïi coù taàn soá baèng fx cuûa
boä dao ñoäng.
 RES chaân khôûi ñoäng, noái vôùi maïch RC ñeå 8284 coù theå töï
khôûi ñoäng khi baät nguoàn.
 Reset: noái vaøo Reset cuûa 8086 vaø laø tín hieäu khôûi ñoäng laïi
cho toaøn boä heä thoáng.
 CSYNC: loái vaøo cho xung ñoàng boä chung khi trong heä thoáng
coù caùc 8284 duøng dao ñoäng ngoaøi taïi chaân EFI. Khi duøng maïch dao
ñoäng trong thì phaûi noái mass chaân naøy.
X
+5V CL CLK
1 K
8284 8086
X
RE RESE RESE
K S2 T T
F/ CSYN
C C Khôûi ñoäng heä
thoáng
Hình 4.4: Sô ñoà caùc ñöôøng tín hieäu chính cuûa 8284
Hình treân bieåu dieån caùc ñöôøng noái tín hieäu chính cuûa 8284.
Maïch 8284 nhaän xung khôûi ñoäng töø beân ngoaøi thoâng qua maïch RC,
khi baét daàu baät ñieän hoaëc xung khôûi ñoäng laïi khi baám coâng taéc K
töø xung naøy 8284 coù nhieäm vuï ñöa ra xung khôûi ñoäng ñoàng boä cho
CPU cuøng vôùi taát caû caùc thaønh phaàn khaùc cuûa heä thoáng.
4. TOÅNG QUAN VEÀ BOÄ NHÔÙ:
Tröôùc khi noùi veà keát noái boä nhôù vôùi vi xöû lyù 8086 nhoùm thöïc
hieän noùi qua veà boä nhôù baùn daån thöôøng duøng ñeå keát noái vôùi vi
xöû lyù. Bao goàm:
- Boä nhôù coá ñònh ROM (Read Only Memory – Boä nhôù chæ
ñoïc), thoâng tin trong boä nhôù seõ khoâng maát ñi khi maïch bò maát ñieän
nguoàn cung caáp.
- Boä nhôù baùn coá ñònh EPROM (Erasable Programnable ROM)
laø boä nhôù ROM coù theå laäp trình ñöôïc baèng xung ñieän vaø xoùa ñöôïc
baèng tia cöïc tím.
- Boä nhôù khoâng coá ñònh RAM (Random Access Memory –
Boä nhôù truy caäp ngaåu nhieân). Trong noäi dung ñeà taøi nhoùm thöïc hieän
duøng SRAM (Static RAM – RAM tænh, trong ñoù moãi phaàn töû nhôù laø
moät maïch laät hai traïng thaùi oån ñònh) vaø DRAM (Dynamic RAM – RAM
ñoäng, trong ñoù moãi phaàn töû nhôù laø moät tuï ñieän raát nhoû ñöôïc cheá
taïo baèng coâng ngheä MOS) ñeå keát noái vôùi vi xöû lyù.
Moãi boä nhôù thöôøng ñöôïc cheá taïo neân töø nhieàu vi maïch nhôù.
Moät vi maïch nhôù thöôøng coù caáu truùc tieâu bieåu nhö sau:
A0 D0 WR: Write – ghi
A1 D1 WE: Write Enable-cho
Tín hieäu A2 D2 Tín hieäu
. . pheùp ñoïc.
ñòa chæ döõ lieäu
. . OE: Output Enable-ñaàu
. . vaøo ñieàu khieån.
Am Dn CS: Chip Select- chaân
WE choïn.
CS OE
RD: Read – ñoïc.

Chaân choïn RD

Theo sôHình
ñoà 4.5:
treânSôtañoà moätmoät
thaáy vi maïch nhôù nhôù coù caùc nhoùm tín hieäu
vi maïch
sau:
- Nhoùm tín hieäu ñòa chæ:
 Caùc tín hieäu ñòa chæ coù taùc duïng choïn ra moät oâ nhôù
(moät töø nhôù) cuï theå ñeå ghi/ñoïc. Caùc oâ nhôù coù ñoä daøi khaùc nhau
tuøy theo nhaø saûn xuaát: 1, 4, 8… bit. Soá ñöôøng tín hieäu ñòa chæ coù
lieân quan ñeán dung löôïng cuûa maïch nhôù. Vôùi moät maïch nhôù coù n bit
ñòa chæ thì dung löôïng cuûa maïch nhôù ñoù laø 2n töø nhôù.
 Thí duï: vôùi boä nhôù 8 bit ta coù n = 8 neân dung löôïng boä
nhôù laø 256 byte (28=256 byte), 16 bit neân n = 16 ta coù dung löôïng boä
nhôù laø 65536 byte…
- Nhoùm tín hieäu döõ lieäu:
Caùc tín hieäu döõ lieäu thöôøng laø ñaàu ra ñoái vôùi maïch ROM hoaëc
ñaàu vaøo/ra döõ lieäu chung ñoái vôùi RAM. Cuøng toàn taïi maïch nhôù
RAM vôùi ñaàu ra vaø ñaàu vaøo döõ lieäu rieâng bieät,ñoái vôùi RAM loaïi
naøy khi duøng trong maïch bus döõ lieäu ngöôøi söû duïng phaûi noái hai
ñaàu ñoù laïi. Caùc maïch nhôù thöôøng coù ñaàu ra döõ lieäu kieåu ba traïng
thaùi, soá ñöôøng döõ lieäu quyeát ñònh ñoä daøi töø nhôù cuûa maïch nhôù.
- Nhoùm tín hieäu choïn vi maïch:
Caùc tín hieäu choïn laø CS (Chip Select) hoaëc CE (Chip Enable)
thöôøng ñöôïc duøng ñeå choïn vi maïch nhôù cuï theå ñeå ghi/ñoïc. Tín hieäu
choïn ôû caùc maïch RAM thöôøng laø CS, coøn ôû caùc maïch ROM thöôøng
laø CE. Caùc tín hieäu choïn thöôøng noái vôùi ñaàu ra cuûa boä giaõi maõ ñòa
chæ.
Khi moät maïch nhôù khoâng ñöôïc choïn thì bus döõ lieäu cuûa noù bò
treo.
- Nhoùm tín hieäu ñieàu khieån:
Tín hieäu ñieàu khieån caàn coù trong taát caû caùc maïch nhôù. Caùc
maïch ROM thöôøng coù moät ñaàu vaøo ñieàu khieån OE (Output Enable)
ñeå cho pheùp döõ lieäu ñöôïc xuaát ra bus. Moät maïch nhôù khoâng ñöôïc
môû bôûi OE thì bus döõ lieäu cuûa noù bò treo.
Moät maïch RAM neáu chæ coù moät tín hieäu ñieàu khieån thì thöôøng
ñoù laø R/W ñeà ñieàu khieån quaù trình ghi ñoïc. Neáu maïch nhôù RAM coù
hai tín hieäu ñieàu khieån thì thöôøng laø WE (Write Enable) ñeå ñieàu khieån
ghi vaø OE ñeå ñieàu khieån ñoïc. Hai tín hieäu naøy phaûi ngöôïc pha nhau
ñeå ñieàu khieån vieäc ñoïc vaø ghi cuûa maïch nhôù.
Moät thoâng soá ñaëc tröng khaùc cuûa boä nhôù laø thôøi gian truy
xuaát tac. Noùi chung, noù ñöôïc ñònh nghóa nhö laø thôøi gian keå töø coù
xung ñòa chæ treân bus ñòa chæ cho ñeán khi coù döõ lieäu ra oån dònh treân
bus döõ lieäu. Thôøi gian truy xuaát cuûa boä nhôù phuï thuoäc raát nhieàu
vaøo coâng ngheä cheá taïo cuûa noù. Caùc boä nhôù laøm baèng coâng ngheä
löôõng cöïc coù thôøi gian truy xuaát nhoû (10  30 ns) coøn boä nhôù laøm
baèng coâng ngheä MOS coù thôøi gian truy xuaát lôùn hôn nhieàu ( > 150 ns).
Boä nhôù ñöôïc söû duïng trong vieäc keát noái kit 8086 laø EPROM 2764:
4.1). EPROM 2764:
Vpp 1 28 Vcc
A12 2 27 PCM
A7 3 26 NC
A6 4 25 A8
A5 5 24 A9
A4 6 23 A11
A3 7 2764 22 OE
A2 8 21 A10
A1 9 10 CE
A0 10 19 D7
D0 11 18 D6
D1 12 17 D5
D2 13 16 D4
GND 14 15 D3
Hình 4.6: Sô ñoà chaân 2764
Khi ñoïc EPROM coù caùc ñaëc tính sau:
CE [20] Vi (low)
OE [22] Vi (low)
PGM [27] Vcc (high)
Vpp [1] Vcc
Vcc [28] Vcc
A0  A15 Address
D0  D7 Data
Caùc cheá ñoä hoaït ñoäng cuûa EPROM 2764:
Traïng thaùi CE OE PGM Vpp Out
Ñoïc Vl Vl Vh Vcc Out
Chôø Vh X X Vcc Taét
Laäp trình Vl X Vl 21V In
Kieãm tra Vl Vl Vh 21V Out
Caám laäp Vh X X 21V Taét
trình

OE
D8  D15
CS

MEMR
OE
D0  D7
CS töø boä giaõi CS
maõ
Hình 4.7: Moâ hình keát noái boä giaûi maõ vôùi boä
4.2). RAM 62256: nhôù
Sô ñoà chaân:
A14 1 28 Vcc

A12 2 27 WE

A7 3 26 A13

A6 4 25 A8

A5 5 24 A9

A4 6 23 A11

A3 7 62256 22 OE

A2 8 21 A10

A1 9 10 CE

A0 10 19 D7

D0 11 18 D6

D1 12 17 D5

D2 13 16 D4

GND 14 15 D3

Hình 4.8: Sô ñoà chaân 62256


GIÔÙI THIEÄU KIT VI XÖÛ LYÙ 8086
1. Boä VXL vaø taàn soá laøm vieäc.
Boä VXL 8086 cuaû Intel coù taàn soá hoaït ñoäng laø 8MHz, coù 20
ñöôøng ñiaï chæ neân coù theå quaûn lyù ñöôïc 1Mb boä nhôù vaø coù 16
ñöôøng döõ lieäu vaø 4 tín hieäu ñieàu khieån neân söû duïng IC 74LH573
laøm IC choát ñòa chæ thaáp.
2. Toå chöùc boä nhôù:
Boä nhôù coá ñònh goàm hai EPROM, laø boä nhô ROM coù theå laäp
trình ñöôïc baèng xung ñieän vaø xoùa ñöôïc baèng tia cöïc tím. Hai EPROM
naøy ñöôïc duøng laø IC 2764 ñöôïc thieát keá cho vuøng ñòa chæ töø F0000
ñeán FFFFFFH. Boä nhôù ñöôc duøng ñeã löu tröõ chöông trình heä thoáng
cuûa kit.
Boä nhôù khoâng coá ñònh RAM (Ramdom Access Memory – Boä
nhôù truy caäp ngaãu nhieân). Trong kit duøng hai Ram naøy ñöôïc thieát keá
töø ñòa chæ 80000 – ñeán 8FFFF. VXL 8086 coù khaõ naêng quaûn lyù 1Mb
boä nhôù nhöng do öùng duïng thöïc teá cuûa kit chæ thieát töø 80000 ñeán
FFFFFH duøng cho caùc RAM, EPROM vaø caùc IC ngoaïi vi.
3. Giôùi thieäu veà baøn phím:
Vi maïch 8279 coù khaû naêng raát ñaëc bieät: coù khaû naêng vöøa
queùt baøn phím rôøi vöøa hieån thò ñöôïc 16 Led 7 ñoaïn. Do yeâu caàu cuûa
heä thoáng kit 8086 nhaäp döõ lieäu vaøo heä thoáng thoâng qua baøn phím
cuõng nhö vieäc hieån thò caùc soá lieäu ra Led neân ôû ñaây nhoùm choïn vi
maïch 8279 ñeå thöïc hieän chöùc naêng naøy.
a). Baøn phím:
Baøn phím khoâng phaûi laø thieát bò ñieän töû maø noù laø nhöõng
coâng taéc thöôøng hôû, noù giuùp ngöôøi söû duïng giao tieáp vôùi heä
thoáng. Do yeâu caàu cuûa heä thoáng neân nhoùm khoâng söû duïng heát 64
phím maø vi maïch 8279 quaûn lyù ñöôïc, cuï theå laø 26 phím.
Ñeå 8279 laøm vieäc queùt phím tröôùc tieân ta phaûi thieát laäp caùc
töø ñieàu khieån gôûi ra 8279, caùc ñöôøng tín hieäu SL3  SL0 duøng ñeå
queùt, döõ lieäu treân ñöôøng naøy coù theå thieát laäp theo hai kieåu Encode
vaø Decode. Neáu thieát laäp theo kieåu Decode thì 4 ñöôøng SL3  SL0 coù
theå queùt hieån thò 4 led 7 ñoaïn maø yeâu caàu cuûa 4 ñöôøng SL3 SL0
phaûi ôû cheá ñoä Decode neân ta phaûi choïn 8279 ôû cheá ñoä Encode sau
ñoù môùi giaûi maõ 4 ñöôøng SL3  SL0 thaønh cheá ñoä Decode luùc naøy
giaõi maõ töø 4 ñöôøng sang 16 ñöôøng ñeå coù khaû naêng hieån thò ra 16
Led. Do yeâu caàu cuûa ñeà taøi laø hieån thò ra 8 Led neân ta choïn IC
74LS138 ñeå giaõi maõ cho vi maïch 8379.
Caùc ngoõ SHIFT vaø CNTL duøng ñeå môû roäng caùc toå hôïp
phím. Do heä thoáng khoâng söû duïng heát phím neân 2 ngoõ nay ñöôïc noái
Mass.
 Nguyeân lyù laøm vieäc cuûa 8279 trong vieäc queùt phím:
Ñeå 8279 lam coâng vieäc queùt phím ta choïn cheá ñoä KKK = 100
(Encode Scan Sensor Matrix) vaø gôûi caùc töø ñieàu khieån naøy 8279 ñeà
khôûi taïo cheá ñoä queùt phím. Caùc ñöôøng SL3  SL0 queùt lieân tuïc qua
74138 ñeå hieån thò vaø phím aán. Khi coù moät phím aán, 8279 töï ñoäng
choáng doäi sau 10,3 ms vaø kieåm tra moät laàn nöõa ñeå xem phím ñoù coù
aán nöõa hay khoâng, neáu coù thì 8279 thieát laäp maõ cho phím naøy vaø löu
tröû maõ cuûa phím vaøo RAM beân trong, sau ñoù baùo cho vi xöû lyù bieát
coù moät phím taùc ñoäng vaø yeâu caàu vi xöû lyù nhaäp maõ cho phím naøy
baèng caùch taùc ñoäng ñeán tín hieäu ngaét IRQ hoaëc baèng caùch ñoåi
thanh ghi traïng thaùi FiFo laøm cho 3bit NNN seõ khaùc möùc 000 khi coù
moät phím ñöôïc aán.
CHÖÔNG V
GIAO TIEÁP NOÁI TIEÁP DUØNG VI MAÏCH
8251

I. TRUYEÀN THOÂNG TIN NOÁI TIEÁP:

Vieäc truyeàn thoâng tin giöõa caùc boä phaän naèm gaàn nhau trong heä
vi xöû lyù coù theå ñöôïc thöïc hieän thoâng qua bus song song môû roäng
hoaëc caùc maïch phoái gheùp song song. Trong ñoù caùc byte hoaëc caùc töø
ñöôïc chuyeån töø boä phaän naøy sang boä phaän khaùc treân moät taäp caùc
ñöôøng maïch in hoaëc daây caùp. Trong tröôøng hôïp caàn phaûi truyeàn
thoâng tin ôû caùc thieát bò caùch xa nhau laøm sao tieát kieäm ñöôïc soá
ñöôøng daây daãn caàn thieát cho vieäc truyeàn. Töø yeâu caàu treân ñaõ ra
ñôøi phöông phaùp truyeàn thoâng tin noái tieáp. ÔÛ ñaàu phaùt döõ lieäu
song song ñaàu tieân ñöôïc chuyeån thaønh döõ lieâu daïng noái tieáp sau ñoù
ñöôïc truyeàn ñi lieân tieáp treân moät ñöôøng daây. ÔÛ ñaàu thu, tín hieäu
noái tieáp seõ ñöôïc bieán ñoåi ngöôïc laïi ñeå taùi taïo laïi daïng tín hieäu
daïng song song thích hôïp cho vieäc xöû lyù tieáp theo.

Trong thöïc teá coù 2 phöông phaùp truyeàn thoâng tin kieåu noái tieáp:
truyeàn ñoàng boä vaø truyeàn khoâng ñoàng boä.
Trong phöông phaùp truyeàn ñoàng boä, döõ lieäu döõ lieäu ñöôïc
truyeàn theo töøng maûng vôùi toác ñoä xaùc ñònh. Maûng döõ lieäu tröôùc
khi ñöôïc truyeàn ñi seõ ñöôïc gaén theâm ôû ñaàu vaø ôû cuoái maûng caùc
byte hoaëc moät nhoùm bit ñònh daáu ñaëc bieät.
ÔÛ hình 6.1 bieåu dieãn moät baûn tin ñeå truyeàn ñoàng boä theo giao
thöùc BISYNC (giao thöùc truyeàn thoâng tin heä 2 doàng boä, binary
synchronous communication protocal) ñaây thöïc chaát laø giao thöùc ñieàu
khieån theo byte, vì caùc byte (kyù töï) ñaëc bieät ñöôïc duøng ñeå ñaùng daáu
caùc phaàn khaùc nhau cuûa baûn tin.

SYN SYN SOH HEADER STX TEXT ETX hay ETB BCC

SYN : Kyù töï ñoàng boä


SOH : Kyù töï baét ñaàu phaàn maøu ñaàu
HEADER : Phaàn maøo ñaàu
STX : Kyù töï baét ñaàu vaên baûn
TEXT :Thaân vaên baên
ETX : Kyù töï keát thuùc vaên baûn
ETB : Kyù töï keát thuùc vaên baûn
BCC : Kyù töï kieåm tra khoái

HÌNH 5.1
Trong caùch truyeàn khoâng ñoàng boä, döõ lieäu ñöôïc truyeàn ñi theo
töøng kyù töï. Kyù töï caàn truyeàn ñi ñöôïc gaén theâm moät bit ñaùnh daáu
ôû ñaàu ñeå baùo baét ñaáu kyù töï (start) vaø 1 hoaëc 2 bit ñaùnh daáu cuoái
ñeå baùo keát thuùc kyù töï (stop)ï. Vì cuoái kyù töï ñöôïc nhaän daïng rieâng
bieät neân noù coù theå döôïc truyeàn ñi theo phöông phaùp khoâng ñoàng boä,
ñöôïc theå hieän treân hình 6.1

Chieàu cuûa doøng kyù töï


Luoân ôû möùc cao
Luoân ôû möùc thaáp

Start D0 D1 D2 D3 D4 D5 D6 Parity Stop Stop

Maõ cuûa kyù töï caàn truyeàn

HÌNH 5.2 : Khung cuûa moät kyù töï ñeå truyeàn khoâng ñoàng boä
Tuyø theo loaïi maõ ñöôïc choïn duøng trong khi truyeàn (Baudot, Ascii,
…) ñoä daøi cho maõ kyù töï coù theå laø 5, 6, 7, 8 Bit. Tuyø theo heä thoáng
truyeàn tin, beân caïnh caùc bit döõ lieäu coøn coù theå tuyø choïn coù hay
khoâng coù 1bit parity ñeå kieãm tra loåi khi truyeàn coù theå tuyø choïn 1
hoaëc 2 bit stop, nhöng baét buoäc phaûi coù moät bit start. Nhö vaäy ñeå
truyeàn moät kyù töï theo phöông phaùp khoâng ñoàng boä, ngoaøi kyù töï
mang tin ta buoäc phaûi truyeàn theâm ít nhaát 2 vaø nhieàu nhaát laø 4 bit
phuï ñeå taïo ra khung cho kyù töï ñoù, vì theá phöông phaùp naày tuy ñôn
giaûn nhöng coù hieäu suaát khoâng cao.
Toác ñoä truyeàn döõ lieäu theo phöông phaùp noái tieáp ñöôïc ño baèng
bit/s. Ngoaøi ra ngöôøi ta cuõng hay duøng ñôn vò baud, ñoù laø giaù trò
ngòch ñaûo cuûa thôøi gian giöõa caùc laàn thay ñoåi möùc tín hieäu, vôùi döõ
lieäu chæ coù hai möùc (0 vaø 1)ø vaø moãi thay ñoåi möùc tín hieäu chæ maõ
hoùa moät bit thì coù theå hieåu baud = bit/s, caùc toác ñoä truyeàn thöôøng
gaëp trong thöïc teá laø 110, 300, 600, 1200, 2400, 4800, 9600, 19200 baud.
Ñeå taïo ñieàu kieän deã daøng cho vieäc phoái gheùp ñöôøng truyeàn
noái tieáp vôùi heä vi xöû lyù vaø ñeå giaûm toái ña caùc maïch phuï theâm ôû
beân ngoaøi ngöôøi ta ñaõ cheá taïo ra caùc vi maïch toå hôïp côõ lôùn laäp
trình ñöôïc coù khaõ naêng hoaøn thaønh phaàn lôùn caùc coâng vieäc caàn
thieát trong khi phoái gheùp. Ñoù laø caùc maïch thu phaùt di boä vaïn naêng
IN8250/16450 cuûa National vaø maïch thu phaùt ñoàng boä – dò boä vaïn
naêng 8251 cuûa Intel.
II. VI MAÏCH USART 8251
Trong phaàn naøy ta seõ giôùi thieäu maïch 8251A ñoù laø vi maïch
USART coù theå duøng cho caû hai kieåu truyeàn thoâng tin noái tieáp ñoàng
boä, dò boä. Sô ñoà chaân vaø sô ñoà thanh ghi ñöôïc trình baøy ôû hình5.3
1. Sô ñoà chaân vaø sô ñoà khoái:
a. nhoùm tín hieäu gheùp noái vôùi vi xöû lyù goàm:
- /CS noái vôùi boä giaûi maõ ñòa chæ A1.. An ñeå choïn 2 thanh ghi
(A0 = 1 ñieàu khieån traïng thaùi, A0 = 0 ñeäm soá lieäu ).
- C/D noái vôùi ñöôøng daây ñòa chæ A0 ñeå choïn moät trong 2 caëp
thanh ghi treân.
- /WR noái vôùi chaân /WR cuûa vi xöû lyù.
- /RD noái vôùi chaân /RD cuûa vi xöû lyù.
- CLK noái vôùi ñöôøng daây CLK cuûa vi xöû lyù.
- Reset noái vôùi ñöôøng daây reset cuûa vi xöû lyù.
- D0 … D7 noá vôùi caùc ñöôøng daãn D0…D7 cuûa VXL
b. Nhoùm tín hieäu gheùp noái voái Modem:
- /DTR
- /DSR
- /RTS
- /CTS
c. Nhoùm tín hieäu geùp noái vôùi ñöôøng daây truyeàn – nhaän vaø
KGN:
- TxEMTY thanh ghi ñeäm truyeàn roãng
- TxR cho soá llieäu truyeàn
- TxRDy baùo soá lieäu truyeàn ñaõ saün saøng.
- RxRDy daùo soá lieäu nhaän ñaõ saün saøng.
- Syn det/Break : chi ñoàng boä / ñöùt doøng tin
d. Nhoùm tín hieäu gheùp noái vôùi maùy phaùt xung nhòp.
- TxD : nhòp truyeàn.
- RxC : nhòp nhaän.
 /CS chíp choïn vi maïch
D2 28 D1 /RD read – ñoïc
1 /WR write – vieát
D3 2 27 D0 C/D control/data - ñieàu
RxD 3 26 Vcc khi63n soá lieäu
GND 4 25 /RxC CLK – clock – nhòp
D4 24 /DTR D0..D7 data O/I – bus
5 döõ lieäu vaøo ra
D5 6 23 /RTS /TxC – transmit clock -
D6 7 22 /DSR nhòp truyeàn
D7 8 21 Reset RxC – receiver clock
8251A RST – reset
/TxC 9 20 CLK
/DTR dada terminal ready
/WR 10 19 TxD /DSR – data set ready
/CS 11 18 TxEMPTY /RTS request to send
C/D 12 17 /CTS /CTS clear to send
/RD 16 Syndet/BR TxD – transmit data
13 RxD – receiver data
RxRDY 14 15 TxRDY TxRDy – transmit ready
RxRDy – receiver ready
TxEMTY – transmist
rigister empty
Syn/BRK- Breack deteat
(a)

/CS TxD
/RD Thanh ghi truyeàn
/WR
C/D
D0 Thanh ghi ñeäm
D1 truyeàn
D2 RxD
D3
Thanh ghi nhaän
D4
D5
D6
D7 Thanh ghi ñeäm nhaän
CLK
RST
RxRDY
TxRDY Thanh ghi cheá ñoä Hình 5.3 : Sô ñoà
TxEMTy chaân (a) vaø
Vcc caùc tnh ghi (b)
GND Thanh ghi leänh cuûa 8251A

/DSR /DTR /CTS /RTS Syn/BRK TxC


Thanh ghi traïng thaùi
RxC (b)
2. Caùc thanh ghi

ÔÛû hình 6.4a vaø hình 6.4b moâ taû boä thanh ghi cuûa 8251, goàm:
thanh ghi traïng thaùi vaø thanh ghi ñieàu khieån.
Hai thanh ghi treân coù cuøng moät ñòa chæ vôùi A0 = 1 duøng ñeå ghi
(/WR) vaø moät ñoïc (/RD) traïng thaùi. Hai thanh ghi ñeäm soá lieäu ghi vaø
ñoïc coù cuøng moät ñòa chæ (A0 = 0) vaø duøng ñeå ghi vaø ñoïc soá lieäu
caàn truyeàn vaø nhaän cuûa KGN. Caùc leänh cho caùc thanh ghi treân nhö
baûng sau:

/CE C/D /WR /RD LEÄNH


0 1 0 1 Ghi vaøo thanh ghi ñieàu khieån (cheá ñoä, leänh)
0 1 1 0 Ñoïc thanh ghi traïng thaùi.
0 0 0 1 Ghi soá lieäu vaøo thanh ghi ñeäm truyeàn.
0 0 1 0 Ñoïc soá lieäu töø thanh ghi ñeäm nhaän.
1 x x x Trôû khaùng cao (khoâng duøng).

I. Caáu truùc phaàn meàm


-
Thanh ghi ñieàu khieån
-
Thanh ghi traïng thaùi
Hai thanh ghi treân coù cuøng ñòa chæ vôùi A 0=1, moät duøng ñeå ghi
(WR\) leänh ñieàu khieån vaø moät ñeå ñoïc (RD\) traïng thaùi. Hai thanh ghi
ñeäm soá lieäu ghi vaø ñoïc cuõng coù moät ñòa chæ A 0=0) duøng ñeå ghi vaø
ñoïc soá lieäu caàn truyeàn vaø nhaän cuûa KGN.
Caùc leänh cho caùc thanh ghi treân baûng sau:

a. Thanh ghi ñieàu khieån:


- duøng ñeå ghi:
+ lôøi ñieàu khieån cheá ñoä.
+ lôøi leänh:
D7 D6 D5 D4 D3 D2 D1 D0

Toác ñoä truyeàn


Bit chaün leû
00 ñoàng boä
X0 khoâng kieåm 01 khoâng ñoàng boä x1
tra chaü leû 10 khoâng ñoàng boä x
kieåm tra leû 16
10 kieåm tra 11 khoâng ñoàng boä
chaün x64

Ñoä daøi kyù tö


ï
5 bit
6bit
7bit
8 bit

Ñieàu khieån khung.

khoâng giaù trò


moät bit döøng
Hình 5.4a 1.5 bit döøng
2 bit döøng
b. Thanh ghi cheá ñoä.

D7 D6 D5 D4 D3 D2
D1 D0
EH IR RTS ER SBRK RxEN DTR TxEN

Cho pheùp phaùt


1= cho pheùp
0= caám
Soá lieäu ñaàu cuoái
Saün saøng, DTR\ =1

Cho pheùp thu


1= cho pheùp RxRDy
0= caám RxRDy

Göûi tín hieäu caét


1= ñöa TxD = 0
0= hoaït ñoäng bình
thöôøng
Xoaù côø baùo loãi
1= xoaù côø
PE, OE, FE

Yeâu caàu phaùt


1= ñöa tín hieäu
RTS/= 0

Ngaét meàm
1= xoaù caùc thanh ghi

Cheá ñoä baát ñoàng


boä
1= tìm kyù töï ñoàng
boä
Sync
HÌNH 5.4B
c. thanh ghi traïng thaùi.

Duøng ñeå ñoïc lôøi traïng thaùi:


D7 D6 D5 D4 D3 D2 D1 D0

Chæ 8251 saün saøng


nhaän
Chæ thanh 1 chöõ hay leänh ñeå
Chæ modem truyeàn
ghi bieán
ñaõ
ñoåi song
Saün saøng
song noái Chæ saün sang nhaän
ñeå truyeàn
tieáp roãng soá lieäu ñeå truyeàn
soá lieäu
cho VXL
Chæ chöõ
ñoàng boä
ñaõ ñöôïc
8251 nhaän Bít baùo sai chaún leû

Pe= 1khi coù sai xoaù


baèng ER cuûa leänh

Bit chæ loãi traøn

Khi VXL chöa ñoïc


lôøi tröôùc, lôøi sau
ñaõ tôùi thì
OE =1 xoaù baèng ER
cuûa leänh

Bit chæ sai khung


(khoâng ñoàng boä)

khi soá bit döøng bò sai


FE= 1 xoaù baèng ER
* Vôùi lôøi ñieàu khieånHình
cheá5.4c
ñoä: hình 4.3a =1
- Cheá ñoä ñoàng boä: (trong, ngoaøi hai hay moät kyù töï ñoàng boä
SYNC) bôûi noäi dung ghi vaøo D7, D6.
- Toác ñoä truyeàn vôùi giaù trò:
+ D1D0=00: Duøng cho cheá ñoä ñoàng boä, toác ñoä nôi thu baèng
toác ñoä nôi phaùt, khoâng coù söï thay ñoåi taàn soá xung nhòp.
+ D1D0=01: duøng cho cheá ñoä khoâng ñoàng boä, toác ñoä giöõa nôi
thu vaø nôi phaùt khoâng ñoåi.
+ D1D0=01: toác ñoä thu = toác ñoä truyeàn X1, töùc toác ñoä thu=toác
ñoä truyeàn
+D1D0=10 : toác ñoä thu =16x toác ñoä truyeàn
+ D1D0=11: toác ñoä thu =64x toác ñoä truyeàn
- Ñoä daøi kyù töï, töùc ñoä daøi moät ñôn vò tin SDU vôùi caùc giaù trò
D3D2 = 00 (5bit), 01(6bit) 10(7bit) vaø 11(8bit).
- Kieån tra chaün leû D5D4 =X0 (khoâng kieåm tra), 01 (kieåm tra leû), 11
(kieåm tra chaün).
- Ñieàu khieån khung, xaùc ñònh soá bit döøng
Vôùi D7D0 = 01 – moät bít döøng
D7D6 = 10 – moät bít röôõi döøng
D7D6 = 11 – hai bit döøng
 Vôùi lôøi leänh (hình 43b) ta coù theå ghi leänh ñeå:
- Ñieàu khieån modem: DTR(D1=1), RTS(D%=1)
- Xoaù meàm (baèng chöông trình coù IR (D6=1) ñeå xoaù veà 0 caùc
thanh ghi noäi
- Xoùa côø baùo loãi ER (D4=1)
- Ghi cho pheùp truyeàn TxEN (D0=1) cho pheùp nhaän RxE(D2=1)
- Göûi tín hieäu caét (caùc bit baèng 0-Break) ñeå caét doøng tín hieäu
lieân tuïc ñang truyeàn
- Tìm kyù töï ñoàng boä EH (D7=1) trong cheá ñoä ñoàng boä
 Thanh ghi traïng thaùi (hình 43c): duøng ñeå ñoïc
- saün saøng truyeàn TxRDY (D0=1), saün saøng nhaän RXRDY( D1=1)
- Thanh ghi ñeäm soá lieäu roãng TxE (D2=1)
- Tuy chæ coù moät ñòa chæ (CS\=0, A1=1) nhöng ta coù theå ghi ñöôïc 2
lôøi ñieàu khieån cheá ñoä vaø lôøi leänh ôû 2 thanh ghi ñieàu khieån khaùc
nhau vì coøn coù chung moät flip flop noäi ñieàu khieån laàn löôït vaøo hai
thanh ghi treân.
III. ÖÙNG DUÏNG 8251A ÑEÅ TRUYEÀN THOÂNG TIN NOÁI TIEÁP

1. Truyeàn thoâng tin noái tieáp giöõa 2 kit VXL:

TxD TxD

RxD RxD

DTR\ DTR\

8251 8251 VXL2


DSR\ DSR\

RTS\ RTS\

CTS\ CTS\

a. Khôûi phaùt 8251A


Muoán 8251 hoaït ñoäng ñuùng cheá ñoä (khoâng ñoàng boä), toác ñoä
(300, 600, 1200, 2400, 4800, 9600bps hoaëc lôùn hôn), soá bit tin (5, 6, 7, 8)
coù kieåm tra chaün hoaëc leû vaø xaùc ñinh soá bit döøng (1; 1,5; 2 bit) ta
phaûi ghi lôøi ñieàu khieån cheá ñoä vaøo thanh ghi ñieàu khieån cuaû 8251.
Ví duï:
Moät 8251 coù ñiaï chæ goác CS\ vôùi 0FFF0h, caàn trao ñoåi thoâng tin
8 bit, toác ñoä x16 khoâng coù kieåm tra Parity chaün leû, 2bit stop.
Lôøi ñieàu khieån laø: 1 1 0 0 1 1 1 0
 chöông trình khôûi phaùt:
MOV DX, 0FFF2h
MOV AL,00h
OUT DX,AL
MOV CX 2h
D0 : LOOP D0
OUT DX, AL
D1: MOV CX,2h
LOOP D1
OUT DX, AL
MOV CX,2h
D2: LOOP D2
MOV AL, 40h
OUT DX, AL
MOV CX, 2h
D3: LOOP D3
MOV AL, 11001110B
OUT DX, AL
MOV CX, 2h
D4: LOOP D4
END
2. Truyeàn thoâng tin noái tieáp giöõa kit VXL vaø maùy tính

Giaûi
A 1 – A 11 maõ CS \ GND
ñiaï
D 0 –D 7 chæ D 0 – D7
TxD
Reset Rest
RxD
CLK CLK
DTR 1
A0 C/D\ 5
RD \ RD \ O O O O O
DSR\ O O O O
WR \ WR\ 6 9
RTS \

Coång COM
INTR TxD Cuûa maùy
CTS\ tính
INTA \ X RxRDy
öû
lyùnga
ét
(8259A
VXL hai 8251
möùc)
1. CHÖÔNG TRÌNH
Chöông trình khôûi taïo 8251A
MOV DX, 0FFF2h
MOV AL,00h
OUT DX,AL
MOV CX, 2h
D0 : LOOP D0
OUT DX, AL
D1: MOV CX, 2h
LOOP D1
OUT DX, AL
MOV CX,2h
D2: LOOP D2
MOV AL, 40h
OUT DX, AL
MOV CX, 2h
D3: LOOP D3
MOV AL, 11001110B
OUT DX, AL
MOV CX, 2h
D4: LOOP D4
END
CHÖÔNG VI
PHAÀN MEÀM GIAO TIEÁP

CHÖÔNG TRÌNH TRUYEÀN, NHAÄN DÖÕ LIEÄU TREÂN KIT VXL 8086.
2. GIAÛI THUAÄT
* Löu ñoà khôûi taïo 8251A

Begin

00h thanh ghi ñieàu khieån

03h AH

AH - 1

Delay

sai
AH = 0 ?

Ñuùng

Naïp töø cheá ñoä caøo thanh


ghi cheá ñoä

Delay

End
* Löu ñoà chöông trình truyeàn döõ lieäu.

BEGIN

KHÔÛI PHAÙT:
GHI TÖØ CHEÁ
ÑOÄ

GHI LEÄNH :
DTR, TxEN

ÑOÏC TRAÏNG
THAÙI:
DSR, TxRDy

Kieåm tra
saün saøng
:DSR=
TxRDY=1

GHI SOÁ
LIEÄU
RA
THANH
GHI
GHI LEÄNH
ÑEÄM PHAÙT:
RTS SOÁ
LIEÄU

END
* Löu ñoà chöông trình nhaän döõ lieäu.

BEGIN

KHÔÛI PHAÙT:
GHI TÖØ CHEÁ
ÑOÄ

GHI LEÄNH :
DTR, RxEN,RTS

ÑOÏC TRAÏNG
THAÙI:
DSR, RxRDy

Kieåm tra
saün saøng
:DSR=
RxRDY=1

ÑOÏC SOÁ LIEÄU


TÖØ THANH GHI
ÑEÄM SOÁ LIEÄU

END
3. CHÖÔNG TRÌNH.
a. Chöông trình khôûi taïo 8251A.
MOV DX, 0FFF2h
MOV AL,00h
OUT DX,AL
MOV CX 2h
D0 : LOOP D0
OUT DX, AL
D1: MOV CX,2h
LOOP D1
OUT DX, AL
MOV CX,2h
D2: LOOP D2
MOV AL, 40h
OUT DX, AL
MOV CX, 2h
D3: LOOP D3
MOV AL, 11001110B
OUT DX, AL
MOV CX, 2h
D4: LOOP D4
MOV CX, 6500h
MOV AL,03h
OUT 01h

Chöông trình truyeàn döõ lieäu.


;chuong trinh truyen du lieu
org 70000h
mov dx 02h ;dia chi thanh ghi dieu khien
mov al,00h
out dx,al ;xoa thanh ghi dieu khien
call delay

out dx,al
call delay

out dx,al
call delay

mov al,40h ; goi 40h vao al, gia tri cua bit RI
out dx,al ;de xoa thanh ghi noi
call delay
mov al,0cdh ; ghi loi dieu khien che do vao
out dx,al ;thanh ghi dieu khien che do
call delay
mov cx,6500h ; dia chi dieu khien
mov al,03h ; ghi tu che do DTR(D1=1),TxEN(D0=1)
out dx,al
call delay
x1: in al,dx
and al,81h ; kiem tra trang thai
cmp al,81h
jnz x1
mov dx,cx
mov al,m
mov bl,al ; nap byte dia chi tap vao bl
mov dx,00h
out dx,al ;gui byte dia chi thap
call delay

mov al,21h ; ghi tu lenh DTS(D5),TxEN(D0) de truyen


mov dx,01h
out dx,21h
call delay
inc cx ;tang dia chi de lay byte ke tiep
mov al,03h
out dx,al
call delay
mov dx,01h
x2: in al,dx
and al,81h
cmp al,81h
jnz x2
mov dx,00h
in al,dx
mov dx,cx
mov al,m
mov bh,al ;nap dia chi cao vao bh
out dx,al ;truyen byte dia chi cao
call delay
mov al,21h
mov dx,01h
out dx,al ;ra lenh truyen
call delay
mov dx,01h
x3: in al,dx
and al,81h
cmp al,81h
jnz x3
mov dx,cx
mov al,m
mov dx ooh
out dx,al ;gui so byte can truyen
mov ah,al
x5: mov al,21h
out dx,al
call delay
mov dx,01h
x4: in al,dx
and al,81h
cmp al,81h
jnz x4
mov dx,bx ;tuyen du lieu can truyen
mov al,m
mov dx,00h
out dx,al
inc bx
dec ah
mov al,21h
mov dx,o1h
out dx,al
jnz x5
end

Chöông trình nhaän döõ lieäu.


;chuong trinh con delay
delay: push cx
mov cx,03h
y0: loop y0
pop cx
ret

;chuong trinh nhan du lieu


org 70000h
mov dx 01h ;dia chi thanh ghi dieu khien
mov al,00h
out dx,al ;xoa thanh ghi dieu khien
call delay

out dx,al
call delay

out dx,al
call delay

mov al,40h ; goi 40h vao al, gia tri cua bit RI de xoa thanh ghi noi
out dx,al
call delay
mov al,0cdh; ghi loi dieu khien che do vao thanh ghi dieu khien
out dx,al
call delay
mov al,26h ; ghi tu che do RTR(D1=1),RxEN(D0=1)
out dx,al
call delay
y1: in al,dx
and al,82h; kiem tra trang thai
cmp al,82h
jnz y1
mov dx,00h
in al,dx
mov bl,al; nap byte dia chi tap vao bl
mov dx,01h
y2: in al,dx
and al,82h
cmp al,82h
jnz y2
mov dx,00h
in al,dx
mov bh,al
mov dx,01h

y3: in al,dx
and al,82h
cmp al,82h
jnz y3
mov dx ooh
in dx,al ;nhan so byte truyen
mov ah,al

mov dx,01h;nhan du lieu


y4: in al,dx
and al,82h
cmp al,82h
jnz y4

mov dx,00h
in al,dx
mov dx,bx
mov m,al
inc bx
jnz x4
end
II. CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU TREÂN MAÙY TÍNH
; TERMINAL.ASM
; STACK
stack segment stack
db 300 dup('?')
stack ends
; DATA
data segment
prompt db 'File name:$'
filename db 30 dup(0)
buffer db 512 dup(0)
buffrr db 512 dup(0)
handle dw ?
openerr db 0dh,0ah,'OPEN ERROR - COPDE'
errcode db 30h,'$'

;messages
MENU_MS db ' **TERMINAL PROGRAM**',0dh,0ah
db '<F1> to redisplay this MENU',0dh,0ah
db '<F2> to set communications protocol',0dh,0ah
db '<F3> to display protocol installed',0dh,0ah
db '<F4> to open file.hex and trasnmit',0dh,0ah
db '<F9> to exit the TERMINAL program',0dh,0ah
db 'All character typed are transmitter',0dh,0ah
db 'All character receiver are display',0dh,0ah
db 0dh,0ah,'$'

PROT_MS db '* Installed communications protocol',0dh,0ah


db 'Baud rate:'
Baud% db '2400',0dh,0ah
db 'Parity:'
Par% db 'Even',0dh,0ah
db 'Stop bit:'
Stop% db '1',0dh,0ah
db 'Word length:'
Word% db '8',0dh,0ah,0ah,'$'

Baud$$ db '110 150 300 600 1200 2400 4800 9600'


Par$$ db 'odd noneven'

baud_menu db 0dh,0ah,'**New communication parameter'


db 'rs input **',0dh,0ah
db 'baud rate:',0dh,0ah
db '1 = 110',0dh,0ah
db '2 = 150',0dh,0ah
db '3 = 300',0dh,0ah
db '4 = 600',0dh,0ah
db '5 = 1200',0dh,0ah
db '6 = 2400',0dh,0ah
db '7 = 4800',0dh,0ah
db '8 = 9600',0dh,0ah
db 'Select: $'

par_menu db 0dh,0ah,'Pariry:',0dh,0ah
db '1 = odd',0dh,0ah
db '2 = none',0dh,0ah
db '3 = even',0dh,0ah
db 'Select: $'

Stop_menu db 0dh,0ah,'Stop bit:',0dh,0ah


db '1 = 1 stop bit',0dh,0ah
db '2 = 2 stop bit',0dh,0ah
db 'Select: $'

Word_menu db 0dh,0ah,'Word length:',0dh,0ah


db '1 = 7 bit',0dh,0ah
db '2 = 8 bit',0dh,0ah
db 'Select: $'

err1_ms db 0dh,0ah,'*** cannot transmit ***',0dh,0ah


card_base dw 02f8h ;address of RS 232 card
inT_num db 0ch
setup_byte db 0bbh ;
;Origin
O_int_seg dw 0000h ;segment
O_int_off dw 0000h ;offset

;circular buffer and pointer:


circ_buf db 20 dup(00h)
dw 0
data_in dw 0 ;input pointer
data_out dw 0 ;output pointer

data ends
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CODE xxxxxxxxxxxxxxxxxx
code segment
assume CS:code
start:
mov ax,data
mov ds,ax
assume ds:data
mov es,ax
assume es:data
;display MENU at cursor
mov dx,offset menu_ms ;messages
call show_message
;hardware type
push ds
mov dx,0f000h
mov ds,dx
mov al,ds:[0fffeh] ;code to AL
;get addr of the RS232 card from BIOS data area
mov dx,0
mov ds,dx
mov cx,ds:0400h
pop ds
mov card_base,cx
;determine interrupt number:
; 0bh IRQ4 all other
cmp al,0fdh
jne set_address
mov int_num,0bh
;save/install interrupt
set_address:
mov ah,53
mov al,int_num
int 21h
mov o_int_seg,es
mov o_int_off,bx
mov ah,37
mov al,int_num
mov dx,offset cs:rs232_int
push ds
push cs
pop ds
int 21h
pop ds
;set protocol
mov al,10111011b
mov ah,0
mov dx,0
int 14h
call comm_on
call flush ;
monitor:
mov ah,1
int 16h
jz ser_imp
jmp char_typed
ser_imp:
sti ;interrupt on
mov cx,50
delay: nop
nop
loop delay
;test for new data received
cli
mov bx,data_out
cmp bx,data_in
jne new_data
sti
jmp monitor
;process char
char_typed:
mov ah,0
int 16h
;test for <F1>,<F2>,<F3>,<F4> and <F9> keys
cmp ax,3b00h
jne test_f2
jmp show_menu ;F1 key pressed
test_f2:
cmp ax,3c00h
jne test_f3
jmp set_protocol ;F2 key pressed
test_f3:
cmp ax,3d00h
jne test_f4
jmp show_protocol ;F3 key pressed
test_f4:
cmp ax,3e00h
jne test_f9
jmp tran_file ;F4 key pressed
test_f9:
cmp ax,4300h
je dos_exit
jmp show_and_send ;F2 key pressed
dos_exit:
call comm_off
mov ah,37
mov al,int_num
mov dx,o_int_off
mov ax,o_int_seg
mov ds,ax
int 21h
;exit
mov ah,76
mov al,0
int 21h
;redisplay menu
show_menu:
mov dx,offset menu_ms
call show_message
jmp monitor
;new data receiver
new_data:
lea si,circ_buf
mov bx,data_out
add si,bx
mov al,byte ptr[si]
;update output pointer
inc bx
cmp bx,20
jne ok_out_ptr
mov bx,0
ok_out_ptr:
mov data_out,bx
sti
call tty
jmp monitor
set_protocol:
call comm_off
baud_rates:
mov dx,offset baud_menu
call show_message
call get_key
call tty
cmp al,'1'
jc baud_rates
cmp al,'9'
jnc baud_rates
sub al,30h ;ascii to binary
sub al,1 ;to range 0 to 7
push ax
mov cl,4
mul cl
mov si,offset baud$$
mov ah,0
add si,ax
mov di,offset baud%
mov cx,4
cld
push ds
pop es
rep movsb
pop ax
mov cl,5
shl al,cl
mov setup_byte,al
parity:
mov dx,offset par_menu
call show_message
call get_key
call tty
;valid input range is "1" to "3"
cmp al,'1'
jc parity
cmp al,'4'
jnc parity
;input is valid range
sub al,30h
push ax
;select 4 byte parity message and place in display area
sub al,1
mov al,4
mul cl
mov si,offset par$$
mov ah,0
add si,ax
mov di,offset par%
mov cx,4
cld
push ds
pop es
rep movsb
pop ax
mov cl,3
shl al,cl
or setup_byte,al
stopbits:
mov dx,offset stop_menu
call show_message
call get_key
call tty
;valid input range is "1" or "2"
cmp al,'1'
jc stopbits
cmp al,'3'
jnc stopbits
mov si,offset stop%
mov byte ptr[si],al
sub al,31h
mov cl,2
shl al,cl
or setup_byte,al
word_length:
mov dx,offset word_menu
call show_message
call get_key
call tty
;valid input range is '1' or '2'
cmp al,'1'
jc word_length
cmp al,'3'
jnc word_length
push ax
;Input in valid range. Add 6 and move input to display area
add al,6
mov si,offset word%
mov byte ptr[si],al
pop ax
sub al,30h
inc al
or setup_byte,al
;install new parameter
mov al,setup_byte
mov dx,0
mov ah,0
int 14h
;line feed and cariage reture before exit
mov al,0dh
call tty
mov al,0ah
call tty
;communication
call comm_on
jmp monitor
;
;display protocol
show_protocol:
mov dx,offset prot_ms
call show_message
jmp monitor
;**************************************************************
;output and display
show_and_send:
mov cx,2000
push ax
thre_wait:
mov dx,card_base
add dx,5
in al,dx
jmp short $+2
test al,20h
jnz ok_2_send
loop thre_wait
;wait period timed out,display error message and exit
pop ax
mov dx,offset err1_ms
call show_message
jmp monitor
ok_2_send:
pop ax
;place in transmitter hoding register to send
mov dx,card_base
out dx,al
jmp short $+2
;display character
call tty
jmp monitor

;**************************************************************
;CAC CHUONG TRINH CON
comm_on proc near
cli ;interrupt off
;reset buffer pointer to start of buffer
mov data_in,0
mov data_out,0
;set dx to base address of RS 232 card from BIOS
mov dx,card_base
mov dl,0fch
mov al,00001011b
out dx,al
jmp short $+2
;set bit 7
mov dl,0fbh
in al,dx
jmp short $+2
and al,7fh
out dx,al
jmp short $+2
in al,21h
jmp short $+2
and al,0e7h
out 21h,al
jmp short $+2 ;I/o delay
;reenable interrupt
sti
ret
comm_on endp

comm_off proc near


in al,21h
or al,18h
out 21h,al
jmp short $+2
ret
comm_off endp

show_message proc near


mov ah,9
int 21h
ret
show_message endp

tty proc near


tty_one:
push ax
mov ah,14
mov bx,0
int 10h
pop ax
cmp al,0dh
jne not_cr
mov al,0ah
jmp tty_one
not_cr: ret
tty endp

flush proc near


flush_1:
mov ah,1
int 16h
jz no_old_chars
mov ah,0
int 16h
jmp flush_1
no_old_chars:
ret
flush endp

get_key proc near


mov ah,0
int 16h
ret
get_key endp

rs232_int:
sti ;interrupt on
push ax
push bx
push dx
push di
push ds
mov dx,data
mov ds,dx
assume ds:data
data_check:
mov dx,card_base
mov dl,0fdh
in al,dx
jmp short $+2
test al,1eh
jnz data_error
jmp data_check
data_error:
mov al,'1'
jmp store_byte
data_ready:
mov dl,0f8h
in al,dx
jmp short $+2
and al,7fh
store_byte:
lea di,circ_buf
mov bx,data_in
add di,bx
mov byte ptr[di],al
inc bx
cmp bx,20
jne ok_in_ptr
mov bx,0
ok_in_ptr:
mov data_in,bx
mov al,20h
out 20h,al
jmp short $+2
pop ds
pop di
pop dx
pop bx
pop ax
iret

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
tran_file:
call get_name ;doc ten file
lea dx,filename ;dx chua offset cua ten file
mov al,0
call open
jc open_error
mov handle,ax
read_loop:
lea dx,buffer ;tro toi vung dem
mov bx,handle ;lay the file
call read ;doc file,AX = so byte doc duoc
or ax,ax ;ket thuc file
je pexit ;dung, ket thuc file
mov cx,ax ;CX chua so byte doc duoc
call display ;hien thi file
jmp read_loop ;lap lai
open_error:
lea dx,openerr ;lay thong bao loi
add errcode,al
mov ah,9
int 21h ;hien thi thong bao loi

;**************************************************************
;output and display
;show_and_send:

pexit:
mov cx,2000
pthre_wait:
mov dx,card_base
add dx,5
in al,dx
jmp short $+2
test al,20h
jnz pok_2_send
loop pthre_wait
;wait period timed out,display error message and exit
mov dx,offset err1_ms
call show_message
jmp ppexit
pok_2_send:
call con_hex ;goi chtr con chuyen sang so hex
lea dx,buffrr
mov cx,256
call display
mov cx,256
;place in transmitter hoding register to send
mov dx,card_base
lea di,buffrr ;tro toi vung dem
ppl: mov al,[di] ;lay byte data
out dx,al
jmp short $+2
call edelay
inc di
loop ppl
;display character
; call tty
ppexit:mov bx,handle ;lay the file
call close ;dong the file
jmp monitor

;**************************************************************
get_name proc near
push ax
push dx
push di
mov ah,9 ;ham hien thi chuoi
lea dx,prompt
int 21h
cld
lea di,filename ;DI tro toi ten file
mov ah,1 ;ham doc ki tu tu ban phim
read_name:
int 21h
cmp al,0dh ;co phai CR
je done ;dung ket thuc
stosb ;luu no vao trong chuoi
jmp read_name ;tiep tuc doc vao
done: mov al,0
stosb ;luu byte 0
pop di
pop dx
pop ax
ret
get_name endp

open proc near


mov ah,3dh;ham mo file
mov al,0 ;chi doc
int 21h
ret
open endp

read proc near


push cx
mov ah,3fh ;ham mo file
mov cx,512 ;chi doc
int 21h
pop cx
ret
read endp

display proc near


push bx
mov ah,40h;ham ghi file
mov bx,1 ;the file cho man hinh
int 21h ;dong file
pop bx
ret
display endp

close proc near


mov ah,3eh ;ham dong file
int 21h ;dong file
ret
close endp

edelay proc near


push ax
push bx
mov ax,06h
edel2: mov bx,0ffffh
edel1: dec bx
jnz edel1
dec ax
jnz edel2
pop bx
pop ax
ret
edelay endp

;++++++++++++++++++++++++++++++++++++++++++++
con_hex proc near
push ax
push bx
push cx
push dx
push di
push si
mov ax,0b800h
mov bx,0
cld
lea si,buffrr
mov cx,260
mov al,0
xxx8: mov [si],al
inc si
loop xxx8
lea si,buffrr
lea di,buffer
xxx3: mov al,[di] ;lay byte data
cmp al,3ah ;so sanh voi ma dau ':'
jz xxx2 ;nhay neu la dau ':'
inc di
jmp xxx3 ;quay lai de tim dau ':'
xxx2: call ktra_end ;goi chuong trinh kiem tra ket thuc
cmp ax,0 ;dung la het data thi lam cho AX=0000
jnz xxx4
xxx6: pop si
pop di
pop dx
pop cx
pop bx
pop ax
ret
xxx4: mov al,[di] ;lay byte data
mov [si],al ;dung la byte 3Ah can luu vao
call goi_ht
inc di
inc si
;xu li so byte can goi
mov al,[di] ;lay so can goi MSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
mov cl,4
rol al,cl
mov ah,al
inc di
mov al,[di] ;lay so can go LSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
or al,ah ;or 2 data lai thanh 1 byte
mov [si],al ;cat so HEX ADDR_H
add al,1
mov dl,al ;luu so byte can xu li con lai
call goi_ht
;xu li phan dia chi can goi
inc di
inc si
mov al,[di] ;lay byte ADDR_L-MSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
mov cl,4
rol al,cl
mov ah,al
inc di
mov al,[di] ;lay byte ADDR_L-LSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
or al,ah ;or 2 data lai thanh 1 byte
mov [si],al ;cat so HEX ADDR_H
call goi_ht
inc di
inc si
mov al,[di] ;lay byte ADDR_H-MSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
mov cl,4
rol al,cl
mov ah,al
inc di
mov al,[di] ;lay byte ADDR_H-LSD
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
or al,ah ;or 2 data lai thanh 1 byte
mov [si],al ;cat so byte can goi dang HEX
call goi_ht
;xu li cac byte con lai
inc di ;bo byte 00
inc di ;
xxx1: inc di
inc si
mov al,[di] ;lay so byte thu nhat
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
mov cl,4
rol al,cl
mov ah,al
inc di
mov al,[di] ;lay so byte thu 2
sub al,30h ;tru di 30 de thanh so hex
call so_lon ;kiem tra so ABCDEF
or al,ah ;or 2 data lai thanh 1 byte
mov [si],al ;cat so byte can goi dang HEX
call goi_ht
dec dl
cmp dl,0
jnz xxx1 ;quay lai vi chua
inc di ;bo byte cuoi thu nhat
inc di ;bo byte thu 2
inc di ;bo ma xuong hang
jmp xxx3 ;het 1 hang data
con_hex endp

;chuong trinh kiem tra ket thuc


ktra_end proc near
push di
inc di
mov al,[di] ;lay byte data
cmp al,30h ;kiem tra byte 0 thu nhat
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 2
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 3
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 4
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 5
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 6
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 0 thu 7
mov al,[di] ;lay byte data
cmp al,30h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte 1 thu 8
mov al,[di] ;lay byte data
cmp al,31h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte F thu 9
mov al,[di] ;lay byte data
cmp al,46h
jnz kt_exit ;nhay den de thoat vi khong phai
inc di ;neu dung thi kiem tra byte F thu 10
mov al,[di] ;lay byte data
cmp al,46h
jnz kt_exit ;nhay den de thoat vi khong phai
mov ax,0
pop di
ret
kt_exit:
mov ax,1111h ;nap data sao cho khac khong la 1
pop di
ret
ktra_end endp

goi_ht proc near


push di
mov di,bx
mov ah,1
stosw
mov bx,di
pop di
ret
goi_ht endp

so_lon proc near


cmp al,9
jg yyy
ret
yyy: sub al,7
ret
so_lon endp

code ends
end start
Phaàn 3

TOÅNG KEÁT VAØ


ÑAÙNH GIAÙ
HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI

oOo

Sau thôøi gian thöïc hieän ñeà taøi sinh vieân thöïc hieän ñeà taøiñaõ keát noái
phaàn cöùng vaø vieát chöông trình truyeàn döõ lieäu giöõa 2 kit VXL, giöõa
maùy tính vôùi kit VXL. Chöông trình phaàn lôùn ñaõ chaïy nhöng chöa ñöôïc
hoaøn thieän laém. Sinh vieân thöïc hieän thaáy raèng ñeà taøi caàn phaùt
trieån theâm caùc böôùc sau:

+ Chöông trình truyeàn döõ lieäu treân maùy tính môùi truyeàn hoaøn
chænh ñöôïc nhöõng file .hex, ñeà taøi caàn phaùt trieån theâm caùc chöông
trình truyeàn caùc file .com, .doc, …

+ Vieát theâm chöông trình giao dieän ñeå chöông trình hoaøn thieän hôn.

+ Thieát keá phaàn cöùng vaø vieát chöông trình truyeàn döõ lieäu theo
kieåu song song duøng 8255.

+ Vieát chöông trình ñeå ño löôøng vaø ñieàu khieån caùc thieát bò ngoaïi
vi.
KEÁT LUAÄN VAØ ÑAÙNH GIAÙ
oOo

Sau 8 tuaàn thöïc hieän ñeà taøi vôùi söï höôùng daãn nhieät tình cuaû
thaày Nguyeãn Ñình Phuù sinh vieân thöïc hieän ñaõ hoaøn thaønh ñuùng
thôøi gian quy ñònh ñeà taøi “GIAO TIEÁP MAÙY TÍNH VÔÙI KIT VI
XÖÛ LYÙ 8086” . Ñaây laø ñeà taøi mang tính toång hôïp, keát hôïp giöõa
kyõ thuaät ñieän töû vaø kyõ thuaät laäp trình. Vôùi söï quyeát taâm, noã löïc
khoâng ngöøng, taäp luaän vaên naøy ñaõ giuùp em böôùc ñaàu laøm quen
vôùi ñeà taøi khoa hoïc vaø em ñaõ thöïc söï tích luõy khaù nhieàu kieán thöùc
veà vi xöû lí, thieát keá maïch vaø kyõ thuaät laäp trình.

Do kieán thöùc vaø thöøi gian coøn coù haïn neân taäp luaän vaên coøn
coù sai soùt, nhöng trong quaù trình thöïc hieän taäp luaän vaên em ñaõ hoïc
hoûi ñöôïc nhieàu ñieàu hay vaø nhöõng kinh nhieäm boå ích maø trong quaù
trình hoïc taäp chöa hoïc hoûi vaø tieáp thu heát ñöôïc. Qua ñoù em ñaõ boå
sung nhieàu kieán thöùc nhaát laø kieán thöùc veà moân kyõ thuaät vi xöû lyù .

Em xin chaân thaønh caûm ôn söï giuùp ñôõ taän tình cuûa caùc thaày
coâ ñaõ taïo ñieàu kieän thuaän lôïi cho em hoaøn thaønh toát nhieäm vuï ñöôïc
giao ñuùng thôøi gian quy ñònh.

Em raát mong nhöõng yù kieán ñoùng goùp cuaû quùy thaày coâ cuøng
caùc baïn sinh vieân ñeå taäp ñeà taøi ñöôïc hoaøn chænh hôn.
TAØI LIEÄU THAM KHAÛO
1. ÑO LÖÔØNG VAØ ÑIEÀU KHIEÅN BAÈNG MAÙY VI TÍNH
Ngoâ Dieän Taäp _ NXB KHKT Haø Noäi _ 1996
1. ÑIEÀU KHIEÅN VAØ GHEÙP NOÁI CAÙC THIEÁT BÒ NGOAÏI VI
Traàn Baù Thaùi _ NXB KHKT Haø Noäi _ 1984
2. KYÕ THUAÄT GHEÙP NOÁI MAÙY VI TÍNH
Nguyeãn Maïnh Giang _ NXB GD Haø Noäi _1997
3. GIAÙO TRÌNH HÔÏP NGÖÕ
Ñaïi Hoïc Môû Baùn Coâng TPHCM _ 1995
4. TRUYEÀN DÖÕ LIEÄU
Toáng Vaên On _ ÑH KYÕ THUAÄT TPHCM _ 1999
5. VI XÖÛ LYÙ TRONG ÑO LÖÔØNG VAØ ÑIEÀU KHIEÅN
Ngoâ Dieän Taäp _ NXB KHKT Haø Noäi _ 1996
6. KYÕ THUAÄT VI XÖÛ LYÙ
Vaên Theá Minh _ NXB GD _ 1997
7. ASSEMBLY LANGUAGE TOOLS and TECHNIQUES FOR
THE IPM MICROCOMPUTERS
Julio Sanches _ Prentice Hall _ 1990
8. MICROCOMPUTER INTERFACING
Bruce A.Artwick _ Prentice Hall _ 1980
9. THE 8051 MICROCONTROLLER
I.Scott Mackenzic

También podría gustarte