LỜI NÓI ĐẦU
 
 Đất nước ta đang trên con đương tiến lên một đất nước công ngiệp hóa hiện đại hóa. Để đạt được mục tiêu đó thì ngành công ngiệp máy tính là một ngành then chốt để tiến lên con đường công ngiệp hoá và hiện đại hóa đất nước.
 Ngày nay trong các nhà máy xí nghiệp hay công xưởng đều sử dụng máy vi tính vào việc đo lường điều khiển, tính toán và trong quản lý hành chính, nhờ có đặc tính gọn nhẹ, độ tin cậy cao linh hoạt và đơn giản trong sử dụng. Đặc biệt trong các ngành công nghiệp hiện đại, máy tính điện tử không những góp phần vào việc nâng cao năng suất lao động mà còn góp phần vào việc bảo vệ sức khoẻ và an toàn lao động cho con người.
 Đễ hoàn thành những công việc kể trên chúng ta cần phải kết nối các máy vi tính với nhau, hoặc kết nối chúng với các thiết bị ngoại vi nhận dữ liệu để xử lý hay gửi dữ liệu đi cho các thiết bị khác xử lý. Để thực hiện được công việc này thì điều đầu tiên chúng ta phải làm đó là chúng ta phải kết nối phần cứng cho phù hợp và viết các chương trình truyền dữ liệu.
 
 Trước yêu cầu đó sinh viên thực hiện đề tài quyết định thực hiện đề tài “Giao tiếp máy tính với kit VXL 8086” nhằm mục đích tìm hiểu, học hỏi thêm và ứng dụng các kiến thức đã học ra thực tế.
 Sinh viên thực hiện xin chân thành cảm ơn thầy Nguyễn Đình Phú cùng các thầy cô trong khoa đã tận tình hướng dẫn em hoàn thành tốt đề tài này.
 Vì thời gian và kiến thức có hạn nên tập luận văn này chắc chắn không tránh khỏi sai sót, rất mong những ý kiến đóng góp của qúy thầy cô và các bạn.
                
              
                                            
                                
            
 
            
                 138 trang
138 trang | 
Chia sẻ: banmai | Lượt xem: 2109 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Giao tiếp máy tính với kit vi xử lý 8086, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 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.
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)
1 neáu RI coù bieán ñoåi 
1: neáu coù söï thay ñoå caùc tín hieäu töông öùng
Coù caùc giaù trò cuûa caùc bít out 2 out 1 , DTR , RTS , trong MCR khi bit LOOP = 1
RLSD
RI
DSR
CTS
DRLSD
DRI
DDSR
DCTR
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 chæ cô baûn (basic Address) caùc ñæa chæ cuûa caùc thanh ghi tieáp theo ñöôïc ñaït tôùi baèng vieäc coäng theâm soá thanh ghi ñaõ gaëp cuûa boä UART vaøo ñòa chæ cô baûn .
Ñò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
COM 2
COM 3
COM 4
3F8H
2F8H
3E8H
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
CAÙC LINH KIEÄN BAÙN DAÃN LIEÂN QUAN
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
Vcc
GND
T1OUT
R1IN
R1OUT 
T1IN
T2IN
R2OUT
C1+
V+
C1-
C2+
C2-
V-
T2OUT
R2IN
O
1 16
2 15
3 MAX 14 
 232
4 13
5 12
6 11
7 10
8 9
16
16
16
16
16
16
16
16
16
16
16
16
16
16
Hình 4.1
Ñöôø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:
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
13
12
11
1G
1A1
2Y1
1A2
2Y3
1A3
2Y2
1A4
2Y1
GND
Vcc
2G
1Y1
2A4
1Y2
2A3
1Y3
2A2
1Y4
2A1
74LS244
Hình 4.2: Sô ñoà chaân 74LS244
Baûng söï thaät: 
H: möùc ñieän theá cao
L: möùc ñieän theá thaáp
X: khoâng quan taâm
Z: toång trôû cao
INPUT
OUTPUT
1G 2G
D
L
L
H
L
H
X
L
H
Z
Thoâng soá ngöôûng:
Kyù hieäu
Thoâng soá
Min
Type
Max
Ñôn vò
Vcc
Nguoàn cung caáp
4,45
5,0
5,25
V
TA
Nhieät ñoä hoaït ñoäng
0
2,5
70
oC
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:
1
2
3
4
5
6
7
8
9
18
17
16
15
14
13
12
11
10
CSYNC
PCLK
AEN1
RDY1
READY
RDY2
AEN2
CKL
GND
Vcc
X1
X2
ASYNC
EFI
F/C
OSC
RES
RESET
8284
Hình 4.3: Sô ñoà chaân 8284
2).	Chöùc naêng caùc chaân 8284:
	¨ 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.
	¨ CLK: xung nhòp vôùi ñoä roång 77% noái ñeán chaân CLK cuûa CPU 8086.
	¨ PCLK: xung nhòp vôùi ñoä roång 50% daøng cho thieát bò ngoaïi vi.
	¨ OSC xung nhòp ñaõ ñöôïc khueách ñaïi coù taàn soá baèng 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.
+5V
CLK
CLK
8086
RESET
RESET
F/C
CSYNC
X1
X2
RES
K
Khôûi ñoäng heä thoáng
8284
Hình 4.4: Sô ñoà caùc ñöôøng tín hieäu chính cuûa 8284
	¨ 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.
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:
Tín hieäu döõ lieäu
Tín hieäu ñòa chæ
A0
A1
A2
.
.
.
Am
WE
D0
D1
D2
.
.
.
Dn
CS OE
Chaân choïn RD
Hình 4.5: Sô ñoà moät vi maïch nhôù
WR: Write – ghi
WE: Write Enable-cho pheùp ñoïc.
OE: Output Enable-ñaàu vaøo ñieàu khieån.
CS: Chip Select- chaân choïn.
RD: Read – ñoïc.
Theo sô ñoà treân ta thaáy moät vi maïch nhôù coù caùc nhoùm tín hieäu 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
10
19
18
17
16
15
Vpp
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND
Vcc
PCM
NC
A8
A9
A11
OE
A10
CE
D7
D6
D5
D4
D3
2764
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
Chôø
Laäp trình
Kieãm tra
Caám laäp trình
Vl
Vh
Vl
Vl
Vh
Vl
X
X
Vl
X
Vh
X
Vl
Vh
X
Vcc
Vcc
21V
21V
21V
Out
Taét
In
Out
Taét
D8 ¸ D15
D0 ¸ D7
OE
CS
OE
CS
CS töø boä giaõi maõ
MEMR
Hình 4.7: Moâ hình keát noái boä giaûi maõ vôùi boä nhôù
4.2).	RAM 62256:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
10
19
18
17
16
15
A14
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND
Vcc
WE
A13
A8
A9
A11
OE
A10
CE
D7
D6
D5
D4
D3
62256
Hình 4.8: Sô ñoà chaân 62256
Sô ñoà chaân:
GIÔÙI THIEÄU KIT VI XÖÛ LYÙ 8086
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.
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.
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
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
STX TEXT ETX hay ETB BCC
HEADER
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:
 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
 Nhoùm tín hieäu gheùp noái voái Modem:
 - /DTR
 - /DSR
 - /RTS
 - /CTS
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
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.
·
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
8251A
D1
D0
Vcc
/RxC
/DTR
/RTS
/DSR
Reset
CLK
TxD
TxEMPTY/CTS
Syndet/BR
TxRDY
D2
D3
RxD
GND
D4
D5
D6
D7
/TxC
/WR
/CS
C/D
/RD
RxRDY
/CS
/RD
/WR
C/D
D0
D1
D2
D3
D4
D5
D6
D7
CLK
RST
RxRDY
TxRDY
TxEMTy
Vcc
GND
/DSR /DTR /CTS /RTS Syn/BRK TxC RxC
Thanh ghi truyeàn
Thanh ghi ñeäm truyeàn
Thanh ghi nhaän
Thanh ghi ñeäm nhaän
Thanh ghi cheá ñoä
Thanh ghi leänh
Thanh ghi traïng thaùi
TxD
RxD
Hình 5.3 : Sô ñoà chaân (a) vaø caùc tnh ghi (b) cuûa 8251A
(a)
 (b) 
/CS chíp choïn vi maïch
/RD read – ñoïc 
/WR write – vieát 
C/D control/data - ñieàu khi63n soá lieäu 
CLK – clock – nhòp 
D0..D7 data O/I – bus döõ lieäu vaøo ra
/TxC – transmit clock - nhòp truyeàn
RxC – receiver clock 
RST – reset
/DTR dada terminal ready
/DSR – data set ready
/RTS request to send
/CTS clear to send
TxD – transmit data
RxD – receiver data
TxRDy – transmit ready
RxRDy – receiver ready
TxEMTY – transmist rigister empty
Syn/BRK- Breack deteat 
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
0
0
0
1
1
1
0
0
x
0
1
0
1
x
1
0
1
0
x
Ghi vaøo thanh ghi ñieàu khieån (cheá ñoä, leänh)
Ñoïc thanh ghi traïng thaùi.
Ghi soá lieäu vaøo thanh ghi ñeäm truyeàn.
Ñoïc soá lieäu töø thanh ghi ñeäm nhaän.
Trôû khaùng cao (khoâng duøng).
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 A0=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æ A0=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:
 Thanh ghi ñieàu khieån: 
duøng ñeå ghi: 
 + lôøi ñieàu khieån cheá ñoä.
 + lôøi leänh:
Hình 5.4a
D7 D6 D5 D4 D3 D2 D1 D0
Toác ñoä truyeàn
00 ñoàng boä
01 khoâng ñoàng boä x1
10 khoâng ñoàng boä x 16
11 khoâng ñoàng boä 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
1.5 bit döøng
2 bit döøng
Bit chaün leû
X0 khoâng kieåm tra chaü leû
 kieåm tra leû
10 kieåm tra chaün
Thanh ghi cheá ñoä.
D7 D6 D5 D4 D3 D2 D1 D0
Cho pheùp phaùt
1= cho pheùp 
0= caám
Cheá ñoä baát ñoàng boä
1= tìm kyù töï ñoàng boä
Sync
Ngaét meàm
1= xoaù caùc thanh ghi
Yeâu caàu phaùt
1= ñöa tín hieäu 
RTS/= 0
Xoaù côø baùo loãi
1= xoaù côø 
PE, OE, FE
Göûi tín hieäu caét
1= ñöa TxD = 0
0= hoaït ñoäng bình thöôøng 
Cho pheùp thu
1= cho pheùp RxRDy
0= caám RxRDy
Soá lieäu ñaàu cuoái
Saün saøng, DTR\ =1
EH IR RTS ER SBRK RxEN DTR TxEN 
HÌNH 5.4B
thanh ghi traïng thaùi.
Duøng ñeå ñoïc lôøi traïng thaùi:
Chæ modem ñaõ
Saün saøng ñeå truyeàn soá lieäu
Chæ chöõ ñoàng boä ñaõ ñöôïc 8251 nhaän
Chæ thanh ghi bieán ñoåi song song noái tieáp roãng 
Chæ 8251 saün saøng nhaän
1 chöõ hay leänh ñeå truyeàn 
Bít baùo sai chaún leû
Pe= 1khi coù sai xoaù baèng ER cuûa leänh
Chæ saün sang nhaän soá lieäu ñeå truyeàn cho VXL
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 =1
Hình 5.4c
D7 D6 D5 D4 D3	 D2 	 D1	 D0
* Vôùi lôøi ñieàu khieån cheá ñoä: hình 4.3a
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
Truyeàn thoâng tin noái tieáp giöõa 2 kit VXL:
TxD
RxD
DTR\
8251
DSR\
RTS\
CTS\
TxD
RxD
DTR\
8251
DSR\
RTS\
CTS\
VXL2
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
 Truyeàn thoâng tin noái tieáp giöõa kit VXL vaø maùy tính
5
 6 9
A 1 – A 11
D 0 –D 7
Reset
CLK
A 0
RD \
WR \
INTR
INTA \
CS \	GND
D 0 – D7
	TxD
Rest
	RxD
CLK
	DTR
C/D\
RD \
	DSR\
WR\
	RTS \
TxD
	CTS\
RxRDy
Giaûi maõ ñiaï chæ
Xöû lyùngaét (8259A hai möùc)
8251
VXL
O O O O O
 O O O O
Coång COM
Cuûa maùy tính
 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.
GIAÛI THUAÄT
* Löu ñoà khôûi taïo 8251A
00h thanh ghi ñieàu khieån
Begin
03h AH
AH - 1
AH = 0 ?
Delay
Naïp töø cheá ñoä caøo thanh ghi cheá ñoä
Delay
End
sai
Ñuùng
* 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 ÑEÄM SOÁ LIEÄU
GHI LEÄNH PHAÙT: RTS
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
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	' to redisplay this MENU',0dh,0ah
	db	' to set communications protocol',0dh,0ah
	db	' to display protocol installed',0dh,0ah
	db	' to open file.hex and trasnmit',0dh,0ah
	db	' 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 ,,, and 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
Ñ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
KYÕ THUAÄT GHEÙP NOÁI MAÙY VI TÍNH
Nguyeãn Maïnh Giang _ NXB GD Haø Noäi _1997
GIAÙO TRÌNH HÔÏP NGÖÕ
Ñaïi Hoïc Môû Baùn Coâng TPHCM _ 1995
TRUYEÀN DÖÕ LIEÄU
Toáng Vaên On _ ÑH KYÕ THUAÄT TPHCM _ 1999
VI XÖÛ LYÙ TRONG ÑO LÖÔØNG VAØ ÑIEÀU KHIEÅN
	Ngoâ Dieän Taäp _ NXB KHKT Haø Noäi _ 1996
KYÕ THUAÄT VI XÖÛ LYÙ
Vaên Theá Minh _ NXB GD _ 1997
ASSEMBLY LANGUAGE TOOLS and TECHNIQUES FOR 
 THE IPM MICROCOMPUTERS
Julio Sanches _ Prentice Hall _ 1990
MICROCOMPUTER INTERFACING
 Bruce A.Artwick _ Prentice Hall _ 1980
THE 8051 MICROCONTROLLER
 I.Scott Mackenzic
            Các file đính kèm theo tài liệu này:
 LUANVAN.DOC LUANVAN.DOC