MỤC LỤC
 Trang
Lời cảm tạ
Lời nói đầu
 PHẦN GIỚI THIỆU CHUNG
CHƯƠNG CƠ SỞ LÝ LUẬN
Chương I: CẤU TRÚC VI XỬ LÝ 8085
I. Cấu Trúc Bên Trong Của Vi Xử Lý 8085 
II. Sơ Đồ Cấu Trúc Bên Ngoài Và Chứ Năng Các Chân Của
 Vi Xử Lý 8085 
III. Bộ Nhớ 
IV. Kết Nối Bộ Nhớ Với Vi Xử Lý 
V. Vấn Đề Giải Mã Cho Bộ Nhớ 
Chương II: GIỚI THIỆU TẬP LỆNH CỦA VI XỬ LÝ 8085 
Chương III: GIAO TIẾP VỚI MÁY TÍNH
I. Giao Tiếp Song Song
 1. Giao Tiếp Qua Cổng Máy In 
 2. Giao Tiếp Qua Cổng Slot Card 
II. Giao Tiếp Nối Tiếp Qua Cổng COM RS232
 1. Vài Nét Cơ Bản Về Cổng nối Tiếp 
 2. Sự Trao Đổi Của Các Đường Tín Hiệu 
Chương IV: GIỚI THIỆU HỆ THỐNG KIT 8085
 1. Tần Số Làm Tần Số Làm Việc 
 2. Tổ Chức Bộ Nhớ 
 3. Các IC Ngoại Vi 
 4. Khối Giải Mã Hiển Thị Sử Dụng IC 8279 
 5. Khối Giài Mã Bàn Phím 
 PHẦN GIAO TIẾP
Chương V: Giao Tiếp Nối Tiếp Dùng Vi Mạch 8251
I. Truyền Thông Tin Nối Tiếp 
II. Vi Mạch Usart 8251 
 1. Sơ Đồ Chân Và Sơ Đồ Khối 
 2. Các Thanh Ghi 
III. Ưùng Dụng Của 8251 Để Truyền Thông Tin Nối Tiếp
 1. Truyền Thông Tin Nối Tiếp Giữa Hai Kit Vi Xử Lý 
 2. Truyền Thông Tin Nối Tiếp Giữa Vi Xử Lý Và Máy Tính 
Chương VI: Giao Tiếp Song Song Dùng Vi Mạch 8255
I. Giơiù Thiệu Về Vi Mạch 8255 
II. Sơ Đồ Chân, Sơ Đồ Logic, Chức Năng Các Chân Của Vi Mạch 8255 
III. Cấu Trúc Bên Trong và Hoạt Động Của Vi Mạch 8255 
 1. Sơ Đồ Khối, Cấu Trúc Bên Trong Của Vi Mạch 8255 
 2.Hoạt Động Của Vi Mạch 8255 
 3. Từ Điều Khiển 
IV. Giao Tiếp Giữa Vi Xử Lý Với 8255 
 1. Giao Tiếp Kiểu I/O 
 2. Giao Tiếp Kiểu Bộ Nhớ 
Chương VII. Phần Cứng Và Phần Mềm Giao Tiếp
I. Lưu Đồ Và Chương Trình Truyền- Nhận Dữ Liệu
 1. Lưu Đồ Truyền Dữ Liệu 
 2. Lưu Đồ Nhận Dữ Liệu 
 3. Chương Trình Truyền Dữ Liệu 
 4. Lưu Đồ Nhận Dữ Liệu 
II. Thiết Kế Và Thi Công Phần Giao Tiếp
 1. Giới Thiệu Về Vi Mạch Max 232 
 2. Sơ Đồ Mạch Kết Nối 
 3. Sơ Đồ Mạch In 
 PHẦN TỔNG KẾT
 Phụ Lục
 Hướng Phát Triển Đề Tài
 Kết Luận
Tài Liệu Tham Khảo
 Mục Lục
                
              
                                            
                                
            
 
            
                 160 trang
160 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 2837 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Đề tài Giao tiếp máy tính với kit vi xử lý 8085, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
trong caùc thanh ghi khi goïi chöông trình con naøy.
Baûng maõ caùc phím soá:
Phím Maõ
00
01
02
03
 1
 2
 3
Phím Maõ
04
05
06
07
 1
 2
 3
Phím Maõ
 C	 0C
 D	 0D
 E	 0E
 F	 0F
Phím Maõ
 8	 08
 9	 09
 A 0A
 B 0B
Baûng maõ caùc phím soá:
Baûng maõ caùc phím chöùc naêng:
 Phím	 Maõ
 T	 10
 G 11
 R 12
	 13
Phím Maõ
 S 14
 15
 P 16
 K 17
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 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 ñöôï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.
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øo ñ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
ÔÛ hình 5.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 ñoà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ùnh daáu caùc phaàn khaùc nhau cuûa baûn tin.
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å ñöôïc truyeàn ñi theo phöông phaùp khoâng ñoàng boä, ñöôïc theå hieän treân hình 5.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ù 1 bit 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ø 11, 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ình 5.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å 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ái 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á lieäu truyeàn. 
- TxRDy baùo soá lieäu truyeàn ñaõ saün saøng.
- RxRDy baùo soá lieäu nhaän ñaõ saün saøng.
- Syn det/Break : chæ ñ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 thanh 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 khieån 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 register empty
Syn/BRK- Break detect 
Caùc thanh ghi:
ÔÛ hình 5.4a vaø hình 5.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, 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 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).
Thanh ghi ñieàu khieån 
Thanh ghi traïng thaùi
Thanh ghi ñieàu khieån:
duøng ñeå ghi: 
 	+ lôøi ñieàu khieån cheá ñoä.
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ún leû
 kieåm tra leû
10 kieåm tra chaün
Lôøi leänh:
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 
Bit baùo sai chaún leû
Pe= 1 khi coù sai xoùa baèng ER cuûa leänh
Chæ saün saøng 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
DSR SYNDET FE OE PE TxEM RxRDy TxRDy
* Vôùùi lôøi ñieàu khieån cheá ñoä: hình 5.4a
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 =00 (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 	D7D6 = 01 – moät bit döøng
	D7D6 = 10 – moät bit röôõi döøng 
	D7D6 = 11 – hai bit döøng 
Vôùi lôøi leänh (hình5.4b) ta coù theå ghi leänh ñeå:
Ñieàu khieån modem: DTR(D1=1), RTS(D5=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 tin 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 5.4c): 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
 VXL1
HÌNH 5.5
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
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
 HÌNH 5.5
Löu ñoà khôûi taïo 8251A
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
Coång COM
cuûa maùy tính
Giaûi maõ ñiaï chæ
HÌNH 5.6
VXL
8251
Xöû lyù ngaét (8259A hai möùc)
CS \	GND
D 0 – D7
	TxD
Rest
	RxD
CLK
	DTR
C/D\
RD \
	DSR\
WR\
	RTS \
TxD
	CTS\
RxRDy
A 1 – A 11
D 0 –D 7
Reset
CLK
A 0
RD \
WR \
INTR
INTA \
O O O O O
 O O O O
5
 6 9
 Truyeàn thoâng tin noái tieáp giöõa kit VXL vaø maùy tính:
CHÖÔNG VI: GIAO TIEÁP SONG SONG DUØNG VI MAÏCH 8255
I. GIÔÙI THIEÄU VEÀ VI MAÏCH 8255A:
Ñeå vi xöû lyù giao tieáp vôùi nhöõng thieát bò beân ngoaøi, ngöôøi ta thöôøng duøng vi maïch giao tieáp 8255A, vi maïch naøy coù khaû naêng giao tieáp raát roäng, vöøa coù theå xuaát döõ lieäu, vöøa coù theå nhaän döõ lieäu tuøy theo ngöôøi laäp trình ñieàu khieån baèng caùch thay ñoåi thoâng soá cuûa thanh ghi ñieàu khieån.
II. 	SÔ ÑOÀ CHAÂN, SÔ ÑOÀ LOGIC, CHÖÙC NAÊNG CAÙC CHAÂN CUÛA VI MAÏCH 8255A.
Sô ñoà chaân vaø sô ñoà logic cuûa vi maïch 8255A ñöôïc theå hieän qua hình veõ:
PA3
PA2
PA1
PA0
RD\
CS\
GND
A1
A0
PC7
PC6
PC5
PC4
PC0
PC1
PC2
PC3
PB0
PB1
PB2
PA4
PA5
PA6
PA7
WR\
RESET
D0
D1
D2
D3
D4
D5
D6
D7
Vcc
PB7
PB6
PB5
PB4
PB3
1
20
21
40
D0 – D7
PA0 – PA7
PB0 – PB7
PC0 – PC7
RD\
WR\
RESET
A0
A1
CS\
8255A
8255A
Hình 6.1 : Sô ñoà chaân vaø sô ñoà logic cuûa vi maïch 8255A
Trong ñoù:
	Chaân 1 ¸ 4, 37 ¸ 40 (PA0 – PA7): laø caùc ñöôøng xuaát nhaäp coù teân laø coång A.
Chaân 18 ¸ 25 (PB0 – PB7): laø caùc ñöôøng nhaäp xuaát coù teân coång B.
Chaân 10 ¸ 13, 14 ¸ 17 (PB0 – PB7): laø caùc ñöôøng nhaäp xuaát coù teân coång C.
Chaân 27 ¸ 34 (D0 – D7): laø caùc ñöôøng döõ lieäu (data) hoaït ñoäng hai chieàu, daãn tín hieäu ñieàu khieån töø vi xöû lyù ra caùc thieát bò beân ngoaøi ñoàng thôøi nhaän caùc döõ lieäu töø caùc thieát bò ñieàu khieån beân ngoaøi vaøo vi xöû lyù.
Chaân 35 (Reset input): ngoõ vaøo xoùa, chaân reset phaûi ñöôïc noái vôùi tín hieäu reset out cuûa vi xöû lyù ñeå khoâng laøm aûnh höôùng ñeán maïch ñieàu khieån. Khi reset, caùc coång cuûa 8255A laø caùc ngoõ vaøo, ñoàng thôøi taát caû caùc döõ lieäu treân thanh ghi beân trong 8255A ñeàu bò xoùa, 8255A trôû veà traïng thaùi ban ñaàu saên saøng laøm vieäc.
Chaân 6 (CS\): tín hieäu ngoõ vaøo chip select (CS\) ñöôïc ñieàu khieån bôûi vi xöû lyù, duøng ñeå löïa choïn 8255A laøm vieäc khi vi xöû lyù giao tieáp vôùi nhieàu thieát bò.
Chaân 5 (RD\): ngoõ vaøo ñoïc döõ lieäu (Read Input).
	Chaân 36 (WR\) : ngoõ vaøo ghi döõ lieäu (Write Input).
	Chaân 8,9 (A1, A0): ngoõ vaøo ñòa chæ (Address Input), duøng nhaän ñòa chæ vaøo ñeå löïa choïn thanh ghi vaø caùc coång.
Baûng ñòa chæ löïa choïn thanh ghi vaø caùc coång:
A1
A0
Coång vaø thanh ghi
0
0
Coång A
0
1
Coång B
1
0
Coång C
1
1
Thanh ghi ñieàu khieån
Chaân 26 (Vcc) : nguoàn 5 VDC.
Chaân 7 (GND) : GND 0 VDC.
III. CAÁU TRUÙC BEÂN TRONG VAØ HOAÏT ÑOÄNG CUÛA VI MAÏCH 8255A.
1. Sô ñoà khoái caáu truùc beân trong cuûa vi maïch 8255A.
Port A
Port C
(4 bit cao)
Nhoùm A
Port C
(4 bit thaáp)
Port B
Nhoùm B
Ñieàu khieån nhoùm A
Ñieàu khieån nhoùm B
Ñeäm bus döõ lieäu
Logic ñieàu khieån ghi/ñoïc
RD\
WR\
CS\
A0
A1
D7 – D0
PA7 – PA0
PC7 – PC4
PC3 – PC0
PB7 – PC0
Hình 6.2: Sô ñoà khoái caáu truùc beân trong cuûa 8255A
2. Hoaït ñoäng cuûa vi maïch 8255A:
Töø sô ñoà khoái caáu truùc beân trong cuûa vi maïch 8255A ta thaáy caùc coång cuûa 8255A ñöôïc chia thaønh 2 nhoùm:
	Nhoùm A goàm coång A vaø 4 bit cao cuûa coång C.
	Nhoùm B goàm coång B vaø 4 bit thaáp cuûa coång C.
	Caáu hình laøm vieäc cuûa 2 nhoùm seõ do noäi dung cuûa thanh ghi ñieàu khieån quyeát ñònh.
	Vi maïch 8255 giao tieáp vôùi vi xöû lyù thoâng qua caùc ñöôøng sau :
- Ñöôøng döõ lieäu: goàm 8 ñöôøng döõ lieäu (D0 - D7). Maõ leänh, caùc döõ lieäu ñeàu ñöôïc truyeàn ñi treân ñöôøng naøy.
- Ñöôøng ñòa chæ: goàm 2 ñöôøng (A0 – A1) duøng ñeå löïa choïn coång hoaëc thanh ghi ñieàu khieån nhö ñaõ trình baøy ôû phaàn tröôùc.
- Ñöôøng ñieàu khieån: goàm caùc ñöôøng RD\, WR\, CS\, Reset duøng ñeå ñieàu khieån vieäc hoaït ñoäng cuûa 8255A.
Ñeå söû duïng caùc coång laøm coâng cuï giao tieáp, ngöôøi söû duïng phaûi göûi töø ñieàu khieån ra thanh ghi ñieàu khieån ñeå 8255A ñònh caáu hình laøm vieäc cho caùc coång ñuùng nhö yeâu caàu cuûa ngöôøi laäp trình.
3. Töø ñieàu khieån:
Töø ñieàu khieån laø döõ lieäu ñöôïc gôûi tôùi thanh ghi ñieàu khieån. Giaù trò cuûa töø ñieàu khieån seõ xaùc ñònh caáu hình laøm vieäc cho caùc coång cuûa 8255A, ñoù laø vieäc löïa choïn chöùc naêng nhaäp hay xuaát cuûa caùc coång.
	a. Caáu truùc cuûa töø ñieàu khieån:
	Do caùc coång cuûa 8255A ñöôïc chia laøm hai nhoùm neân töø ñieàu khieån cuõng ñöôïc chia laøm hai nhoùm ñieàu khieån töông öùng.
	Caùc bit D3, D4, D5, D6 duøng ñeå xaùc ñònh caáu hình cho nhoùm A:
- Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa coång C.
D3 = 0 coång C laø coång xuaát döõ lieäu.
D3 = 1 coång C laø coång nhaäp döõ lieäu.
- Bit D4 duøng ñeå thieát laäp coång A.
D4 = 0 coång A laø coång xuaát döõ lieäu.
D4 = 1 coång A laø coång nhaäp döõ lieäu.
- Bit D5 vaø D6 duøng thieáp laäp mode ñieàu khieån cuûa nhoùm A.
D6D5 = 00 : nhoùm A hoaït ñoäng ôû mode 0.
D6D5 = 01 : nhoùm A hoaït ñoäng ôû mode 1.
D6D5 = 1x : nhoùm A hoaït ñoäng ôû mode 2.
Caùc bit D0, D1, D2 duøng ñeå xaùc ñònh caáu hình cho nhoùm B.
- Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa coång C.
D0 = 0 coång C laø coång xuaát döõ lieäu.
D0 = 1 coång C laø coång nhaäp döõ lieäu.
- Bit D1 duøng ñeå thieát laäp coång B.
D1 = 0 coång B laø coång xuaát döõ lieäu.
D1 = 1 coång B laø coång nhaäp döõ lieäu.
- Bit D2 duøng thieáp laäp mode ñieàu khieån cuûa nhoùm B.
D2 = 0 : nhoùm B hoaït ñoäng ôû mode 0.
D2 = 1 : nhoùm B hoaït ñoäng ôû mode 1.
D7
D6
D5
D4
D3
D2
D1
D0
Ñaët traïng thaùi côø.
1 = Active
Nhoùm B
Nhoùm A
Coång C (4 bit thaáp)
1 = Input
0 = Output
Coång B
1 = Input
0 = Output
Mode select
1 = mode 0
0 = mode 1
Coång C (4 bit cao)
1 = Input
0 = Output
Coång A
1 = Input
0 = Output
Mode select
00 = mode 0
01 = mode 1
1x = mode 2
Hình 6.3 : Caáu truùc töø ñieàu khieån cuûa vi maïch 8255A
b. Cô cheá hoaït ñoäng caùc coång cuûa 8255A ôû caùc traïng thaùi.
* Nhoùm A vaø Nhoùm B caáu hình ôû mode 0.
Khi ñöôïc ñònh ô caáu hình naøy, caùc coång cuûa hai nhoùm hoaït ñoäng xuaát hoaëc nhaäp döõ lieäu ñoäc laäp vôùi nhau.
Töø ñieàu khieån:
1
0
0
D4
D3
0
D1
D0
Vôùi D0, D1. D3, D4 tuøy choïn theo yeâu caàu cuûa ngöôøi söû duïng.
	* Nhoùm A ñöôïc caáu hình ôû mode 1.
ÔÛ mode 1, caùc coång laøm vieäc coù choát (Strobed I/O), thieát bò giao tieáp muoán 8255A nhaän döõ lieäu thì thieát bò ñoù phaûi taïo ra moät tín hieäu yeâu caàu 8255A nhaän döõ lieäu vaø ngöôïc laïi, 8255A muoán gôûi döõ lieäu cho moät thieát bò khaùc thì noù phaûi gôûi 1 tín hieäu yeâu caàu thieát bò ñoù nhaän döõ lieäu, tín hieäu ñoù goïi laø tín hieäu choát.
+ Khi coång A ñöôïc caáu hình laø coång nhaäp döõ lieäu, chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy nhö hình veõ:
RD\
PC4
PC5
PC3
PC6,7
PA0–PA7
INTEA
STBA\
IBFA
INTRA
I/O
Töø ñieàu khieån :
1
0
1
1
D3
x
x
x
Hình 6.4 : Chöùc naêng caùc ñöôøng tín hieäu khi coång A laø coång nhaäp döõ lieäu
Caùc ñöôøng tín hieäu cuûa coång C trôû thaønh caùc ñöôøng ñieàu khieån cuûa coång A.
	Trong ñoù :
	Bit INTEA (Interrupt Enable) ñöôïc thieát laäp möùc logic döôùi söï ñieàu khieån cuûa phaàn meàm duøng caáu truùc Set/Reset cuûa 8255A.
	Bit PC4 trôû thaønh bit STBA (Strobed Input, taùc ñoäng möùc thaáp), ñöôïc duøng ñeå choát caùc döõ lieäu ôû caùc ngoõ vaøo PA0 – PA7 vaøo maïch choát beân trong.
	Bit PC5 trôû thaønh bit IBFA (Input Buffer Full, taùc ñoäng möùc cao), duøng ñeå baùo cho beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát beân trong.
	Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng möùc cao), bit naøy coù möùc logic 1 khi bit STRA = 1, bit IBFA = 1 vaø bit INTEA = 1. Thoâng thöôøng bit naøy duøng ñeå taùc ñoäng vaøo ngoõ vaøo ngaét cuûa vi xöû lyù ñeå baùo cho vi xöû lyù bieát : döõ lieäu môùi ñaõ xuaát hieän ôû ngoõ vaøo.
	Caùc bit PC6, PC7 cuûa coång C laø caùc bit xuaát/ nhaäp bình thöôøng tuøy thuoäc vaøo töø ñieàu khieån trong thanh ghi ñieàu khieån. Coøn coång B ñöôïc ñieàu khieån baèng caùc bit D0 – D2 trong thanh ghi ñieàu khieån (neáu coång B hoaït ñoäng ôû mode 1 thì caùc bit PC0 – PC2 laø caùc bit ñieàu khieån).
+ Coång A ñöôïc caáu hình laø coång xuaát döõ lieäu.
Chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ:
WR\
PC7
PC6
PC3
PC4,5
PA0–PA7
INTEA
OBFA\
ACKA\
INTRA
I/O
Töø ñieàu khieån :
1
0
1
0
D3
X
x
x
Hình 6.5 : Chöùc naêng caùc ñöôøng tín hieäu khi coång A laø coång xuaát döõ lieäu
Bit PC7 trôû thaønh bit OBFA (Output Buffer Full, taùc ñoäng möùc thaáp), khi coù döõ lieäu töø vi xöû lyù gôûi ra coång A, tín hieåu OBF seõ yeâu caàu thieát bò beân ngoaøi nhaän döõ lieäu.
	Bit PC6 trôû thaønh bit ACKA (Acknowledge Input, taùc ñoäng möùc thaáp), thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát döõ lieäu ñaõ ñöôïc nhaän vaø saün saøng nhaän döõ lieäu môùi.
	Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng möùc cao), bit naøy coù möùc logic baèng 1 khi bit OBFA = 1, ACKA = 1 vaø bit INTEA = 1. Tín hieäu INTRA taùc ñoäng ñeán ngoõ vaøo ngaét cuûa vi xöû lyù ñeå baùo cho vi xöû lyù bieát thieát bò beân ngoaøi ñaõ nhaän döõ lieäu töø coång A.
	Caùc bit PC4, PC5 vaãn laø bit nhaäp/ xuaát döõ lieäu bình thöôøng tuøy thuoäc vaøo töø ñieàu khieån. Caùc bit D0 – D2 trong thanh ghi ñieàu khieån duøng ñeå thieát laäp caáu hình cho coång B.
	* Nhoùm B ñöôïc caáu hình ôû mode 1.
+ Coång B ñöôïc caáu hình laø coång nhaäp döõ lieäu.
Chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy nhö hình veõ:
RD\
PC2
PC1
PC0
PB0–PB7
INTEB
STBB\
IBFB
INTRB
Töø ñieàu khieån :
1
x
x
x
X
1
1
x
Hình 6.6 : Chöùc naêng caùc ñöôøng tín hieäu khi coång B laø coång nhaäp döõ lieäu
	Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö khi nhoùm A hoaït ñoäng ôû mode 1 vaø coång A ñöôïc caáu hình laø coång nhaäp döõ lieäu.
+ Coång B ñöôïc caáu hình laø coång xuaát döõ lieäu.
Chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy nhö hình veõ :
WR\
PC1
PC2
PC0
PB0–PB7
INTEB
OBFB\
ACKB\
INTRB
Töø ñieàu khieån:
1
x
X
x
x
1
0
x
Hình 6.7 : Chöùc naêng caùc ñöôøng tín hieäu khi coång B laø coång xuaát döõ lieäu
Chöùc naêng cuûa caùc töø ñieàu khieån gioáng nhö khi nhoùm A hoaït ñoäng ôû mode 1 vaø coång A ñöôïc caáu hình laø coång xuaát döõ lieäu.
* Nhoùm A ñöôïc caáu hình ôû mode 2.
Mode 2 laø kieåu hoaït ñoäng strobed bi-directional IO : coù hai chöùc naêng nhaäp xuaát döõ lieäu. 
	Töø ñieàu khieån khi nhoùm A ñöôïc caáu hình ôû mode 2 vaø chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ:
Töø ñieàu khieån :
WR\
PA0–PA7
OBFA\
ACKA\
PC3
PC7
PC6
PC4
PC5
STBA\
IBFA
RD\
INTE1
INTE2
PC2,1,0
I/O
INTEA
1
0
1
1
D3
x
x
x
Hình 6.8: Chöùc naêng caùc ñöôøng tín hieäu khi nhoùm A hoaït ñoäng ôû mode 2
	Caùc ñöôøng tín hieäu cuûa coång C trôû thaønh caùc ñöôøng ñieàu khieån cuûa coång A.
	Bit PC7 trôû thaønh bit OBFA, PC6 trôû thaønh bit ACKA, PC4 trôû thaønh bit STBA, PC5 trôû thaønh bit IBFA vaø bit PC3 trôû thaønh bit INTRA, chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö ôû mode 1, chæ khaùc tín hieäu INTRA = 1 khi OBFA = 1 vaø INTE1 = 1 hoaëc IBFA = 1 vaø INTE2 = 1.
	Caùc bit PC0 – PC2 laø caùc bit nhaäp xuaát döõ lieäu bình thöôøng tuøy thuoäc vaøo töø ñieàu khieån trong thanh ghi ñieàu khieån.
	Moät chuù yù caàn thieát laø khi nhoùm A ñöôïc caáu hình ôû mode 2 thì nhoùm B chæ ñöôïc caáu hình ôû mode 0.
IV. GIAO TIEÁP GIÖÕA VI XÖÛ LYÙ VÔÙI 8255A:
DECODER
2 TO 4 LINE
ñeán CS\ cuûa 8255A -1
ñeán CS\ cuûa 8255A -2
ñeán CS\ cuûa 8255A -3
ñeán CS\ cuûa 8255A -4
A2
A3
	Vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù theo 2 kieåu: kieåu nhaäp/xuaát (kieåu I/O) vaø kieåu boä nhôù.
	Khi vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O noù chæ duøng ñöôïc 8 ñöôøng ñòa chæ töø A0 – A7 maø thoâi coøn khi giao tieáp kieåu boä nhôù, noù duøng ñöôïc caû 16 ñöôøng ñòa chæ, vì vaäy dung löôïng giao tieáp kieåu I/O thaáp hôn dung löôïng giao tieáp kieåu boä nhôù.
1. Giao tieáp kieåu I/O.
	Khi thieát keá vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O thì döõ lieäu seõ ñöôïc truy xuaát baèng 2 leänh : IN addr-port vaø OUT addr-port. Döõ lieäu giao tieáp luoân chöùa trong thanh ghi A. Ñòa chæ coång (addr-port) coù ñoä daøi laø 8 bit.
	Cuõng gioáng nhö boä nhôù, vi xöû lyù coù theå giao tieáp vôùi nhieàu vi maïch 8255, vôùi 8 ñöôøng ñòa chæ thì coù taát caû 256 ñòa chæ, maø moãi vi maïch chieám 4 ñòa chæ (3 coång vaø thanh ghi ñieàu khieån) neân soá vi maïch 8255 toái ña coù theå giao tieáp cuûa vi xöû lyù laø 256/4 = 64 vi maïch.
	Khi keát noái giöõa vi xöû lyù vôùi vi maïch 8255A thì ñöôøng ñòa chæ A0 vaø A1 duøng ñeå löïa choïn caùc coång vaø thanh ghi ñieàu khieån, coøn caùc ñöôøng ñòa chæ coøn laïi töø A2 – A7 duøng ñeå löïa choïn vi maïch hoaït ñoäng, thoâng thöôøng caùc ñöôøng ñòa chæ naøy ñöôïc ñöa vaøo vi maïch giaûi maõ roài caùc ngoõ ra cuûa vi maïch giaûi maõ seõ ñöa ñeán CS\ cuûa caùc vi maïch 8255A.
	Moät ví duï khi thieát keá vi xöû lyù giao tieáp vôùi 4 vi maïch 8255A:
	Sô ñoà keát noái nhö hình veõ : (vi maïch 74139).
DECODER
2 TO 4 LINE
ñeán CS\ cuûa 8255A -1
ñeán CS\ cuûa 8255A -2
ñeán CS\ cuûa 8255A -3
ñeán CS\ cuûa 8255A -4
A2
A3
Hình 6.9: Sô ñoà keát noái vi xöû lyù vôùi vi maïch 8255A
	Trong ñoù, ñöôøng A0 vaø A1 ñöôïc noái vôùi 8255A nhö ñaõ trình baøy ôû treân, ñöôøng A2, A3 ñöôïc ñöa vaøo vi maïch giaûi maõ 2 ñöôøng thaønh 4 ñöôøng ñeå löïa choïn vi maïch 8255A.
	Töø ñoù, ta coù baûng ñòa chæ cuûa caùc vi maïch 8255A nhö sau :
IC
A7
A6
A5
A4
A3
A2
A1
A0
Hex
8255A-1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
00
03
8255A-2
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
04
07
8255A-3
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
1
08
0B
8255A-4
0
0
0
0
0
0
0
0
1
1
1
1
0
1
0
1
0C
0F
2. Giao tieáp kieåu boä nhôù.
	Khi thieát keá 8255A giao tieáp vôùi vi xöû lyù theo kieåu boä nhôù thì chöùc naêng cuûa 8255A khoâng thay ñoåi, chæ thay ñoåi kieåu truy xuaát. Vôùi kieåu I/O thì ñòa chæ cuûa caùc coång vaø thanh ghi ñieàu khieån laø 8 bit thì ôû kieåu boä nhôù, ñòa chæ cuûa caùc coång vaø thanh ghi ñieàu khieån laø 16 bit, khi ñoù caùch keát noái cuõng töông töï nhö keát noái vi xöû lyù vôùi boä nhôù thoâng thöôøng, vaø moãi vi maïch 8255A cuõng ñöôïc coi nhö laø boä nhôù vôùi 4 oâ nhôù: 3 coång vaø thanh ghi ñieàu khieån, truy xuaát döõ lieäu baèng caùch duøng caùc leänh truy xuaát döõ lieäu cuûa boä nhôù.
	Caùch keát noái töông töï nhö khi vi xöû lyù keát noái vôùi boä nhôù neân ôû ñaây khoâng caàn trình baøy laïi.
CHÖÔNG VII: PHAÀN CÖÙNG VAØ PHAÀN MEÀM GIAO TIEÁP
LÖU ÑOÀ VAØ CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU
LÖU ÑOÀ 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
GHI SOÁ LIEÄU RA THANH GHI ÑEÄM SOÁ LIEÄU
GHI LEÄNH PHAÙT: RTS
END
HÌNH 7.1
Kieåm tra saün saøng:
DSR = TxRDY =1
LÖU ÑOÀ NHAÄN DÖÕ LIEÄU:
BEGIN
KHÔÛI PHAÙT: GHI TÖØ CHEÁ ÑOÄ
GHI LEÄNH : 
DTR, A{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
HÌNH 7.2
CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU
;xxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
org 6200h
delay:	mvi b,3
x0:	dcr b
jnz X0
ret
;xxxxxxxxxxxxxxxxxxxxx
;chuong trinh truyen du lieu
org 4100h
mvi a,00h	;xoa reg lenh
out 01h
call delay
out 01h
call delay
out 01h
call delay
mvi a,40h	;xoa cac thanh ghi noi
out 01h
call delay
mvi a,0ceh	;goi tu dk che do
out 01h
call delay
lxi d,6500h
mvi a,03h	;goi tu lenh
out 01h
call delay
x1:	in 01	;doc tg trang thai
ani 10000001b	;giu MSB va LSB
cpi 81h
jnz x1
ldax d
mov l,a
out 00h ;doc byte dia chi de truyen
call delay
mvi a,21h	 ;goi tu lenh de truyen di
out 01
call delay
inr e
mvi a,03h
out 01h
call delay
x2:	in 01h
ani 81h
cpi 81h
jnz x2
ldax d
mov h,a
out 00h
call delay
mvi a,21h
out 01h
call delay
inr e
mvi a,03h
out 01h
call delay
x13:	in 01h
ani 81h
cpi 81h
jnz x13
ldax d
mov c,a
out 00
call delay
mvi a,21h
out 01h
call delay
x4:	mvi a,03h
out 01h
call delay
x3:	in 01h
ani 81h
cpi 81h
jnz x3
mov a,m ;truyen du lieu
out 00h
call delay
mvi a,21h
out 01h
call delay
inr l
dcr c
jnz x4
;hien chu E de biet cham dut
lxi h,0a000h
mvi m,79h
hlt
CHÖÔNG TRÌNH NHAÄN DÖÕ LIEÄU:
;x-chuong trinh nhan du lieu-x
org 4300h
mvi a,00h ; xoa cac thanh ghi
out 01h
call delay
out 01h
call delay
out 01h
call delay
mvi a,40h ;xoa cac thanh ghi noi
out 01h
call delay
mvi a,0ceh ;nap tu che do
out 01h
call delay
mvi a,26h ;nap tu lenh
out 01h
call delay
y5:	in 01h
ani 82h
cpi 82h
jnz y5
in 00h ;cat byte dia chi thap
mov e,a
mov l,a
y6:	in 01h
ani 82h
cpi 82h
jnz y6
in 00h ;cat byte dia chi cao
mov d,a
mov h,a
y7:	in 01h
ani 82h
cpi 82h
jnz y7
in 00h
mov c,a
y8: in 01h
ani 81h
cpi 81h
jnz y8
in 00h ;nap du lieu vao o nho
stax d
inr e
dcr c
jnz y8
pchl
end
II. THIEÁT KEÁ VAØ THI COÂNG PHAÀN GIAO TIEÁP:
GIÔÙI THIEÄU VI MAÏCH MAX 232:
Vi maïch MAX 232 chuyeån ñoåi möùc TTL ôû ngoõ vaøo thaø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 7.3 moâ taû caùch saép xeáp chaân vaø sô ñoà caáu truùc cuûa vi maïch MAX 232.
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
C1+
V+
C1-
C2+
C2-
V-
T2OUT
R2IN
Vcc
GND
T1OUT
R1IN
R1OUT 
T1IN
T2IN
R2OUT
HÌNH 7.3
Ñöôøng daãn TxD daãn tröï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.
SÔ ÑOÀ MAÏCH KEÁT NOÁI:
Vì söû duïng kit 8085 ñaõ coù neân keát noái caùc ñöôøng data cuûa 8255 cuûa kit vôùi 8251 cuûa board giao tieáp.
Sô ñoà keát noái nhö sau:
HÌNH 7.4
SÔ DOÀ MAÏCH IN: Goàm hai maët :maët treân vaø maët döôùi.
Board maïch cuï theå nhö sau:
MAËT DÖÔÙI
MAËT TREÂN
Keát luaän
Qua thôøi gian thöïc hieän, döôùi söï höôùng daãn taän tình cuûa Thaày Nguyeãn Ñình Phuù cuøng söï giuùp ñôõ raát nhieàu cuûa quyù thaày coâ trong khoa, em ñaõ coá gaéng hoaøn thaønh luaän vaên ñuùng theo yeâu caàu vaø thôøi gian quy ñònh. Trong luaän vaên chuùng em ñaõ thöïc hieän ñöôïc nhöõng coâng vieäc sau:
 Khaûo saùt phaàn lyù thuyeát:
- Giôùi thieäu vi xöû lyù.
- Giôùi thieäu caùch giao tieáp.
- khaûo saùt kit vi xöû lyù 8085. 
Thi coâng maïch ñieän cho phaàn giao tieáp. 
Maëc duø ñaõ raát coá gaéng, nhöng do kieán thöùc vaø thôøi gian coù haïn neân coù nhöõng phaàn chuùng em chöa laøm ñöôïc nhö: phaàn giao dieän maøn hình. Vaø em seõ khoâng traùnh khoûi nhöõng ñieàu thieáu soùt, nhaàm laãn khaùc, kính mong quyù thaày coâ thoâng caûm boû qua.
Ngöôøi thöïc hieän mong moûi caùc baïn sinh vieân khoa ñieän ôû nhöõng khoùa sau boå xung cho luaän vaên naøy hoaøn chænh hôn.
	Sinh vieân thöïc hieän
	Nguyeãn Trung Duõng	 
HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI
	Ngaøy nay vôùi söï phaùt trieån nhanh choùng cuûa khoa hoïc kyõ thaät vaø ñaát nöôùc ta ñang chuyeån mình sang neàn saûn xuaát coâng nghieäp. Do ñoù, ñeå ñaùp öùng vôùi nhu caàu thöïc teá thì chuùng ta caàn phaûi nghieân cöùu theâm caùc loaïi giao dieän noái tieáp khaùc ñeå taêng theâm ñöôïc khoaûng caùch vaø toác ñoä truyeàn. Ngoaøi ra, coøn coù theå döïa treân taäp luaän aùn naøy ñeå vieát theâm nhieàu chöông trình khaùc coù theå öùng duïng trong thöïc teá vaø caûi tieán laïi chöông trình naøy ñeå tieän lôïi cho ngöôøi söû duïng … 
Sinh vieân thöïc hieän
 Nguyeãn Trung Duõng
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
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 IBM MICROCOMPUTERS
Julio Sanches _ Prentice Hall _ 1990
MICROCOMPUTER INTERFACING
 Bruce A.Artwick _ Prentice Hall _ 1980
PHUÏ LUÏC
CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU CUÛA 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	;imput 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
	RET
	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
MUÏC LUÏC
 Trang
Lôøi caûm taï
Lôøi noùi ñaàu
 PHAÀN GIÔÙI THIEÄU CHUNG
CHÖÔNG CÔ SÔÛ LYÙ LUAÄN
Chöông I: CAÁU TRUÙC VI XÖÛ LYÙ 8085
I. Caáu Truùc Beân Trong Cuûa Vi Xöû Lyù 8085	
II. Sô Ñoà Caáu Truùc Beân Ngoaøi Vaø Chöù Naêng Caùc Chaân Cuûa
 Vi Xöû Lyù 8085	
III. Boä Nhôù 	
IV. Keát Noái Boä Nhôù Vôùi Vi Xöû Lyù	
V. Vaán Ñeà Giaûi Maõ Cho Boä Nhôù	
Chöông II: GIÔÙI THIEÄU TAÄP LEÄNH CUÛA VI XÖÛ LYÙ 8085	
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 Coång Slot Card	
II. 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 	
 2. Söï Trao Ñoåi Cuûa Caùc Ñöôøng Tín Hieäu	
Chöông IV: GIÔÙI THIEÄU HEÄ THOÁNG KIT 8085
 1. Taàn Soá Laøm Taàn Soá Laøm Vieäc	
 2. Toå Chöùc Boä Nhôù 	
 3. Caùc IC Ngoaïi Vi	
 4. Khoái Giaûi Maõ Hieån Thò Söû Duïng IC 8279 	
 5. Khoái Giaøi Maõ Baøn Phím	
 PHAÀN GIAO TIEÁP
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	
II. Vi Maïch Usart 8251	
 1. Sô Ñoà Chaân Vaø Sô Ñoà Khoái	
 2. Caùc Thanh Ghi	
III. Öùng Duïng Cuûa 8251 Ñeå Truyeàn Thoâng Tin Noái Tieáp
 1. Truyeàn Thoâng Tin Noái Tieáp Giöõa Hai Kit Vi Xöû Lyù	
 2. Truyeàn Thoâng Tin Noái Tieáp Giöõa Vi Xöû Lyù Vaø Maùy Tính	
Chöông VI: Giao Tieáp Song Song Duøng Vi Maïch 8255
I. Giôiù Thieäu Veà Vi Maïch 8255	
II. Sô Ñoà Chaân, Sô Ñoà Logic, Chöùc Naêng Caùc Chaân Cuûa Vi Maïch 8255	
III. Caáu Truùc Beân Trong vaø Hoaït Ñoäng Cuûa Vi Maïch 8255	
 1. Sô Ñoà Khoái, Caáu Truùc Beân Trong Cuûa Vi Maïch 8255	
 2.Hoaït Ñoäng Cuûa Vi Maïch 8255	
 3. Töø Ñieàu Khieån	
IV. Giao Tieáp Giöõa Vi Xöû Lyù Vôùi 8255	
 1. Giao Tieáp Kieåu I/O	
 2. Giao Tieáp Kieåu Boä Nhôù	
Chöông VII. Phaàn Cöùng Vaø Phaàn Meàm Giao Tieáp
I. Löu Ñoà Vaø Chöông Trình Truyeàn- Nhaän Döõ Lieäu
 1. Löu Ñoà Truyeàn Döõ Lieäu	
 2. Löu Ñoà Nhaän Döõ Lieäu	
 3. Chöông Trình Truyeàn Döõ Lieäu	
 4. Löu Ñoà Nhaän Döõ Lieäu	
II. Thieát Keá Vaø Thi Coâng Phaàn Giao Tieáp
 1. Giôùi Thieäu Veà Vi Maïch Max 232	
 2. Sô Ñoà Maïch Keát Noái	
 3. Sô Ñoà Maïch In	
 PHAÀN TOÅNG KEÁT
 Phuï Luïc
 Höôùng Phaùt Trieån Ñeà Taøi
 Keát Luaän
Taøi Lieäu Tham Khaûo
 Muïc Luïc
            Các file đính kèm theo tài liệu này:
 Giao tiếp máy tính với kit vi xử ly 8085.DOC Giao tiếp máy tính với kit vi xử ly 8085.DOC