Chương 3:
Giới thiệu vi mạch 8255A
Vi mạch 8255A là vi mạch giao tiếp ngoại vi lập trình được
PPI (
Programmable Peripheral Interfacer). Nó thường được
dùng trong các card cắm thêm vào máy tính để kết nối giao tiếp
song song giữa Vi xử lý và thiết bò điều khiển bên ngoài.
1. Sơ đồ chân của 8255A:
Sơ đồ chân và sơ đồ logic của vi mạch 8255A
8255A
D
0
-
D
7
RD\
WR\
RESET
A
0
A
1
CS\
PA
0
-
PA
7
PB
0
-
PB
7
PC
0
-
PC
3
PC
4
-
PC
7
A
1
A
0
RD\ WR\ CS\ Hoạt động
L L L H L Port A Bus dữ liệu
L H L H L Port B Bus dữ liệu
H L L H L Port C Bus dữ liệu
L L H L L Bus dữ liệu Port A
L H H L L Bus dữ liệu Port B
H L H L L Bus dữ liệu Port C
H H H L L Bus dữ liệu Từ điều khiển
x x x x H Bus dữ liệu ở chế độ Hi-Z
H H L H L Cấm
x x H H L Bus dữ liệu ở chế độ Hi-Z
PA
3
PA
2
PA
1
PA
0
RD\
CS\
GND
A
1
A
0
PC
7
PC
6
PC
5
PC
4
PC
0
PC
1
PC
2
PC
3
PB
0
PB
1
PB
2
PA
4
PA
5
PA
6
PA
7
WR\
RESET
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
V
cc
PB
7
PB
6
PB
5
PB
4
PB
3
8255A
Bảng trạng thái của 8255A
2. Cơ chế hoạt động của 8255A:
Khi chân RESET ở mức [1], 8255A sẽ được khởi động, nó
sẽ thả nổi tất cả 24 chân liên quan tới các cửa vào/ra. Chế độ
này kéo dài tới khi chương trình ứng dụng viết từ điều khiển vào
thanh ghi điều khiển để xác đònh chế độ làm việc của 8255A.
Ba chế độ hoạt động cơ bản của 8255A là:
- Chế độ 0: vào/ra thông thường.
- Chế độ 1: chốt vào/ra.
- Chế độ 2: bus hai chiều.
Từ điều khiển dùng để đònh nghóa chế độ làm việc cho
8255A.
Cấu trúc từ điều khiển của 8255A:
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
Nhóm B
Port C (thấp)
1 = nhập
0 = xuất
Port B
1 = nhập
0 = xuất
Chọn chế độ
0 = chế độ 0
1 = chế độ 1
Nhóm A
Port C (cao)
1 = nhập
0 = xuất
Port A
1 = nhập
0 = xuất
Chọn chế độ
Chế độ 0:
Từ điều khiển
Chế độ 0 xác lập hai port 8 bit (A và B) và hai port 4 bit
(nửa cao và nửa thấp của port C). Bất kỳ port nào cũng có thể
nhập hoặc xuất dữ liệu tùy theo các bit D
4
, D
3
, D
1
và D
0
. Dữ liệu
được chốt khi nhập (còn khi xuất thì không).
Chế độ 1:
Từ điều khiển
Chế độ này cả hai port A và B làm việc ở chế độ xuất/nhập
có chốt. Port A và B hoạt động độc lập nhau, mỗi port có 4 bit
điều khiển/dữ liệu được hình thành từ 4 bit cao và 4 bit thấp của
port C.
Nhóm A được cấu hình ở chế độ 1:
1 0 0 D
4
D
3
0 D
1
D
0
1 0 1 D
4
D
3
1 D
1
D
0
* Port A là port nhập dữ liệu:
Từ điều khiển
- STB
A
\ (PC
4
): mức 0 tại ngõ vào này sẽ làm cho dữ liệu
được chốt vào port A. Thiết bò ngoại vi dùng tín hiệu này để báo
cho 8255A biết dữ liệu vào đã sẵn sàng.
- IBF
A
(PC
5
): ngõ ra này lên mức 1 để báo rằng bộ đệm đã
đầy. Khi chân này ở mức 0 thì thiết bò ngoại vi có thể gởi dữ liệu
mới tới 8255A.
- INTR
A
(PC
3
): tín hiệu ở ngõ ra này được dùng như một
yêu cầu ngắt. Ngõ ra này lên mức 1 khi STB
A
ở mức 0, IBF
A
và
cờ hiệu INTR
A
ở mức 1. Tín hiệu INTE
A
tự động được xóa khi
CPU nhập từ 8255A. Cờ hiệu cho phép ngắt (INTE) được điều
khiển bằng cách đặt hoặc xóa bit PC
4
.
- Các bit PC
6
và PC
7
là các bit xuất nhập bình thường phụ
thuộc vào bit D
3
trong từ điều khiển.
* Port A là port xuất dữ liệu:
PC
4
PC
5
PC
3
INTE
A
RD
\
PC
6,7
PA
0
-
PA
7
I/O
INTR
A
IBF
A
STB
A
\
1 0 1 1 D
3
x x x
PC
6,7
1 = nhập
0 = xuất
Từ điều khiển
- OBF
A
\ (PC
7
): ngõ ra này sẽ xuống mức 0 khi bộ đệm xuất
đầy để báo cho thiết bò ngoại vi biết port A đang xuất ra dữ liệu
mới.
- ACK
A
\ (PC
6
): ngõ vào này được thiết bò ngoại vi đặt mức 0
để báo cho 8255A biết dữ liệu port A được chấp nhận.
- INTR
A
(PC
3
): ngõ ra này có cùng mục đích như trong
trường hợp nhập. Cờ cho phép ngắt được điều khiển bằng cách
đặt hoặc xóa bit PC
6
.
- Các bit PC
4
và PC
5
là các bit xuất nhập bình thường phụ
thuộc vào bit D
3
trong từ điều khiển.
Nhóm B được cấu hình ở chế độ 1:
* Port B là port nhập dữ liệu:
Từ điều khiển
PC
6
PC
7
PC
3
INTE
A
WR
\
PC
4, 5
PA
0
-
PA
7
I/O
INTR
A
ACK
A
\
OBF
A
\
1 x x x x 1 1 x
1 0 1 0 D
3
x x x
PC
4, 5
1 = nhập
0 = xuất
PC
2
PC
1
PC
0
INTE
B
RD
\
PC
4,5
PB
0
-
PB
7
I/O
INTR
B
IBF
B
STB
B
\
- STB
B
\ (PC
2
), IBF
B
(PC
1
) và INTR
B
(PC
0
) có chức năng
tương tự như trong trường hợp port A nhập. Cờ hiệu cho phép
ngắt (INTE) được điều khiển bằng cách đặt hoặc xóa bit PC
2
.
* Port B là port xuất dữ liệu:
Từ điều khiển
Chế độ 2:
Chế độ này là chế độ xuất/nhập hai chiều được chốt. Trong
chế độ này, port A được dùng cho xuất và nhập, 5 bit của port C
được dùng để chỉ trạng thái và điều khiển port A.
Từ điều khiển
1 x x x x 1 0 x
PC
2
PC
1
PC
0
INTE
B
WR
\
PC
4, 5
PB
0
-
PB
7
I/O
INTR
B
ACK
B
\
OBF
B
\
PC
7
PC
6
PC
4
INTE
1
PA
0
-
PA
7
STB
A
\
ACK
A
\
OBF
A
\
PC
3
INTR
A
\
1 1 x x x D
2
D
1
D
0
PC
0
-
2
Port B
1 = nhập
0 = xuất
Chế độ nhóm B
0 = chế độ 0
1 = chế độ 1
- OBF
A
\ (PC
6
): bộ đệm ngõ ra đã đầy.
- ACK
A
\ (PC
7
): tín hiệu báo chấp nhận dữ liệu.
- IBF
A
(PC
5
): bộ đệm ngõ vào đầy.
- STB
A
\ (PC
4
): dữ liệu đang sẵn sàng ở ngõ vào.
- INTR
A
(PC
3
): tín hiệu yêu cầu ngắt, được sử dụng cho
xuất/nhập.
Khi nhóm A ở chế độ 2 thì nhóm B chỉ có thể ở chế độ 0
hoặc 1. Tuy nhiên, nếu nhóm B ở chế độ 0 thì chỉ có 3 bit PC
0
-
PC
2
được sử dụng cho xuất/nhập vì nhóm A đã mượn bit PC
3
để
sử dụng như một yêu cầu ngắt. Thông thường, nếu nhóm A ở
chế độ 2 thì các bit PC
0
-PC
2
sẽ được nối với các chân trạng thái
và điều khiển của thiết bò nối với port A. Port B cũng có thể
được dùng cho mục đích này.
Việc đặt/xóa bit đối với port C
Ta có khả năng lập và xóa từng bit. Nếu bit 7 của từ điều
khiển là 0, 8255A sẽ hiểu là lệnh đặt/xóa bit port C có nghóa,
cho phép lập/xóa bất kỳ bit nào của port C. Khả năng đặt/xóa
từng bit riêng lẻ là rất thuận tiện cho ứng dụng khi các bit riêng
rẽ được dùng để điều khiển tách biệt các chức năng bên ngoài.
Từ điều khiển đặt/xóa bit
D
7
x x x D
3
D
2
D
1
D
0
Đặt/xóa bit
1 = đặt (set)
0 = xóa (reset)
Chọn bit
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
Cờ đặt/xóa bit
0 = tích cực