You are on page 1of 93

1/Chapter4

© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ

Các bước làm:


 B1: Phân tích
 Từ dữ liệu của bài toán tính toán số đường tính hiệu địa chỉ và số
đường tín hiệu dữ liệu của Ic nhớ, của 8086 hoặc 8086.
 Từ yêu cầu ( dung lượng bộ nhớ hoặc địa chỉ bắt đầu của không gian
nhớ) tính số IC nhớ cần dùng. Số IC nhớ bank cao, bank thấp tương
ứng (8086).
 Liệt kê dải địa chỉ của từng IC nhớ.
 B2: Giải mã địa chỉ cho Ic nhớ
 Dùng cổng NAND
 Dùng bộ giải mã 74LS138, 74LS139
 B3: Vẽ mạch
2/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0


3/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng cổng NAND
A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0
• FF800: 1111 1111 1000 0000 0000
1111 1111 1xxx xxxx xxxx
• FFFFF: 1111 1111 1111 1111 1111

A19
A18 8088 A
A17 A0-A10 8088 D
Bus
A16 D0-D7 Bus
A15
A14
CS OE
A13
A12
A11
RD
IO/M
4/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

IC 1

IC 2

IC 3
...
...
IC 8
5/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ
• Dùng
U1 bộ giải mã 3-8 74LS138
1 15 C B A G2B G2A G1 y0 y1 y2 y3 y4 y5 y6 y7
2 A Y0 14 x x x 1 x x 1 1 1 1 1 1 1 1
3 B Y1 13 x x x x 1 x 1 1 1 1 1 1 1 1
C Y2 12
Y3 x x x x x 0 1 1 1 1 1 1 1 1
6 11
4 G1 Y4 10 0 0 0 0 0 1 0 1 1 1 1 1 1 1
5 G2A Y5 9 0 0 1 0 0 1 1 0 1 1 1 1 1 1
G2B Y6 7 0 1 0 0 0 1 1 1 0 1 1 1 1 1
Y7
0 1 1 0 0 1 1 1 1 0 1 1 1 1
1 0 0 0 0 1 1 1 1 1 0 1 1 1
74LS138
1 0 1 0 0 1 1 1 1 1 1 0 1 1
1 1 0 0 0 1 1 1 1 1 1 1 0 1
1 1 1 0 0 1 1 1 1 1 1 1 1 0
6/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ
• Dùng bộ giải mã 3-8 74LS138

A0-A12 A0-A12
A0-A10
D0-D7 D0-D7
A0-A10
2764
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
2764
A0-A10
OE D0-D7
A13 1 15 2764
A0-A10
CS OE D0-D7
2 A Y0 14 A0-A10
A14 B Y1 2764
CS OE D0-D7
A0-A10
3 13 2764
CS OE D0-D7
A15 C Y2 12 2764
CS OE D0-D7
Y3
A16
6
G1 Y4
11 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9 CS
G2B Y6 7
A17 CS
Y7
A18
A19 74LS138
7/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ
• Dùng bộ giải mã kép 2-4 74LS139

1A 1Y0
1B 1Y1
1Y2
1G 1Y3

2A 2Y0
2B 2Y1
2Y2
2G 2Y3

• Ví dụ: Dùng EPROM 27128 (16K*8) để ghép thành bộ nhớ


64 K cho 8088 bắt đầu từ địa chỉ F0000H
8/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ

A19A18A17A16 A15A14 A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

IC 1

IC 2

IC 3

IC 4
9/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ
Dùng bộ giải mã 2-4 74LS13

A0-A13 A0-A13
D0-D7 A0-A12
D0-D7
IC1
A0-A12
D0-D7
RD OE
27128
A0-A12
D0-D7
A14 OE
CS 27128
D0-D7
A15 OE
CS 27128
OE
CS
CS
A16
A17
A18
A19
IO/M
10/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ
Ghép nối 8088/8086 với bộ nhớ
 Ghép nối 8088 với ROM
 Ghép nối 8088 với SRAM
 Ghép nối 8088 với DRAM
11/Chapter4
© DHBK 2005

Ghép nối 8088 với vi mạch nhớ


• Nguyên tắc:
 Ghép trực tiếp:
 Thời gian truy cập bộ nhớ của CPU > thời gian truy cập của bộ nhớ +
thời gian giải mã địa chỉ
 Ghép có chèn thêm thời gian đợi của CPU
 Thời gian truy cập bộ nhớ của CPU < thời gian truy cập của bộ nhớ +
thời gian giải mã địa chỉ
12/Chapter4
© DHBK 2005
Ghép nối 8088 với bộ nhớ
ROM
• Ví dụ 4 : ghép nối 8088 với EPROM 2732-450 ns

A0-A11 A0-A11
A0-A10
D0-D7 D0-D7
A0-A10
2732
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
2764
A0-A10
OE D0-D7
A12 1 15 F8000-F8FFF 2764
A0-A10
CS OE D0-D7
2 A Y0 14 F9000- A0-A10
A13 B Y1 F9FFF 2764
CS OE D0-D7
A0-A10
3 13 2764
CS OE D0-D7
A14 C Y2 12 2764
CS OE D0-D7
6 Y3 11
A15 G1 Y4 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9
G2B Y6 CS
A16 7 FF000-FFFFF
Y7 CS
A17
A18 Bộ tạo Tw
74LS138
A19
Tới chân RDY1 của 8284
13/Chapter4
© DHBK 2005
Ghép nối 8088 với bộ nhớ
SRAM
• Ví dụ 5: ghép nối 8088 với SRAM 62256 (32K*8) để được bộ
nhớ 256 KB, bắt đầu từ địa chỉ 00000H
• Số ô nhớ = cuối – đầu +1
A0-A14 A0-A14
A0-A10
D0-D7 D0-D7
A0-A10
62256
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
WR WE 2764
A0-A10
OE D0-D7
A15 1 15 00000-07FFF 2764
A0-A10
CS OE D0-D7
2 A Y0 14 A0-A10
A16 B Y1
08000-0FFFF 2764
CS OE D0-D7
A0-A10
3 13 10000-17FFF 2764
CS OE D0-D7
A17 C Y2 12 2764
CS OE D0-D7
Y3
A18 6
G1 Y4
11 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9
G2B Y6 CS
7 38000-3FFFF CS
Y7
A19
74LS138
14/Chapter4
© DHBK 2005
Ghép nối 8088 với bộ nhớ
DRAM
• Cần có DRAM controller:
 Dồn kênh 2 loại tín hiệu địa chỉ cho mỗi mạch nhớ và cung cấp
xung cho phép chốt địa chỉ RAS và CAS
 Cung cấp tín hiệu việc ghi đọc bộ nhớ
 Làm tươi bộ nhớ trong thời gian thích hợp
 Đảm bảo không có xung đột trong hoạt động ghi đọc với công việc
làm tươi
15/Chapter4
© DHBK 2005
Ghép nối 8088 với bộ nhớ
DRAM
• Ví dụ 6: ghép 8088 với TMS 4464 (64K*4) DRAM để được
bộ nhớ 128 KB, bắt đầu tại địa chỉ 00000H

A0-A7
RA0-RA7
MA0-MA7 A0-A7

A8-A15 CA0-CA7 2x4464


RAS0 RAS
ALE ALE
CAS CAS
A16 REN1
RD ACR TMS 4500A
WR ACW
A0-A7
RDY RDY
RAS1
2x4464
CLK CLK RAS
A17
A18 CAS
A19 CS
IO/M
16/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


FFFFF FFFFE
FFFFD 8088 8086
FFFFC
FFFFB FFFFA
8 bit 16 bit
IO/M M/IO
BHE

00005 00004
00003 00002
BHE A0 Chức năng
00001 00000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
0 0 chọn cả 2 bank

0 1 chọn bank cao

1 0 chọn bank thấp

1 1 không chọn bank nào


17/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


• Ví dụ 7: Ghép EPROM 2716 (2K * 8) với 8086 để được vùng
bộ nhớ FF000H-FFFFFH

 FFFFFH - FF000H + 1 = 1000H ô nhớ = 4K ô nhớ


 Cần 2 IC vì 4KB=2*2KB => có 2 Ic

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• FF000: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Bank thấp
• FFFFE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

• FF001: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Bank cao
18/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


A19
A18
A17 A1-A11 A0-A10
D0-D7 D0-D7
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
A0
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
BHE
19/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


BHE
HRD
RD A1-A11 A0-A10
D0-D7 D0-D7
A0 LRD 2716

CS OE

LRD
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO HRD
20/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


21/Chapter4
© DHBK 2005
Dạng 1: Ghép nối 8086/8088
với vi mạch nhớ

Giải mã địa chỉ


A19A18 A17 A16 A15 A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0
IC 1
•00000 : 00 0 0 0000 0000 0000 000 0
•0FFFE:
... 00 0 0 1111 1111 1111 111 0

...

•30000 : 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 2
•3FFFE: 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

•00001 : 00 00 0 000 0000 0000 000 1 IC 5


...
•0FFFF: 00 00 1 111 1111 1111 111 1
...

•30001 : 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 IC 8
•3FFFF: 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
22/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ

Dải địa chỉ:


IC 1 : 00000 - 0FFFE IC5: 00001 – 0FFFF
IC 2 : 10000 - 1FFFE IC6: 10001 – 1FFFF
IC 3 : 20000 – 2FFFE IC7: 20001 – 2FFFF
IC 4 : 30000 - 3FFFE IC8: 30001 – 3FFFF

BHE BHE
HWR HRD
WR RD

A0 LWR A0 LRD
23/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


Dùng bộ giải mã 2-4 74LS139

A1-A15 A0-A14
D0-D7 A0-A12
D0-D7
LRD IC1
A0-A12
OE D0-D7
LWR WE 27128 A0-A12
D0-D7
OE
CS 27128
D0-D7
A16 CS
OE
27128
A17 CS
OE

CS

A18 A1-A15 A0-A14


D8-D15 A0-A12
D0-D7
HRD IC5
A0-A12
OE D0-D7
A19
HWR WE 27128 A0-A12
D0-D7
OE
CS 27128
D0-D7
M/IO OE
CS 27128
OE
CS
CS
24/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


25/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ

Ví dụ 9:
Giải mã địa chỉ
SRAM 82256: 00000H- 1FFFFH
A19A18 A17 A16 A15 A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

•00000 : IC 1
00 0 0 0000 0000 0000 000 0
•0FFFE: 00 0 0 1111 1111 1111 111 0

•10000 : 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
IC 2
•1FFFE: 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

•00001 : 00 00 0 000 0000 0000 000 1


IC 3
•0FFFF: 00 00 1 111 1111 1111 111 1

•10001 : 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 IC 4
•1FFFF: 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
26/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ

Ví dụ 9:
Giải mã địa chỉ
EPROM 27128 :F0000H - FFFFFH
A19A18 A17 A16 A15 A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

•F0000 : IC 5
11 1 10 000 0000 0000 000 0
•F7FFE: 11 1 10 111 1111 1111 111 0

•F8000 : 11 1 11 000 0000 0000 000 0


IC 6
•FFFFE: 11 1 11 111 1111 1111 111 0

•F0001 : 111 10 000 0000 0000 000 1


IC 7
•F8FFF: 111 10 111 1111 1111 111 1

•F8001 : 111 11 000 0000 0000 000 1 IC 8


•FFFFF: 111 11 111 1111 1111 111 1
27/Chapter4
© DHBK 2005

Ghép nối 8086 với bộ nhớ


A1-A15 A0-A14
Dùng bộ giải mã 2-4 74LS139 D0-D7 A0-A12
D0-D7
LRD IC1
A0-A12
OED0-D7
LWR
2712
WE D0-D7
CS OE
CS OE

A1-A15 A0-A14
D8-D15 A0-A12
D0-D7
LRD IC3
A16 A0-A12
OED0-D7
LWR
2712
WE D0-D7
A17 CS OE
CS OE
A18
A19 A1-A14 A0-A13

M\IO D8-D14 A0-A12


D0-D7
LRD IC7
A15 A0-A12
OED0-D7
2712
D0-D7
A16 CS OE
A17 CS OE
A18
A19
A1-A14 A0-A13
D8-D15 A0-A12
D0-D7
M\IO
LRD IC7
A0-A12
OED0-D7
2712
D0-D7
CS OE
CS OE
28/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
29/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8254
4.4.6 Giao tiếp truyền thông lập 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
30/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
FFFF Địa chỉ: 0000H-FFFFH
M/IO=0
Vùng mở rộng

03FF Vào ra dữ liệu bằng lệnh IN, OUT


COM1
03F8
03F0
Điều khiển đĩa mềm Ví dụ:
CGA adapter IN AX, 00H
03D0
LPT1 IN AL, F0H
0378 IN AX, DX
Điều khiển ổ cứng
0320
COM2
02F8
8255
OUT 00H, AX
0060
Định thời (8253)
OUT F0H, AL
0040 OUT DX, AX
Điều khiển ngắt
0020
0000 Điều khiển DMA
31/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
32/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào/ra có cùng không gian địa chỉ với bộ nhớ
FFFFF

M/IO = 1 (8086)
IO/M = 0 (8088)
Vào ra dữ liệu bằng bất kỳ lệnh
di chuyển dữ liệu nào giữa
I/O CPU và bộ nhớ

Ví dụ:
MOV AX, [0FF3H]

00000

Memory + I/O
33/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Ví dụ cổng vào đơn giản:
VCC

8
7
6
5
4
3
2
1
10K

11
10

12
13
14
15
16
9

U1

2 18
4 A1 Y1 16
6 A2 Y2 14
8 A3
A4
Y3
Y4
12 Tới bus dữ liệu
11 9
13 A5
A6
Y5
Y6
7 của CPU
15 5
17 A7 Y7 3
A8 Y8
1
19 1OE
2OE

74ALS244
SEL

Từ giải mã địa chỉ cổng


34/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Ví dụ cổng ra đơn giản:
VCC

330

U2

3 2
4 D0 Q0 5
7 D1 Q1 6
Từ bus dữ liệu 8 D2
D3
Q2
Q3
9
13 12
của CPU 14 D4 Q4 15
17 D5 Q5 16
18 D6 Q6 19
D7 Q7
11
CLK
1
OE

74ALS374
SEL
Từ giải mã địa chỉ cổng
35/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
36/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• 8 bit địa chỉ hay 16 bit?
 Tổng số thiết bị < 256: 8 bit A0-A7: 00H-FFH
 Tổng số thiết bị >256: 16 bit A0-A15: 0000H-FFFFH
• 8 bit dữ liệu hay 16 bit?
 Nếu cổng là 8 bit: chọn 1 trong 2 bank
 Nếu cổng là 16 bit: chọn cả 2 bank

BHE A0
FFFF FFFE
FFFD FFFC
FFFB FFFA

D8-D15 D0-D7

0005 0004
0003 0002
0001 0000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
37/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 8 bit với địa chỉ 07H
 07H= 0000 0111

A0 A0
A1 D0-D7 D8-D15
A1
A2 D0-D7 A2 D0-D7
A3 A3
A4 A4
CS WE CS WE
A5 A5
A6 A6
A7 A7
WR WR
IO/M M/IO
BHE
8088 8086
38/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 16 bit với địa chỉ cổng
64H và 65H
 64H= 0110 0100
 65H= 0110 0101
D8-D15 D8-D15

CS WE
A1
A2
A3 WR
A4
A5
A6 D7-D0 D0-D7
A7
M/IO CS WE
39/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho các cổng vào ra 8 bit ở bank
thấp với các địa chỉ 10H, 12H, 14H, 16H, 18H, 1AH, 1CH,
1EH
 10H=0001 0000
 12H=0001 0010
 ....
 1EH=0001 1110 U1

A1 1 15 10H
2 A Y0 14 12H
A2 3 B Y1 13 14H
A3 C Y2 12 16H
6 Y3 11 18H
A0 G1 Y4 1AH
4 10
M/IO 5 G2A Y5 9 1CH
A4 G2B Y6 7 1EH
A5 Y7
A6
A7 74LS138
40/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.3.1 Cấu trúc của 8255A
4.4.3.2 Các chế độ làm việc của 8255A
4.4.3.3 Lập trình cho 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông lập trình được 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
41/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


• Giao tiếp các thiết bị tương thích TTL với vi xử lý
• Thường được dùng để giao tiếp bàn phím và máy in trong
các may tính PC (dưới dạng là một khối trong chíp tích
hợp)
• Cần chèn trạng thái đợi khi làm việc với vi xử lý >8 Mhz
• Có 24 đường vào ra và có 3 chế độ làm việc
• Trong các máy PC, địa chỉ cổng của 8255 là 60H-63H
42/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


43/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


44/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A

RD
WR
45/Chapter4
© DHBK 2005

4.4.3.2 Các chế độ làm việc của 8255A


46/Chapter4
© DHBK 2005

4.4.3.2 Các chế độ làm việc của 8255A


• Chế độ 0: Chế độ vào ra đơn giản: các cổng có thể làm
việc như là cổng vào có đệm hoặc cổng ra có chốt đệm.
• Chế độ 1: Chế độ này cho phép cổng A và B làm việc như
các thiết bị vào hoặc ra có tín hiệu móc nối (handshaking)
do các bit tương ứng của cổng C trong cùng nhóm đảm
nhiệm
• Chế độ 2: chế độ này cho phép cổng A làm việc 2 chiều với
các tín hiệu móc nối do cổng PCH đảm nhiệm. Cổng B có
thể làm việc ở chế độ 0
47/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0

RD
WR
48/Chapter4
© DHBK 2005 ; Lập trình cho 8255
MOV AL, 10000000B ; Port A, Port B mode 0, output
MOV
OUT
DX, 703H
DX, AL
Chế độ 0
; Thủ tục hiển thị LED từ dữ liệu chứa trong bộ nhớ
DISP PROC NEAR
Giả thiết PUSHF ; cất các thanh ghi vào ngăn xếp

địa chỉ PUSH


PUSH
AX
BX
của các PUSH
PUSH
DX
SI
cổng ; Thiết lập các thanh ghi để hiển thị
MOV BX, 8 ;số LED
của MOV AH, 7FH ;chọn LED đầu tiên 0111 1111
8255 là MOV SI, OFFSET MEM-1 ; địa chỉ chứa dữ liệu
MOV DX,701H ; địa chỉ cổng B
0700H- ;Hiển thị 8 số
0703H DISP1: MOV AL, AH ;chọn 1 số
OUT DX, AL
DEC DX ; địa chỉ cổng A
MOV AL, [BX+SI] ; dữ liệu của 7 đoạn led
OUT DX, AL
CALL Delay ; trễ 1 ms
ROR AH, 1 ;số tiếp theo
INC DX ; địa chỉ cổng B
DEC BX ;giảm chỉ số
JNZ DISP1 ; lặp lại 8 lần
;khôi phục lại các thanh ghi
POP SI
POP DX
POP BX
POP AX
POPF
RET
DISP ENDP
49/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0
50/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0
51/Chapter4
© DHBK 2005ROWS EQU 4 ; 4 hàng
COLS EQU 4 ; 4 cột
PORTA EQU 50H
PORTB EQU 51H
KEY PROC NEAR USES CX
CALL SCAN ;test all keys SCAN PROC NEAR USES BX
JNZ KEY ; if key closed MOV CL, ROWS ;form row mask
CALL DELAY ; đợi 10 ms MOV BH, OFFH
CALL SCAN SHL BH, CL
JNZ KEY MOV CX, COLS ;load column count
KEY1: MOV BL, OFEH ;get selection mode
CALL SCAN SCAN1:
JZ KEY1 ; if no key closed MOV AL, BL ;select column
CALL DELAY OUT PORTB, AL
CALL SCAN ROL BL, 1
JZ KEY1 IN AL, PORTA; read rows
PUSH AX ;cất mã hàng OR AL,BH
MOV AL, COLS ;cal starting row key CMP AL, 0FFH ;test for a key
SUB AL, CL JNZ SCAN2
MOV CH, ROWS LOOP SCAN1
MUL CH
MOV CL, AL SCAN2:
DEC CL RET
POP AX SCAN ENDP
KEY2:
ROR AL,1 ;find row position DELAY PROC NEAR USES CX
INC CL MOV CX, 5000 ;10ms (8MHZ)
JC KEY2 DELAY1:
MOV AL,CL ;move code to AL LOOP DELAY1
RET RET
KEY ENDP DELAY ENDP
52/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
53/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
• Port A và B làm việc ở chế độ cổng vào có chốt:
 dữ liệu sẽ được giữ tại cổng A, B cho đến khi CPU sẵn sàng
 cổng C làm cổng điều khiển và cấp tín hiệu móc nối
54/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1

PA0-PA7 ASCII D0-D7

STB
PC4 DAV

82C55 Keyboard
55/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
56/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
• Port A và B làm việc ở chế độ cổng ra có chốt:
 tương tự như cổng ra ở chế độ 0
 cổng C làm cổng điều khiển và cấp tín hiệu móc nối

1
57/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1

PB0-PB7 ASCII D0-D7

ACK
PC2 ACK

PC4 DS

82C55 Printer
58/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
BIT1 EQU 2
PORTC EQU 62H
PORTB EQU 61H
CMD EQU 63H

PRINT PROC NEAR


;check printer ready
IN AL,PORTC ;get OBF
TEST AL, BIT1 ;test OBF
JZ PRINT ;if OBF=0

;send character to printer


MOV AL, AH ;get data
OUT PORTB, AL ;print data
;send data strobe to printer
;PC4 is used
MOV AL, 8 ;clear DS
OUT CMD,AL
MOV AL, 9 ;set DS
OUT CMD, AL
RET
PRINT ENDP
59/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 2
• Chỉ cho phép đối với cổng A
• Cổng A là cổng 2 chiều, dùng để giao tiếp giữa 2 máy tính
hoặc dùng trong chuẩn giao tiếp IEEE-488 GPIB...
60/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 2
61/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
62/Chapter4
© DHBK 2005

4.4.4 Mạch điều khiển 8279


• Điều khiển bàn phím và màn hiển thị 8279:
 quét và mã hoá cho bàn phím tới 64 phím
 bộ đệm FIFO có thể chứa 8 ký tự
 Điều khiển màn hiển thị tới 16 số
 16*8 RAM để chứa thông tin về 16 số hiển thị
• Các tín hiệu chính:
 A0: chọn giữa chế độ dữ liệu hoặc điều khiển
 BD: xoá trắng màn hiển thị
 CLK: tín hiệu xung nhịp vào
 CN/ST (control/Strobe): cổng vào nối với
phím điều khiển của bàn phím
 CS : chip select
 DB7-DB0: bus dữ liệu 2 chiều
 IRQ: =1 khi có phím bấm
 OUTA3-OUTA0: dữ liệu tới màn hiển thị (bit cao)
 OUTB3-OUTB0: dữ liệu tới màn hiển thị (bit thấp)
 RD: cho phép đọc dữ liệu từ thanh ghi điều khiển hoặc trạng thái
 RL7-RL0: xác định phím được nhấn
 SHIFT: nối với phím shift của bàn phím
 SL3-SL0: tín hiệu quét màn hình và màn hiển thị
 WR: viết dữ liệu vào thanh ghi điều khiển hoặc thanh ghi dữ liệu
63/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với 8088
64/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với bàn phím
65/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với màn hiển thị
66/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Lập trình cho 8279
• Từ điều khiển: D7D6D5D4D3D2D1D0
67/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Lập trình cho 8279
68/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
69/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


70/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


71/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


72/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


73/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


74/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8253


75/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
76/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


• Hoạt động vào ra nối tiếp ở cả hai chế độ: đồng bộ và câ ̣n đồng bộ
(Synchronous và Asynchronous).

• Truyền các kí tự từ 5 tới 8 bit trong chế độ đồng bộ. Đồng bộ có thể
thực hiê ̣n bên trong hoă ̣c bên ngoài. Các kí tự đồng bộ được tự
động chèn vào chuỗi dữ liê ̣u.

• Truyền các kí tự từ 5 tới 8 bit trong chế độ câ ̣n đồng bộ. Tốc độ
clock cung cấp có thể bằng 1, 16 hoă ̣c 64 lần tốc độ Baud truyền
nhâ ̣n dữ liê ̣u. Có thể thực hiê ̣n viê ̣c phát kí tự ngắt truyền. Stop bit
có thể 1, 1.5, hoă ̣c 2 bit. Có thể phát hiê ̣n các lỗi Start bit. Phát hiê ̣n
và xử lý ngưng (break) tự động.

• Tốc độ truyền cực đại trong chế độ đồng bộ là 64K baud, trong chế
độ câ ̣n đồng bộ là 19,2 K baud.

• Hoạt động truyền nhâ ̣n dữ liê ̣u đồng thời (song công), với hai bộ
đê ̣m truyền và nhâ ̣n riêng biê ̣t.

• Phát hiê ̣n các lỗi truyền như : chẵn lẻ, sai khung, overrun.
77/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


78/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Các tín hiê ̣u cung cấp

• Reset: Ngõ vào khởi động lại 8251


• CLK: ngõ vào cung cấp xung nhịp định thời hoạt
động vi xử lý.
• Vcc, GND: cấp nguồn.
79/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Các tín hiê ̣u kết nối hê ̣ thống

• CS (Chip select): chọn mạch


• WR (write): ngõ vào điều khiển ghi 8251
• RD (read): ngõ vào điều khiển đọc 8251.
• C/D (control/data): ngõ vào xác định đọc ghi điều
khiển hoă ̣c dữ liê ̣u.
80/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Các tín hiê ̣u điều khiển modem

• DSR (data set ready): ngõ vào thông báo modem đã
sẵn sàng.
• DTR (data set ready): là ngõ ra thông báo 8251 đã sẵn
sàng.
• RTS(request to send): là ngõ ra yêu cầu modem truyền
dữ liê ̣u.
• CTS (clear to send): là ngõ vào nhâ ̣n thông báo sẵn
sàng nhâ ̣n dữ liê ̣u của modem.
81/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Các tín hiê ̣u truyền dữ liê ̣u

• TxD (transmit data): ngõ ra truyền dữ liê ̣u tới thiết bị.
• TxRDY (transmitter ready): là ngõ ra thông báo bộ
đê ̣m truyền đã sẵn sàng.
• TxEmpty: ngõ ra thông báo bộ đê ̣m truyền rỗng,
hoă ̣c bộ truyền không được cho phép.
• TxC (transmitter clock): ngõ vào cấp clock truyền dữ
liê ̣u.
82/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Các tín hiê ̣u nhâ ̣n dữ liê ̣u

• RxD (receive data): ngõ ra truyền dữ liê ̣u tới thiết bị.
• RxRDY (receiver ready): là ngõ ra thông báo bộ đê ̣m
nhâ ̣n đã nhâ ̣n xong một dữ liê ̣u.
• RxC (receiver clock): ngõ vào cấp clock nhâ ̣n dữ
liê ̣u.
83/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251

Tín hiê ̣u đồng bộ

• SYNDET (synchronous detect):


 Trong chế độ đồng bộ trong: là ngõ ra khi 8251 nhâ ̣n xong
ký tự đồng bộ đúng.
 Trong chế độ đồng bộ ngoài: là ngõ vào để 8251 bắt đầu
nhâ ̣n dữ liê ̣u.
 Trong chế độ câ ̣n đồng bộ: là ngõ ra ở mức thấp sau khi
RESET, nó tác động mức cao khi có ký tự “break”.
84/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


85/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


86/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


87/Chapter4
© DHBK 2005

4.4.6 Giao tiếp truyền thông 8251


88/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8253
4.4.6 Giao tiếp truyền thông 8251
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
89/Chapter4
© DHBK 2005

4.4.7.1 Bộ biến đổi số tương tự DAC


90/Chapter4
© DHBK 2005

4.4.7.1 Bộ biến đổi số tương tự DAC


91/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC


92/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC


93/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC

You might also like