Tải bản đầy đủ (.pdf) (24 trang)

vi xử lý hệ thống điều khiên port in out

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (840.24 KB, 24 trang )


KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I
I



M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H




















M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Khảo sát nguyên lý hoạt động và phương pháp điều khiển vi mạch PPI 8255.
• Khảo sát phương pháp mở rộng port xuất nhập của vi điều khiển bằng cách sử dụng các vi mạch 8255,
74573 và 74245.
• Khảo sát nguyên lý và phương pháp lập trình điều khiển xuất nhập dữ liệu theo phương pháp song song.


B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Nắm được sơ đồ và nguyên lý hoạt động của khối mở rộng port I/O trên mô hình thí nghiệm.
• Nắm được nguyên lý hoạt động và phương pháp điều khiển vi mạch PPI 8255.
• Biết cách lập trình điều khiển xuất nhập dữ liệu theo phương pháp song song.
• Biết cách lập trình và nắm được phương pháp mở rộng port xuất nhập của vi điều khiển bằng cách sử dụng
các vi mạch 8255, 74573 và 74245.




M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 1: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần (LED được nối với DATAOUT
A, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J85 (DATA OUT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.
PORT A
DATA IN
PORT CPORT B
DATA OUT

DATA OUT
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2

D1
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D0
D1
D2
D3
D4
D5
D6
D7
D8
D15
D14
D13
D12
D11
D10
D9
AD0
AD1
AD2
AD3
AD4

AD5
AD6
AD7
D8
D9
D10
D11
D12
D13
D14
D15
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7AD7
AD6
AD5
AD4

AD3
AD2
AD1
AD0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37

P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11

P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51

C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330

+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)

(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D0
2
D1
3
D2
4
D3
5
D4
6
D5
7
D6
8
D7
9
Q0
19
Q1
18
Q2
17
Q3
16
Q4
15
Q5
14
Q6

13
Q7
12
LE
11
OE
1
U2
74HC573
D8
R10
330
+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13

R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
D0
2
D1
3
D2
4
D3
5
D4
6
D5
7
D6
8
D7
9
Q0
19
Q1

18
Q2
17
Q3
16
Q4
15
Q5
14
Q6
13
Q7
12
LE
11
OE
1
U3
74HC573
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A0
2
B0
18
A1
3
B1
17
A2
4

B2
16
A3
5
B3
15
A4
6
B4
14
A5
7
B5
13
A6
8
B6
12
A7
9
B7
11
CE
19
AB/BA
1
U4
74HC245
2
3

4
5
6
7
8
9
1
RP2
10K
+5V

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 1: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần (LED được nối với DATAOUT
A, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 1 IC 74573
;LAM CHO 8 LED SANG DAN.
;***************************************************
;KET NOI: CS 8255 -> P1.0
; OE 74245 -> P1.1
; LATCH 74573 -> P1.2 (IC1 - A)
; LATCH 74573 -> P1.3 (IC2 - B)
; LED0 - LED7 -> OUPUT 74573 (PORT 0)
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)

OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)
LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU
;***************************************************
ORG 00H
MAIN:
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
SETB LAT_573A ;CHO PHEP XUAT DU LIEU RA 74573-A (THONG DU LIEU)
MOV A,#0FFH ;TAT CAC LED
LOOP:
MOV DATABUS,A ;XUAT DU LIEU RA LED
ACALL DELAY500MS ;TAO THOI GIAN TRE
CLR C ;XOA CO C, CY = 0
RLC A ;DICH - DIEU KHIEN SANG DAN QUA CAC LED
JC LOOP ;LAP LAI QUA TRINH SANG DAN
SJMP MAIN ;LAP LAI TU DAU
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 1: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần (LED được nối với DATAOUT
A, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)



M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với DATAOUT A và DATAOUT B, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với
CHIP SELECT).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.

• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J85 (DATA OUT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J90 (DATA OUT B) ở khối mở rộng port I/O với J12 (BAR LED 2) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.
PORT A
DATA IN
PORT CPORT B
DATA OUT
DATA OUT
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với DATAOUT A và DATAOUT B, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với
CHIP SELECT).
Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2

AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D0
D1
D2

D3
D4
D5
D6
D7
D8
D15
D14
D13
D12
D11
D10
D9
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D8
D9
D10
D11
D12
D13
D14
D15
SW7

SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7

XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1

P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15

P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D0

R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330

+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D0
2
D1
3
D2
4
D3
5
D4
6
D5

7
D6
8
D7
9
Q0
19
Q1
18
Q2
17
Q3
16
Q4
15
Q5
14
Q6
13
Q7
12
LE
11
OE
1
U2
74HC573
D8
R10
330

+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
D0

2
D1
3
D2
4
D3
5
D4
6
D5
7
D6
8
D7
9
Q0
19
Q1
18
Q2
17
Q3
16
Q4
15
Q5
14
Q6
13
Q7

12
LE
11
OE
1
U3
74HC573
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A0
2
B0
18
A1
3
B1
17
A2
4
B2
16
A3
5
B3
15
A4
6
B4
14
A5
7

B5
13
A6
8
B6
12
A7
9
B7
11
CE
19
AB/BA
1
U4
74HC245
2
3
4
5
6
7
8
9
1
RP2
10K
+5V

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).

Bài 2: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với DATAOUT A và DATAOUT B, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với
CHIP SELECT).
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)
BEGIN
M2
LOOP1:
MAIN:
(CS_8255) = 1 - CẤM 8255
(OE_245) = 1 - CẤM 74245
(LAT_573A) = 1 - THÔNG 74573-A (U3)
(LAT_573B) = 1 - THÔNG 74573-B (U2)
TẮT CÁC LED
(A) = 11111111B = FFH
XUẤT DỮ LIỆU RA PORT (U3 VÀ U2)
(DATABUS) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
DỊCH PHẢI (R1)
RR A / SÁNG ĐUỔI
CHƯA SÁNG 8 LED
(C) = 1
Đ
S
NẠP GIÁ TRỊ BAN ĐẦU CHO LED SÁNG DẦN
(R0) = 11111110B = FEH
NẠP GIÁ TRỊ BAN ĐẦU CHO LED SÁNG ĐUỔI

(R1) = 01111111B = 7FH
(LAT_573A) = 0 - CHỐT 74573-A (U3)
(LAT_573B) = 1 - THÔNG 74573-B (U2)
XUẤT DỮ LIỆU RA PORT (74573-B)
(DATABUS) = (R1)
(LAT_573A) = 1 - THÔNG 74573-A (U3)
(LAT_573B) = 0 - CHỐT 74573-B (U2)
XUẤT DỮ LIỆU RA PORT (74573-B)
(DATABUS) = (R0)
DỊCH TRÁI (R0) KÈM C
RLC A / SÁNG DẦN
XÓA CỜ CY
(CY) = 0
GỌI CTC TẠO TRỄ
DELAY500MS

;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 2 IC 74573
;LAM CHO 8 LED SANG DAN (NHOM 1) VA 8 LED SANG DUOI (NHOM 2).
;***************************************************
;KET NOI: CS 8255 -> P1.0
; OE 74245 -> P1.1
; LATCH 74573 -> P1.2 (IC1 - A)
; LATCH 74573 -> P1.3 (IC2 - B)
; LED0 - LED7 -> OUPUT 74573 (PORT 0) - NHOM 1
; LED0 - LED7 -> OUPUT 74573 (PORT 0) - NHOM 2
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).

Bài 2: Chương trình điều khiển Port I/O dùng 74573, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với DATAOUT A và DATAOUT B, PORT 0 được nối với DATA IN/OUT, PORT 1 được nối với
CHIP SELECT).
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)
OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)
LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU
;***************************************************
ORG 00H
MAIN:
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
SETB LAT_573A ;CHO PHEP XUAT DU LIEU RA 74573-A (THONG DU LIEU)
SETB LAT_573B ;CHO PHEP XUAT DU LIEU RA 74573-B (THONG DU IEU)
MOV A,#0FFH ;TAT 16 LED
MOV DATABUS,A ;XUAT DU LIEU RA LED
ACALL DELAY500MS ;TAO THOI GIAN TRE
MOV R0,#0FEH ;GIA TRI BAN DAU DUNG CHO LED SANG DAN (NHOM 1)
MOV R1,#7FH ;GIA TRI BAN DAU DUNG CHO LED SANG DUOI (NHOM 2)
LOOP1:
;***************************************************
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
SETB LAT_573B ;CHO PHEP XUAT DU LIEU RA 74573-B (THONG DU LIEU)
MOV DATABUS,R1 ;XUAT DU LIEU RA 8 LED (NHOM 2)
MOV A,R1
RR A ;DICH - DIEU KHIEN SANG DUOI QUA CAC LED
MOV R1,A
;***************************************************

SETB LAT_573A ;CHO PHEP XUAT DU LIEU RA 74573-A (THONG DU LIEU)
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
MOV DATABUS,R0 ;XUAT DU LIEU RA 8 LED (NHOM 1)
CLR C ;XOA CO C, CY = 0
MOV A,R0
RLC A ;DICH - DIEU KHIEN SANG DAN QUA CAC LED
MOV R0,A
;***************************************************
ACALL DELAY500MS ;TAO THOI GIAN TRE
JC LOOP1 ;LAP LAI QUA TRINH SANG DAN VA SANG DUOI
SJMP MAIN ;LAP LAI TU DAU
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP
POP 00H
RET
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)


M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O dùng 74573 và 74245, liên tục đọc các giá trị từ các công tắc gạt SW0
– SW7 và hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này
lên LED (LED được nối với DATAOUT A, SWITCH được nối với DATAIN, PORT 0 được nối với
DATA IN/OUT, PORT1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J85 (DATA OUT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J80 (DATA IN) ở khối mở rộng port I/O với J34 (SWITCH) ở khối công tắc.
• Dùng dây ba bus 3 nối J107 (POWER) ở khối mở rộng port I/O, J106 (POWER) ở khối công tắc và J103
(POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.
PORT A
DATA IN
PORT CPORT B
DATA OUT
DATA OUT
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
POWERSWITCH
3


M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O dùng 74573 và 74245, liên tục đọc các giá trị từ các cơng tắc gạt SW0
– SW7 và hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các cơng tắc này
lên LED (LED được nối với DATAOUT A, SWITCH được nối với DATAIN, PORT 0 được nối với
DATA IN/OUT, PORT1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2

D1
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D0
D1
D2
D3
D4
D5
D6
D7
D8
D15
D14
D13
D12
D11
D10
D9
AD0
AD1
AD2
AD3
AD4

AD5
AD6
AD7
D8
D9
D10
D11
D12
D13
D14
D15
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7AD7
AD6
AD5
AD4

AD3
AD2
AD1
AD0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37

P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11

P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51

C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330

+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)

(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D0
2
D1
3
D2
4
D3
5
D4
6
D5
7
D6
8
D7
9
Q0
19
Q1
18
Q2
17
Q3
16
Q4
15
Q5
14
Q6

13
Q7
12
LE
11
OE
1
U2
74HC573
D8
R10
330
+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13

R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
D0
2
D1
3
D2
4
D3
5
D4
6
D5
7
D6
8
D7
9
Q0
19
Q1

18
Q2
17
Q3
16
Q4
15
Q5
14
Q6
13
Q7
12
LE
11
OE
1
U3
74HC573
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A0
2
B0
18
A1
3
B1
17
A2
4

B2
16
A3
5
B3
15
A4
6
B4
14
A5
7
B5
13
A6
8
B6
12
A7
9
B7
11
CE
19
AB/BA
1
U4
74HC245
2
3

4
5
6
7
8
9
1
RP2
10K
+5V

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O dùng 74573 và 74245, liên tục đọc các giá trị từ các công tắc gạt SW0
– SW7 và hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này
lên LED (LED được nối với DATAOUT A, SWITCH được nối với DATAIN, PORT 0 được nối với
DATA IN/OUT, PORT1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 1 IC 74573
;VA 1 IC 74245 LAM CHO 8 LED SANG/TAT THEO TRANG THAI CAC SW.
;***************************************************
;KET NOI: CS 8255 -> P1.0
; OE 74245 -> P1.1
; LATCH 74573 -> P1.2 (IC1 - A)
; LATCH 74573 -> P1.3 (IC2 - B)
; LED0 - LED7 -> OUPUT 74573 (PORT 0)
; SW0 - SW7 -> INPUT 74245 (PORT 0)
;***************************************************

;DINH NGHIA CAC THONG SO
;***************************************************
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)
OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)
LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU
;***************************************************
ORG 00H
MAIN:
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
;***************************************************
LOOP:
MOV DATABUS,#0FFH ;CAU HINH PORT 8051 LA PORT NHAP DU LIEU
CLR OE_245 ;CHO PHEP DOC DU LIEU TU 74245
MOV A,DATABUS ;DOC DU LIEU TU CAC SW
SETB OE_245 ;CAM DOC DU LIEU TU 74245
;***************************************************
MOV DATABUS,A ;XUAT DU LIEU DA DOC DUOC RA PORT
SETB LAT_573A ;CHO PHEP XUAT DU LIEU RA 74573-A (THONG DU LIEU)
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
;***************************************************
SJMP LOOP ;LAP LAI LIEN TUC
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED tắt hết và sáng dần liên tục (LED được

nối với DATAOUT B, CS573B được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng hết và tắt dần liên tục (LED được
nối với DATAOUT A và DATAOUT B, CS573A được nối với SELCHIP 4, CS573B được nối với
SELCHIP 5).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm BCD từ 0 lên 9 liên
tục (LED0 được nối với DATAOUT A, CS573A được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm BCD từ 00 lên 99
liên tục (LED0 được nối với DATAOUT A, LED1 được nối với DATAOUT B, CS573A được nối với
SELCHIP 6, CS573B được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 4,
CS245 được nối với SELCHIP 1).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED
được nối với DATAOUT A, PUSH KEY được nối với DATAIN, CS573A được nối với SELCHIP 5,
CS245 được nối với SELCHIP 2).
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O dùng 74573 và 74245, liên tục đọc các giá trị từ các công tắc gạt SW0
– SW7 và hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này
lên LED (LED được nối với DATAOUT A, SWITCH được nối với DATAIN, PORT 0 được nối với
DATA IN/OUT, PORT1 được nối với CHIP SELECT).
Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với DATAOUT A, PUSH KEY được
nối với DATAIN, CS573A được nối với SELCHIP 6, CS245 được nối với SELCHIP 3).
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần (LED được nối với PORT A,

PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 4 nối J64 (PORT1) ở với J153 (CTRL 8255) ở khối mở rộng port I/O (chú ý là ta chỉ nối 4
bit cao của J64 với J153).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J79 (PORT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3

AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
D8
D15
D14
D13
D12
D11
D10
D9
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3

SW4
SW5
SW6
SW7
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D8
CS
RD
A1
A0
WR
CS
A0
A1
RD
WR
D7
SW0
D0
D1
D2
D3
D4

D5
D6
D9
D10
D11
D12
D13
D14
D15
SW1
SW2
SW4
SW3
SW5
SW6
SW7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39

P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8

P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26

P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330

+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG

MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D8
R10
330
+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14

R16
330
+5V
D15
R17
330
+5V
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
2
3
4
5
6
7
8
9
1
RP2
10K
+5V
D0
34
D1
33
D2
32
D3
31
D4
30

D5
29
D6
28
D7
27
RD
5
WR
36
A0
9
A1
8
RESET
35
CS
6
PA0
4
PA1
3
PA2
2
PA3
1
PA4
40
PA5
39

PA6
38
PA7
37
PB0
18
PB1
19
PB2
20
PB3
21
PB4
22
PB5
23
PB6
24
PB7
25
PC0
14
PC1
15
PC2
16
PC3
17
PC4
13

PC5
12
PC6
11
PC7
10
U2
8255A
VCC=VDD

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần (LED được nối với PORT A,
PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 1 IC 8255
;LAM CHO 8 LED SANG DAN (PORT A).
;***************************************************
;KET NOI: CS 8255 -> P1.0 A0 -> P1.4 (A1A0 = 00 -> PORT A, A1A0 = 01 -> PORT B)
; OE 74245 -> P1.1 A1 -> P1.5 (A1A0 = 10 -> PORT C, A1A0 = 11 -> CWR)
; LATCH 74573 -> P1.2 (IC1 - A) RD -> P1.6 (RD = 0 -> READ 8255 - INPUT)
; LATCH 74573 -> P1.3 (IC2 - B) WR -> P1.7 (WR = 0 -> WRITE 8255 - OUPUT)
; LED0 - LED7 -> PORT A (PORT 0)
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)
OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)

LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
ADD0 BIT P1.4 ;BIT CHON DIA CHI 8255 (A0)
ADD1 BIT P1.5 ;BIT CHON DIA CHI 8255 (A1)
RD_8255 BIT P1.6 ;BIT DIEU KHIEN DOC DU LIEU TU PORT 8255 (ACT = 0)
WR_8255 BIT P1.7 ;BIT DIEU KHIEN GHI DU LIEU RA PORT 8255 (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU
;***************************************************
ORG 00H
MAIN:
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần (LED được nối với PORT A,
PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
SETB RD_8255 ;CAM GHI VA DOC DU LIEU TAI PORT CUA 8255 (RD = 1, WR = 1)
SETB WR_8255
MOV A,#89H ;NAP CWR DE QUI DINH CAU HINH 8255
ACALL WRITE_CWR ;MODE 0: PORT A = OUTPUT, PORT B = OUTPUT, PORT C = INPUT
;***************************************************
MP1:
MOV A,#0FFH ;TAT CAC LED
LOOP:
ACALL WRITE_PORTA ;XUAT DU LIEU RA LED (PORT A)
ACALL DELAY500MS ;TAO THOI GIAN TRE
CLR C ;XOA CO C, CY = 0
RLC A ;DICH - DIEU KHIEN SANG DAN QUA CAC LED

JC LOOP ;LAP LAI QUA TRINH SANG DAN
SJMP MP1 ;LAP LAI TU DAU
;***************************************************
WRITE_PORTA: ;CTC GHI DU LIEU RA PORT A CUA 8255 (DU LIEU CHUA TRONG ACC)
CLR ADD0 ;DIA CHI PORT A (A1 = 0, A0 = 0)
CLR ADD1
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
WRITE_CWR: ;CTC GHI DU LIEU RA CWR CUA 8255 (DU LIEU CHUA TRONG ACC)
SETB ADD0 ;DIA CHI CWR (A1 = 1, A0 = 1)
SETB ADD1
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)

SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)


M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 5: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với PORT A và PORT B, PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP
SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 4 nối J64 (PORT1) ở với J153 (CTRL 8255) ở khối mở rộng port I/O (chú ý là ta chỉ nối 4
bit cao của J64 với J153).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J79 (PORT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J84 (PORT B) ở khối mở rộng port I/O với J12 (BAR LED 2) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với

nguồn +5V ở khối nguồn.

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
D8
D15
D14

D13
D12
D11
D10
D9
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
D8

CS
RD
A1
A0
WR
CS
A0
A1
RD
WR
D7
SW0
D0
D1
D2
D3
D4
D5
D6
D9
D10
D11
D12
D13
D14
D15
SW1
SW2
SW4
SW3

SW5
SW6
SW7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7

32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR

16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1

10k
+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V

D7
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D8
R10
330
+5V
D9
R11
330
+5V

D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
2
3
4
5
6

7
8
9
1
RP2
10K
+5V
D0
34
D1
33
D2
32
D3
31
D4
30
D5
29
D6
28
D7
27
RD
5
WR
36
A0
9
A1

8
RESET
35
CS
6
PA0
4
PA1
3
PA2
2
PA3
1
PA4
40
PA5
39
PA6
38
PA7
37
PB0
18
PB1
19
PB2
20
PB3
21
PB4

22
PB5
23
PB6
24
PB7
25
PC0
14
PC1
15
PC2
16
PC3
17
PC4
13
PC5
12
PC6
11
PC7
10
U2
8255A
VCC=VDD

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 5: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với PORT A và PORT B, PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP

SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 5: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với PORT A và PORT B, PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP
SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí
;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 1 IC 8255
;LAM CHO 8 LED SANG DAN (PORT A) VA 8 LED SANG DUOI (PORT B).
;***************************************************
;KET NOI: CS 8255 -> P1.0 A0 -> P1.4 (A1A0 = 00 -> PORT A, A1A0 = 01 -> PORT B)
; OE 74245 -> P1.1 A1 -> P1.5 (A1A0 = 10 -> PORT C, A1A0 = 11 -> CWR)
; LATCH 74573 -> P1.2 (IC1 - A) RD -> P1.6 (RD = 0 -> READ 8255 - INPUT)
; LATCH 74573 -> P1.3 (IC2 - B) WR -> P1.7 (WR = 0 -> WRITE 8255 - OUPUT)
; LED0 - LED7 -> PORT A (PORT 0)
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)
OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)
LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
ADD0 BIT P1.4 ;BIT CHON DIA CHI 8255 (A0)
ADD1 BIT P1.5 ;BIT CHON DIA CHI 8255 (A1)
RD_8255 BIT P1.6 ;BIT DIEU KHIEN DOC DU LIEU TU PORT 8255 (ACT = 0)
WR_8255 BIT P1.7 ;BIT DIEU KHIEN GHI DU LIEU RA PORT 8255 (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU

;***************************************************
ORG 00H
MAIN:
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
SETB RD_8255 ;CAM GHI VA DOC DU LIEU TAI PORT CUA 8255 (RD = 1, WR = 1)
SETB WR_8255
MOV A,#89H ;NAP CWR DE QUI DINH CAU HINH 8255
ACALL WRITE_CWR ;MODE 0: PORT A = OUTPUT, PORT B = OUTPUT, PORT C = INPUT
;***************************************************
MP1:
MOV A,#0FFH ;TAT 16 LED
ACALL WRITE_PORTA ;XUAT DU LIEU RA LED (PORT A)
ACALL WRITE_PORTB ;XUAT DU LIEU RA LED (PORT B)
ACALL DELAY500MS ;TAO THOI GIAN TRE
MOV R0,#0FEH ;GIA TRI BAN DAU DUNG CHO LED SANG DAN (NHOM 1)
MOV R1,#7FH ;GIA TRI BAN DAU DUNG CHO LED SANG DUOI (NHOM 2)
LOOP1:
;***************************************************
MOV A,R1 ;LAY DU LIEU
ACALL WRITE_PORTB ;XUAT DU LIEU RA 8 LED (PORT B)
MOV A,R1
RR A ;DICH - DIEU KHIEN SANG DUOI QUA CAC LED
MOV R1,A
;***************************************************
MOV A,R0 ;LAY DU LIEU
ACALL WRITE_PORTA ;XUAT DU LIEU RA 8 LED (PORT A)
CLR C ;XOA CO C, CY = 0

MOV A,R0
RLC A ;DICH - DIEU KHIEN SANG DAN QUA CAC LED
MOV R0,A
;***************************************************
ACALL DELAY500MS ;TAO THOI GIAN TRE
JC LOOP1 ;LAP LAI QUA TRINH SANG DAN VA SANG DUOI
SJMP MP1 ;LAP LAI TU DAU
;***************************************************
WRITE_PORTA: ;CTC GHI DU LIEU RA PORT A CUA 8255 (DU LIEU CHUA TRONG ACC)
CLR ADD1 ;DIA CHI PORT A (A1 = 0, A1 = 0)
CLR ADD0
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 5: Chương trình điều khiển Port I/O dùng 8255, làm cho 8 LED sáng dần và 8 LED sáng đuổi (LED được
nối với PORT A và PORT B, PORT 0 được nối với DATA IN/OUT, PORT1 được nối với CHIP
SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí
RET
;***************************************************
WRITE_PORTB: ;CTC GHI DU LIEU RA PORT B CUA 8255 (DU LIEU CHUA TRONG ACC)
CLR ADD1 ;DIA CHI PORT B (A1 = 0, A0 = 1)
SETB ADD0
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)

SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
WRITE_CWR: ;CTC GHI DU LIEU RA CWR CUA 8255 (DU LIEU CHUA TRONG ACC)
SETB ADD1 ;DIA CHI CWR (A1 = 1, A0 = 1)
SETB ADD0
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:

(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 6: Chương trình điều khiển Port I/O dùng 8255, liên tục đọc các giá trị từ các cơng tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các cơng tắc này lên LED
(LED được nối với PORT B, SWITCH được nối với PORT A, PORT 0 được nối với DATA IN/OUT,
PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở với J154 (CHIP SELECT) ở khối mở rộng port I/O (chú ý là ta chỉ nối
4 bit thấp của J64 với J154).
• Dùng dây bus 4 nối J64 (PORT1) ở với J153 (CTRL 8255) ở khối mở rộng port I/O (chú ý là ta chỉ nối 4
bit cao của J64 với J153).
• Dùng dây bus 8 nối J63 (PORT0/DATA) ở khối vi điều khiển với J83 (DATA IN/OUT) ở khối mở rộng
port I/O.
• Dùng dây bus 8 nối J79 (PORT A) ở khối mở rộng port I/O với J34 (SWITCH) ở khối cơng tắc.
• Dùng dây bus 8 nối J84 (PORT B) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây ba bus 3 nối J107 (POWER) ở khối mở rộng port I/O, J106 (POWER) ở khối cơng tắc và J103
(POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.
PORT A
DATA IN
PORT CPORT B
DATA OUT
DATA OUT
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
POWERSWITCH

3
3

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
D8
D15

D14
D13
D12
D11
D10
D9
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

D8
CS
RD
A1
A0
WR
CS
A0
A1
RD
WR
D7
SW0
D0
D1
D2
D3
D4
D5
D6
D9
D10
D11
D12
D13
D14
D15
SW1
SW2
SW4

SW3
SW5
SW6
SW7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33

P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17

P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF

R1
10k
+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330

+5V
D7
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONGMẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
MẠCH ĐIỀU KHIỂN XUẤT/NHẬP DỮ LIỆU DẠNG SONG SONG
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT/NHẬP)
D8
R10
330
+5V
D9
R11
330

+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
2
3
4
5

6
7
8
9
1
RP2
10K
+5V
D0
34
D1
33
D2
32
D3
31
D4
30
D5
29
D6
28
D7
27
RD
5
WR
36
A0
9

A1
8
RESET
35
CS
6
PA0
4
PA1
3
PA2
2
PA3
1
PA4
40
PA5
39
PA6
38
PA7
37
PB0
18
PB1
19
PB2
20
PB3
21

PB4
22
PB5
23
PB6
24
PB7
25
PC0
14
PC1
15
PC2
16
PC3
17
PC4
13
PC5
12
PC6
11
PC7
10
U2
8255A
VCC=VDD

M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 6: Chương trình điều khiển Port I/O dùng 8255, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và

hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PORT B, SWITCH được nối với PORT A, PORT 0 được nối với DATA IN/OUT,
PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN PORT I/O DUNG 1 IC 8255
;LAM CHO 8 LED (PORT B) SANG/TAT THEO TRANG THAI CAC SW (PORT C).
;***************************************************
;KET NOI: CS 8255 -> P1.0 A0 -> P1.4 (A1A0 = 00 -> PORT A, A1A0 = 01 -> PORT B)
; OE 74245 -> P1.1 A1 -> P1.5 (A1A0 = 10 -> PORT C, A1A0 = 11 -> CWR)
; LATCH 74573 -> P1.2 (IC1 - A) RD -> P1.6 (RD = 0 -> READ 8255 - INPUT)
; LATCH 74573 -> P1.3 (IC2 - B) WR -> P1.7 (WR = 0 -> WRITE 8255 - OUPUT)
; LED0 - LED7 -> PORT A (PORT 0)
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 6: Chương trình điều khiển Port I/O dùng 8255, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PORT B, SWITCH được nối với PORT A, PORT 0 được nối với DATA IN/OUT,
PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí
CS_8255 BIT P1.0 ;BIT CHO PHEP 8255 HOAT DONG (ACT = 0)
OE_245 BIT P1.1 ;BIT CHO PHEP 74245 HOAT DONG (ACT = 0)
LAT_573A BIT P1.2 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-A (ACT = 0)
LAT_573B BIT P1.3 ;BIT CHO PHEP CHOT DU LIEU CUA 74573-B (ACT = 0)
ADD0 BIT P1.4 ;BIT CHON DIA CHI 8255 (A0)
ADD1 BIT P1.5 ;BIT CHON DIA CHI 8255 (A1)

RD_8255 BIT P1.6 ;BIT DIEU KHIEN DOC DU LIEU TU PORT 8255 (ACT = 0)
WR_8255 BIT P1.7 ;BIT DIEU KHIEN GHI DU LIEU RA PORT 8255 (ACT = 0)
DATABUS EQU P0 ;PORT XUAT DU LIEU
;***************************************************
ORG 00H
MAIN:
SETB CS_8255 ;CAM 8255 HOAT DONG
SETB OE_245 ;CAM 74245 HOAT DONG
CLR LAT_573A ;CAM XUAT DU LIEU RA 74573-A (CHOT DU LIEU)
CLR LAT_573B ;CAM XUAT DU LIEU RA 74573-B (CHOT DU LIEU)
SETB RD_8255 ;CAM GHI VA DOC DU LIEU TAI PORT CUA 8255 (RD = 1, WR = 1)
SETB WR_8255
MOV A,#89H ;NAP CWR DE QUI DINH CAU HINH 8255
ACALL WRITE_CWR ;MODE 0: PORT A = OUTPUT, PORT B = OUTPUT, PORT C = INPUT
;***************************************************
LOOP:
ACALL READ_PORTC ;DOC DU LIEU TU CAC SW (PORT C)
;***************************************************
ACALL WRITE_PORTB ;XUAT DU LIEU DOC DUOC RA CAC LED (PORT B)
;***************************************************
SJMP LOOP ;LAP LAI LIEN TUC
;***************************************************
READ_PORTC: ;CTC DOC DU LIEU TU PORT C CUA 8255 (DU LIEU CHUA VAO ACC)
SETB ADD1 ;DIA CHI PORT C (A1 = 1, A0 = 0)
CLR ADD0
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
MOV DATABUS,#0FFH ;CAU HINH PORT 8051 LA PORT NHAP DU LIEU
CLR RD_8255 ;CHO PHEP DOC DU LIEU TU PORT (RD = 0)
MOV A,DATABUS ;DOC DU LIEU TU PORT
SETB RD_8255 ;CAM DOC DU LIEU TU PORT (RD = 1)

SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
WRITE_PORTB: ;CTC GHI DU LIEU RA PORT B CUA 8255 (DU LIEU CHUA TRONG ACC)
CLR ADD1 ;DIA CHI PORT B (A1 = 0, A0 = 1)
SETB ADD0
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
WRITE_CWR: ;CTC GHI DU LIEU RA CWR CUA 8255 (DU LIEU CHUA TRONG ACC)
SETB ADD1 ;DIA CHI CWR (A1 = 1, A0 = 1)
SETB ADD0
CLR CS_8255 ;CHO PHEP 8255 HOAT DONG
CLR WR_8255 ;CHO PHEP GHI DU LIEU RA PORT (WR = 0)
MOV DATABUS,A ;XUAT DU LIEU CAN GHI RA PORT
SETB WR_8255 ;CAM GHI DU LIEU RA PORT (WR = 1)
SETB CS_8255 ;CAM 8255 HOAT DONG
RET
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100

MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 6: Chương trình điều khiển Port I/O dùng 8255, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PORT B, SWITCH được nối với PORT A, PORT 0 được nối với DATA IN/OUT,
PORT1 được nối với CHIP SELECT và CTRL 8255).
Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED sáng đuổi liên tục (LED được nối với
PortB, CS8255 được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng đuổi liên tục (LED được nối với
PortA và PortB, CS8255 được nối với SELCHIP 4).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm HEX từ F xuống A
liên tục (LED0 được nối với PortA, CS8255 được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm HEX từ 00 lên FF
liên tục (LED0 được nối với PortA, LED1 được nối với PortB, CS8255 được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PortA, SWITCH được nối với PortB, CS8255 được nối với SELCHIP 4).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED

được nối với PortA, PUSH KEY được nối với PortB, CS8255 được nối với SELCHIP 5).
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với PortA, PUSH KEY được nối với
PortB, CS8255 được nối với SELCHIP 6).
• Bài 8: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED ma trận (COL-RED được nối với PortA, ROW được nối với
PortB, PUSH KEY được nối với PortC, CS8255 được nối với SELCHIP 6).
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.


×