
CH NG 15ƯƠ
Phép ghép 8031/51 v i 8255ớ
Nh đã nói ch ng 14 trong quá trình n i ghép 8031/51 v i b như ở ươ ố ớ ộ ớ
ngoài thì hai c ng P0 và P2 b m t. Trong ch ng này chúng ta s trình bày làmổ ị ấ ươ ẽ
th nào đ m r ng các c ng vào/ ra I/O c a 8031/51 b ng vi c n i nó t i chípế ể ở ộ ổ ủ ằ ệ ố ớ
8255.
Hình 15.1: Chíp 8255.
15.1.1.1 Các chân PA0 - PA7 (c ng A).ổ
C 8 bít c a c ng A PA0 - PA7 có th đ c l p trình nh 8 bit đ u vàoả ủ ổ ể ượ ậ ư ầ
ho c 8 bit đ u ra ho c c 8 bít hai chi u vào/ ra.Sặ ầ ặ ả ề
Hình 15.2: S đ kh i c a 8255.ơ ồ ố ủ
15.1.1.2 Các chân PB0 - PB7 (c ng B).ổ
PB
PA3
PA2
PA1
PA0
P1.4
P1.5
GND
A1
A0
PA
PA
PA
WR
RESE
D
VCC
PA
1
2
3
5
6
4
7
8
9
11
12
10
13
14
15
17
18
16
19
20
40
39
38
36
35
37
34
33
32
30
29
31
28
27
26
24
23
25
22
21
8
2
5
5
A
D
D
D
D
D
D
D
PB
PB
PB
PB
PB
PC
PC6
PC5
PC4
PC0
PC1
PC
PC
PB0
PB1
PA
PB
PC
8
2
5
5
A0
A1
RESET
CS
WR
RD
D7 D0
15.1 L p trình 8255.ậ
Trong m c này ta nghiên c uụ ứ
8255 nh là m t trong nh ng chíp vào/ư ộ ữ
ra đ c s d ng r ng rãi nh t. Tr cượ ử ụ ộ ấ ướ
h t ta mô t nh ng đ c tính c a nó vàế ả ữ ặ ủ
sau đó ch ra cách n i 8031/51 v i 8255ỉ ố ớ
nh th nào?ư ế
15.1.1 Các đ c tính c a 8255.ặ ủ
8255 là m t chíp DIP 4 chânộ
(xem hình 15.1). Nó có 3 c ng truy c pổ ậ
đ c riêng bi t. Các c ng đó có tên A,ượ ệ ổ
B và C đ u là các c ng 8 bit. Các c ngề ổ ổ
này đ u có th l p trình nh c ng đ uề ể ậ ư ổ ầ
vào ho c đ u ra riêng r và có th thayặ ầ ẽ ể
đ i m t cách năng đ ng. Ngoài ra, cácổ ộ ộ
c ng 8255 có kh năng b t tay. Do v yổ ả ắ ậ
cho phép giao di n v i các thi t b khácệ ớ ế ị
cũng có giá tr tín hi u b t tay nh cácị ệ ắ ư
máy in ch ng h n. Kh năng b t tayẳ ạ ả ắ
c a 8255 s đ c bàn t i m c 15.3.ủ ẽ ượ ớ ở ụ

C 8 bit c a c ng B có th đ c l p trình ho c nh 8 bit đ u vào ho c 8ả ủ ổ ể ượ ậ ặ ư ầ ặ
bit đ u ra ho c c 8 bit hai chi u vào/ ra.ầ ặ ả ề
15.1.1.3 Các chân PC0 - PC7 (c ng C).ổ
T t c 8 bit c a c ng C (PC0 - PC7) đ u có th đ c l p trình nh cácấ ả ủ ổ ề ể ượ ậ ư
bit đ u vào ho c các bit đ u ra. 8 bit này cũng có th đ c chia làm hai ph n:ầ ặ ầ ể ượ ầ
Các bit cao (PC4 - PC7) là CU và các bit th p (PC0 - PC3) là CL. M i ph n cóấ ỗ ầ
th đ c dùng ho c làm đ u vào ho c làm đ u ra. Ngoài ra t ng bit c a c ng Cể ượ ặ ầ ặ ầ ừ ủ ổ
t PC0 - PC7 cũng có th đ c l p trình riêng r .ừ ể ượ ậ ẽ
15.1.1.4 Các chân
RD
và
WR
.
Đây là hai tín hi u đi u khi n tích c c m c th p t i 8255 đ c n i t iệ ề ể ự ứ ấ ớ ượ ố ớ
các chân d li u ữ ệ
RD
và
WR
t 8031/51 đ c n i t i các chân đ u vào này.ừ ượ ố ớ ầ
15.1.1.5 Các chân d li u D0 - D7.ữ ệ
Các chân d li u D0 - D7 c a 8255 đ c n i t i các chân d li u c a bữ ệ ủ ượ ố ớ ữ ệ ủ ộ
vi đi u khi n đ cho phép nó g i d li u qua l i gi a b vi đi u khi n và chípề ể ể ử ữ ệ ạ ữ ộ ề ể
8255.
15.1.1.6 Chân RESET.
Đây là đ u vào tín hi u tích c c m c cao t i 8255 đ c dùng đ xoáầ ệ ự ứ ớ ượ ể
thanh ghi đi u khi n. Khi chân RESET đ c kích ho t thì t t c các c ng đ cề ể ượ ạ ấ ả ổ ượ
kh i t o l i nh các c ng vào. Trong nhi u thi t k thì chân này đ c n i t iở ạ ạ ư ổ ề ế ế ượ ố ớ
đ u ra RESET c a bus h th ng ho c đ c n i t i đ t đ không kích ho t nó.ầ ủ ệ ố ặ ượ ố ớ ấ ể ạ
Cũng nh t t c các chân đ u vào c a IC thì nó cũng có th đ h .ư ấ ả ầ ủ ể ể ở
15.1.1.7 Các chân A0, A1 và
CS
.
Trong khi
CS
ch n toàn b chíp thì A0 và A1 l i ch n các c ng riêngọ ộ ạ ọ ổ
bi t. Các chân này đ c dùng đ truy c p các c ng A, B, C ho c thanh ghi đi uệ ượ ể ậ ổ ặ ề
khi n theo b ng 15.1. L u ý ể ả ư
CS
là tích c c m c th p.ự ứ ấ
15.1.2 Ch n ch đ c a 8255.ọ ế ộ ủ
Trong khi các c ng A, B và C đ c dùng đ nh p và xu t d li u thìổ ượ ể ậ ấ ữ ệ
thanh ghi đi u khi n ph i đ c l p trình đ ch n ch đ làm vi c c a cácề ể ả ượ ậ ể ọ ế ộ ệ ủ
c ng này. Các c ng c a 8255 có th đ c l p trình theo m t ch đ b t kỳổ ổ ủ ể ượ ậ ộ ế ộ ấ
d i đây.ướ
1. Ch đ 0 (Mode0):ế ộ Đây là ch đ vào/ ra đ n gi n. ch đ này các c ngế ộ ơ ả Ở ế ộ ổ
A, B CL và CU có th đ c l p trình nh đ u vào ho c đ u ra. Trong ch để ượ ậ ư ầ ặ ầ ế ộ
này thì t t c các bit ho c là đ u vào ho c là đ u ra. Hay nói cách khác là khôngấ ả ặ ầ ặ ầ
có đi u khi n theo t ng bit riêng r nh ta đã th y các c ng P0 - P3 c a 8051.ề ể ừ ẽ ư ấ ở ổ ủ
Vì đa ph n các ng d ng liên quan đ n 8255 đ u s d ng ch đ vào/ ra đ nầ ứ ụ ế ề ử ụ ế ộ ơ
gi n này nên ta s t p chung đi sâu vào ch đ này.ả ẽ ậ ế ộ
2. Ch đ 1 (Mode1):ế ộ Trong ch đ này các c ng A và B có th đ c dùng nhế ộ ổ ể ượ ư
các c ng đ u vào ho c đ u ra v i các kh năng b t tay. Tín hi u b t tay đ cổ ầ ặ ầ ớ ả ắ ệ ắ ượ
c p b i các bit c a c ng C (s đ c trình bày m c 15.3).ấ ở ủ ổ ẽ ượ ở ụ
3. Ch đ 2 (Mode2):ế ộ Trong ch đ này c ng A có th đ c dùng nh c ngế ộ ổ ể ượ ư ổ
vào/ ra hai chi u v i kh năng b t tay và các tín hi u b t tay đ c c p b i cácề ớ ả ắ ệ ắ ượ ấ ở
bit c ng C. C ng B có th đ c dùng nh ch đ vào/ ra đ n gi n ho c ổ ổ ể ượ ư ở ế ộ ơ ả ặ ở
ch đ có b t tay Mode1. Ch đ này s không đ c trình bày trong tài li uế ộ ắ ế ộ ẽ ượ ệ
này.
Ch đ BSR: Đây là ch đ thi t l p/ xoá bit (Bit Set/ Reset). ch đ này chế ộ ế ộ ế ậ ở ế ộ ỉ
có nh ng bit riêng r c a c ng C có th đ c l p trình (s đ c trình bày ữ ẽ ủ ổ ể ượ ậ ẽ ượ ở
m c 15.3).ụ
B ng 15.1:ả Ch n c ng c a 8255.ọ ổ ủ

CS
A1 A0 Ch n c ngọ ổ
0 0 0 C ng Aổ
0 0 1 C ng Bổ
0 1 0 C ng Cổ
0 1 1 Thanh ghi đi u khi nề ể
1 x X 8255 không đ c ch nượ ọ
Hình 15.3: Đ nh d ng t đi u khi n c a 8255 (ch đ vào/ ra).ị ạ ừ ề ể ủ ế ộ
15.1.3 L p trình ch đ vào/ ra đ n gi n.ậ ế ộ ơ ả
Hãng Intel g i ch đ 0 là ch đ vào/ ra c s . M t thu t ng đ cọ ế ộ ế ộ ơ ở ộ ậ ữ ượ
dùng chung h n là vào/ ra đ n gi n. Trong ch đ này thì m t c ng b t kỳ trongơ ơ ả ế ộ ộ ổ ấ
A, B, C đ c l p trình nh là c ng đ u vào ho c c ng đ u ra. C n l u ý r ngượ ậ ư ổ ầ ặ ổ ầ ầ ư ằ
trong ch đ này m t c ng đã cho không th v a làm đ u vào l i v a làm đ uế ộ ộ ổ ể ừ ầ ạ ừ ầ
ra cùng m t lúc.ộ
Ví d 15.1: ụ
Hãy tìm t đi u khi n c a 8255 cho các c u hình sau:ừ ề ể ủ ấ
T t c các c ng A, B và C đ u là các c ng đ u ra (ch đ 0).ấ ả ổ ề ổ ầ ế ộ
PA là đ u vào, PB là đ u ra, PCL b ng đ u vào và PCH b ng đ u ra.ầ ầ ằ ầ ằ ầ
L i gi i:ờ ả
T hình 15.3 ta tìm đ c:ừ ượ
a) 1000 0000 = 80H; b) 1001 000 = 90H
15.1.4 N i ghép 8031/51 v i 8255.ố ớ
Chíp 8255 đ c l p trình m t trong b n ch đ v a trình bày trênượ ậ ộ ố ế ộ ừ ở
b ng cách g i m t byte (hãng Intel g i là m t t đi u khi n) t i thanh ghi đi uằ ử ộ ọ ộ ừ ề ể ớ ề
khi n c a 8255. Tr c h t chúng ta ph i tìm ra các đ a ch c ng đ c gán choể ủ ướ ế ả ị ỉ ổ ượ
m i c ng A, B, C và thanh ghi đi u khi n. Đây đ c g i là ánh x c ng vào/ raỗ ổ ề ể ượ ọ ạ ổ
(mapping).
Nh có th nhìn th y t hình 15.4 thì 8255 đ c n i t i m t 8031/51ư ể ấ ừ ượ ố ớ ộ
nh th nó là b nh RAM. Đ vi c s d ng các tín hi u ư ế ộ ớ ể ệ ử ụ ệ
RD
và
WR
. Ph ngươ
pháp n i m t chíp vào/ ra b nh vì nó đ c ánh x vào không gian b nh .ố ộ ộ ớ ượ ạ ộ ớ
Hay nói cách khác, ta s d ng không gian b nh đ truy c p các thi t b vào/ử ụ ộ ớ ể ậ ế ị
1 = I/O Mode
0 = BSR
Mode
Selection
00 = Mode 0
01 = Mode 1
1x = Mode2
Pont A
1 = Input
0 =
Output
Port C
(Upper PC7
- PCA)
1 = Input
0 = Output
Mode
Selcction
0 = Mode 0
Port B
1 = Input
0 = Output
Port 0
(Lowe PC3 -
PCC)
1 = Input
0 = Output
Group A Group A
D7 D6 D5 D4 D3 D2 D1
D0

ra. Vì ly??? do này mà ta dùng l nh MOVX đ truy c p RAM và ROM. Đ i v iệ ể ậ ố ớ
m t 8255 đ c n i t i 8031/51 thì ta cũng ph i dùng l nh MOVX đ truy nộ ượ ố ớ ả ệ ể ề
thông v i nó. Đi u này đ c th hi n trên ví d 15.2.ớ ề ượ ể ệ ụ
Ví d 15.2:ụ
Đ i v i hình 15.4:ố ớ
a) Hãy tìm các đ a ch vào/ ra đ c gán cho c ng A, B, C và thanh ghi đi uị ỉ ượ ổ ề
khi n.ể
b) Hãy l p trình 8255 cho các c ng A, B và C thành các c ng đ u ra.ậ ổ ổ ầ
c) Vi t m t ch ng trình đ g i 55H và AAH đ n c ng liên t c.ế ộ ươ ể ử ế ổ ụ
L i gi i:ờ ả
a) Đ a ch c s dành cho 8255 nh sau:ị ỉ ơ ở ư
A
15
A
14
A1
3
A
12
A1
1
A1
0
A9 A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
x 1 x x x x x x x x x x x X 0 0 =4000HP
A
x 1 x x x x x x x x x x x X 0 1 =4000HP
B
x 1 x x x x x x x x x x x X 1 0 =4000HP
C
x 1 x x x x x x x x x x x X 1 1 =4000HC
R
b) Byte (t ) đi u khi n cho t t c các c ng nh đ u ra là 8ừ ề ể ấ ả ổ ư ầ 0H nh đ c tính ư ượ ở
ví d 15.1.ụ
c)
MOV A, #80H ; T đi n khi nừ ể ể
MOV DPTR, # 4003H ; N p đ a ch c ng c aạ ị ỉ ổ ủ
thanh ghi đi u khi nề ể
MOVX @DPTR, A ; Xu t t đi n khi nấ ừ ể ể
MOV A, # 55H ; Gán A = 55
AGAIN: MOV DPTR, # 4000H ; Đ a ch c ng PAị ỉ ổ
MOVX @DPTR, A ; L y các bit c ng PAấ ổ
INC DPTR ; Đ a ch c ng PBị ỉ ổ
MOVX @DPTR, A ; L y các bít c ng PBấ ổ
INC DPTR ; Đ a ch c ng PCị ỉ ổ
MOVX @DPTR, A ; L y các bít c ng PCấ ổ
CPL A ; L y các bít thanh ghi Aấ
ACALL DELAY ; Ch ờ
SJMP AGAIN ; Ti p t cế ụ
8051
AD7
P0.0
P0.7
ALE
P3.7
P3.6
RD
74LS373
G
OC
QD
A0
A1
AD0
8255
WR
CS
WR
RD
P2.7
P
P
P
A1
D7 D0A0
D7
D0
A1

Hình 15.4: N i ghép 8051 v i 8255 cho ví d 15.2.ố ớ ụ
Ví d 15.3:ụ
Đ i v i hình 15.5:ố ớ
a) Tìm các đ a ch c ng vào ra đ c gán cho các c ng A, B, C và thanhg ghi đi uị ỉ ổ ượ ổ ề
khi n.ể
b) Tìm byte đi u khi n đ i v i PA b ng đ u vào, PB b ng đ u ra, PC b ng đ uề ể ố ớ ằ ầ ằ ầ ằ ầ
ra
c) Vi t m t ch ng trình đ nh n d li u t PA g i nó đ n c c ng B và c ngế ộ ươ ể ậ ữ ệ ừ ử ế ả ổ ổ
C.
L i gi i:ờ ả
a) Gi s t t các các bit không dùng đ n là 0 thì đ a ch c ng c s cho 8255 làả ử ấ ế ị ỉ ổ ơ ở
1000H. Do v y ta có:ậ
1000H là PA; 1001H là PB; 1002H là PC và 1003H là thanh ghi đi u khi n.ề ể
b) T đi u khi n cho tr ng h p này là 10010000 hay 90H.ừ ề ể ườ ợ
c)
MOV A, #90H ; PA là đ u vào, PB là đ u ra, PC là đ u raầ ầ ầ
MOV DPTR, #1003H ; N p đ a ch c ng c a thanh ghi đi uạ ị ỉ ổ ủ ề
khi nể
MOVX @DPTR, A ; Xu t t đi u khi nấ ừ ề ể
MOV DPTR, #1000H ; Đ a ch PAị ỉ
MOVX A, @DPTR ; Nh n d li u t PAậ ữ ệ ừ
INC DPTR ; Đ a ch PBị ỉ
MOVX @DPTR, A ; G i d li u ra PBử ữ ệ
INC DPTR ; Đ a ch PCị ỉ
MOVX @DPTR, A ; G i d li u ra PCử ữ ệ
8051
AD7
P0.0
P0.7
ALE
P3.7
P3.6
RD
74LS373
G
OC
QD
D0
D7
A0
A1
D0
AD0
A15
A0
A1
8255
WR
CS
WR
D7
RD
P2.7
PA
PB
PC
RE
A12

