You are on page 1of 24

KHOA CÔNG NGHỆ ĐIỆN TỬ

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

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀ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).

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.

Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí
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).

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

PORT 0
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Sơ đồ nguyên lý của hệ thống:
RP1
+5V

C2
33p
2
3
AD0
AD1 MAÏ CH ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙ N G DUÏ N G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)
4 AD2
5 AD3
+5V +5V +5V +5V +5V +5V +5V +5V
X1 6 AD4
7 AD5
12MHz
C1 8 AD6
33p 9 AD7
R9 R8 R7 R6 R5 R4 R3 R2
10K 330 330 330 330 330 330 330 330
+5V U1 U2
19 39 AD0 AD0 2 19 D0
XTAL1 P0.0/AD0 D0 Q0
38 AD1 AD1 3 18 D1
P0.1/AD1 D1 Q1
37 AD2 AD2 4 17 D2
P0.2/AD2 D2 Q2
18
XTAL2 P0.3/AD3
36 AD3 AD3 5
D3 Q3
16 D3 D7 D6 D5 D4 D3 D2 D1 D0
C3 35 AD4 AD4 6 15 D4
P0.4/AD4 D4 Q4
10uF 34 AD5 AD5 7 14 D5
P0.5/AD5 D5 Q5
33 AD6 AD6 8 13 D6
P0.6/AD6 D6 Q6
9 32 AD7 AD7 9 12 D7
RST P0.7/AD7 D7 Q7
D7

D6

D5

D4

D3

D2

D1

D0

21 11
P2.0/A8 LE
R1 P2.1/A9
22 1
OE +5V +5V +5V +5V +5V +5V +5V +5V
10k 23
P2.2/A10
29 24 74HC573
PSEN P2.3/A11
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
P2.6/A14
27 R17 R16 R15 R14 R13 R12 R11 R10
28 330 330 330 330 330 330 330 330
P2.7/A15 U3
1 10 AD0 2 19 D8
P1.0 P3.0/RXD AD1 D0 Q0 +5V
2 11 3 18 D9
P1.1 P3.1/TXD D1 Q1
3 12 AD2 4 17 D10
P1.2 P3.2/INT0 D2 Q2
4
P1.3 P3.3/INT1
13 AD3 5
D3 Q3
16 D11 D15 D14 D13 D12 D11 D10 D9 D8 RP2
5 14 AD4 6 15 D12 1
P1.4 P3.4/T0 AD5 D4 Q4
6 15 7 14 D13
P1.5 P3.5/T1 D5 Q5
7 16 AD6 8 13 D14 2 SW0
P1.6 P3.6/WR D6 Q6
8 17 AD7 9 12 D15 3 SW1
D15

D14

D13

D12

D11

D10

P1.7 P3.7/RD D7 Q7
D9

D8

4 SW2
AT89C51 11 5 SW3
LE
1 6 SW4
OE
7 SW5
74HC573 8 SW6
9 SW7

U4 10K
AD0 2 18 SW0
A0 B0
AD1 3 17 SW1
A1 B1
AD2 4 16 SW2
A2 B2
AD3 5 15 SW3 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A3 B3
AD4 6 14 SW4
A4 B4
AD5 7 13 SW5
AD6 A5 B5
8 12 SW6
A6 B6
AD7 11 SW7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0

9
A7 B7
19
CE
1
AB/BA
74HC245

Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
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).
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:

Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
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).
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)

Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
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).

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

PORT 0
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3

Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
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).
1.2 Sơ đồ nguyên lý của hệ thống:
RP1

+5V
1

C2
33p
2
3
AD0
AD1 MAÏ CH ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙ N G DUÏ N G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)
4 AD2
5 AD3
+5V +5V +5V +5V +5V +5V +5V +5V
X1 6 AD4
7 AD5
12MHz
C1 8 AD6
33p 9 AD7
R9 R8 R7 R6 R5 R4 R3 R2
10K 330 330 330 330 330 330 330 330
+5V U1 U2
19 39 AD0 AD0 2 19 D0
XTAL1 P0.0/AD0 D0 Q0
38 AD1 AD1 3 18 D1
P0.1/AD1 D1 Q1
37 AD2 AD2 4 17 D2
P0.2/AD2 D2 Q2
18
XTAL2 P0.3/AD3
36 AD3 AD3 5
D3 Q3
16 D3 D7 D6 D5 D4 D3 D2 D1 D0
C3 35 AD4 AD4 6 15 D4
P0.4/AD4 D4 Q4
10uF 34 AD5 AD5 7 14 D5
P0.5/AD5 D5 Q5
33 AD6 AD6 8 13 D6
P0.6/AD6 D6 Q6
9 32 AD7 AD7 9 12 D7
RST P0.7/AD7 D7 Q7

D7

D6

D5

D4

D3

D2

D1

D0
21 11
P2.0/A8 LE
R1 P2.1/A9
22 1
OE +5V +5V +5V +5V +5V +5V +5V +5V
10k 23
P2.2/A10
29 24 74HC573
PSEN P2.3/A11
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
P2.6/A14
27 R17 R16 R15 R14 R13 R12 R11 R10
28 330 330 330 330 330 330 330 330
P2.7/A15 U3
1 10 AD0 2 19 D8
P1.0 P3.0/RXD AD1 D0 Q0 +5V
2 11 3 18 D9
P1.1 P3.1/TXD D1 Q1
3 12 AD2 4 17 D10
P1.2 P3.2/INT0 D2 Q2
4
P1.3 P3.3/INT1
13 AD3 5
D3 Q3
16 D11 D15 D14 D13 D12 D11 D10 D9 D8 RP2
5 14 AD4 6 15 D12 1
P1.4 P3.4/T0 AD5 D4 Q4
6 15 7 14 D13
P1.5 P3.5/T1 D5 Q5
7 16 AD6 8 13 D14 2 SW0
P1.6 P3.6/WR D6 Q6
8 17 AD7 9 12 D15 3 SW1
D15

D14

D13

D12

D11

D10
P1.7 P3.7/RD D7 Q7

D9

D8
4 SW2
AT89C51 11 5 SW3
LE
1 6 SW4
OE
7 SW5
74HC573 8 SW6
9 SW7

U4 10K
AD0 2 18 SW0
A0 B0
AD1 3 17 SW1
A1 B1
AD2 4 16 SW2
A2 B2
AD3 5 15 SW3 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A3 B3
AD4 6 14 SW4
A4 B4
AD5 7 13 SW5
AD6 A5 B5
8 12 SW6
A6 B6
AD7 11 SW7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0
9
A7 B7
19
CE
1
AB/BA
74HC245

Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
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).

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


M2 BEGIN
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

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
LOOP1:
(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)

DELAY500MS DỊCH PHẢI (R1)


(XEM CTC NÀY TẠI VÍ DỤ A1) RR A / SÁNG ĐUỔI

(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)

XÓA CỜ CY
(CY) = 0

DỊCH TRÁI (R0) KÈM C


RLC A / SÁNG DẦN

GỌI CTC TẠO TRỄ


DELAY500MS

CHƯA SÁNG 8 LED Đ


(C) = 1

S
;***************************************************
;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
;***************************************************

Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
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).
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)

Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
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).

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

PORT 0
SWITCH POWER

PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
3

Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
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).
1.2 Sơ đồ nguyên lý của hệ thống:
RP1

+5V
1

C2
33p
2
3
AD0
AD1 MAÏ CH ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙ N G DUÏ N G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)
4 AD2
5 AD3
+5V +5V +5V +5V +5V +5V +5V +5V
X1 6 AD4
7 AD5
12MHz
C1 8 AD6
33p 9 AD7
R9 R8 R7 R6 R5 R4 R3 R2
10K 330 330 330 330 330 330 330 330
+5V U1 U2
19 39 AD0 AD0 2 19 D0
XTAL1 P0.0/AD0 D0 Q0
38 AD1 AD1 3 18 D1
P0.1/AD1 D1 Q1
37 AD2 AD2 4 17 D2
P0.2/AD2 D2 Q2
18
XTAL2 P0.3/AD3
36 AD3 AD3 5
D3 Q3
16 D3 D7 D6 D5 D4 D3 D2 D1 D0
C3 35 AD4 AD4 6 15 D4
P0.4/AD4 D4 Q4
10uF 34 AD5 AD5 7 14 D5
P0.5/AD5 D5 Q5
33 AD6 AD6 8 13 D6
P0.6/AD6 D6 Q6
9 32 AD7 AD7 9 12 D7
RST P0.7/AD7 D7 Q7

D7

D6

D5

D4

D3

D2

D1

D0
21 11
P2.0/A8 LE
R1 P2.1/A9
22 1
OE +5V +5V +5V +5V +5V +5V +5V +5V
10k 23
P2.2/A10
29 24 74HC573
PSEN P2.3/A11
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
P2.6/A14
27 R17 R16 R15 R14 R13 R12 R11 R10
28 330 330 330 330 330 330 330 330
P2.7/A15 U3
1 10 AD0 2 19 D8
P1.0 P3.0/RXD AD1 D0 Q0 +5V
2 11 3 18 D9
P1.1 P3.1/TXD D1 Q1
3 12 AD2 4 17 D10
P1.2 P3.2/INT0 D2 Q2
4
P1.3 P3.3/INT1
13 AD3 5
D3 Q3
16 D11 D15 D14 D13 D12 D11 D10 D9 D8 RP2
5 14 AD4 6 15 D12 1
P1.4 P3.4/T0 AD5 D4 Q4
6 15 7 14 D13
P1.5 P3.5/T1 D5 Q5
7 16 AD6 8 13 D14 2 SW0
P1.6 P3.6/WR D6 Q6
8 17 AD7 9 12 D15 3 SW1
D15

D14

D13

D12

D11

D10
P1.7 P3.7/RD D7 Q7

D9

D8
4 SW2
AT89C51 11 5 SW3
LE
1 6 SW4
OE
7 SW5
74HC573 8 SW6
9 SW7

U4 10K
AD0 2 18 SW0
A0 B0
AD1 3 17 SW1
A1 B1
AD2 4 16 SW2
A2 B2
AD3 5 15 SW3 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
A3 B3
AD4 6 14 SW4
A4 B4
AD5 7 13 SW5
AD6 A5 B5
8 12 SW6
A6 B6
AD7 11 SW7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0
9
A7 B7
19
CE
1
AB/BA
74HC245

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

Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
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).
;***************************************************
;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).

Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
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).
• 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.

Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
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).

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ơ đồ nguyên lý của hệ thống:


MAÏC H ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙN G DUÏN G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)

+5V +5V +5V +5V +5V +5V +5V +5V

RP1
+5V

C2 R9 R8 R7 R6 R5 R4 R3 R2
2 AD0
330 330 330 330 330 330 330 330
33p 3 AD1
4 AD2
5 AD3
X1 6 AD4
12MHz 7 AD5 D7 D6 D5 D4 D3 D2 D1 D0
C1 8 AD6
33p 9 AD7

10K
+5V U1 U2
D7

D6

D5

D4

D3

D2

D1

D0

19 39 AD0 AD0 34 4 D0
XTAL1 P0.0/AD0 D0 PA0
38 AD1 AD1 33 3 D1
P0.1/AD1 D1 PA1 +5V +5V +5V +5V +5V +5V +5V +5V
37 AD2 AD2 32 2 D2
P0.2/AD2 D2 PA2
18 36 AD3 AD3 31 1 D3
XTAL2 P0.3/AD3 D3 PA3 +5V
C3 P0.4/AD4
35 AD4 AD4 30
D4 PA4
40 D4
10uF 34 AD5 AD5 29 39 D5
R10 RP2
P0.5/AD5 D5 PA5
33 AD6 AD6 28 38 D6 R17 R16 R15 R14 R13 R12 R11
P0.6/AD6 D6 PA6
9 32 AD7 AD7 27 37 D7
330 330 330 330 330 330 330 330 1
RST P0.7/AD7 D7 PA7
21 RD 5 18 D8 2 SW0
P2.0/A8 RD PB0
R1 22 WR 36 19 D9 3 SW1
P2.1/A9 WR PB1
23 A0 9 20 D10 4 SW2
10k P2.2/A10 A0 PB2
29
PSEN P2.3/A11
24 A1 8
A1 PB3
21 D11 D15 D14 D13 D12 D11 D10 D9 D8 5 SW3
30 25 35 22 D12 6 SW4
ALE P2.4/A12 RESET PB4
31 26 23 D13 7 SW5
EA P2.5/A13 PB5
27 CS 6 24 D14 8 SW6
P2.6/A14 CS PB6
28 25 D15 9 SW7
D15

D14

D13

D12

D11

D10

P2.7/A15 PB7
D9

D8

CS 1 10 14 SW0 10K
P1.0 P3.0/RXD PC0
2 11 15 SW1
P1.1 P3.1/TXD PC1
3 12 16 SW2
P1.2 P3.2/INT0 PC2
4 13 17 SW3
P1.3 P3.3/INT1 PC3
A0 5 14 13 SW4
P1.4 P3.4/T0 PC4
A1 6 15 12 SW5 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
P1.5 P3.5/T1 PC5
RD 7 16 11 SW6
P1.6 P3.6/WR PC6
WR 8 17 10 SW7
P1.7 P3.7/RD PC7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0

AT89C51
8255A
VCC=VDD

Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
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).

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:

Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
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).
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)

Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
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).

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ơ đồ nguyên lý của hệ thống:


MAÏC H ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙN G DUÏN G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)

+5V +5V +5V +5V +5V +5V +5V +5V

RP1
+5V

C2 R9 R8 R7 R6 R5 R4 R3 R2
2 AD0
330 330 330 330 330 330 330 330
33p 3 AD1
4 AD2
5 AD3
X1 6 AD4
12MHz 7 AD5 D7 D6 D5 D4 D3 D2 D1 D0
C1 8 AD6
33p 9 AD7

10K
+5V U1 U2
D7

D6

D5

D4

D3

D2

D1

D0

19 39 AD0 AD0 34 4 D0
XTAL1 P0.0/AD0 D0 PA0
38 AD1 AD1 33 3 D1
P0.1/AD1 D1 PA1 +5V +5V +5V +5V +5V +5V +5V +5V
37 AD2 AD2 32 2 D2
P0.2/AD2 D2 PA2
18 36 AD3 AD3 31 1 D3
XTAL2 P0.3/AD3 D3 PA3 +5V
C3 P0.4/AD4
35 AD4 AD4 30
D4 PA4
40 D4
10uF 34 AD5 AD5 29 39 D5
R10 RP2
P0.5/AD5 D5 PA5
33 AD6 AD6 28 38 D6 R17 R16 R15 R14 R13 R12 R11
P0.6/AD6 D6 PA6
9 32 AD7 AD7 27 37 D7
330 330 330 330 330 330 330 330 1
RST P0.7/AD7 D7 PA7
21 RD 5 18 D8 2 SW0
P2.0/A8 RD PB0
R1 22 WR 36 19 D9 3 SW1
P2.1/A9 WR PB1
23 A0 9 20 D10 4 SW2
10k P2.2/A10 A0 PB2
29
PSEN P2.3/A11
24 A1 8
A1 PB3
21 D11 D15 D14 D13 D12 D11 D10 D9 D8 5 SW3
30 25 35 22 D12 6 SW4
ALE P2.4/A12 RESET PB4
31 26 23 D13 7 SW5
EA P2.5/A13 PB5
27 CS 6 24 D14 8 SW6
P2.6/A14 CS PB6
28 25 D15 9 SW7
D15

D14

D13

D12

D11

D10

P2.7/A15 PB7
D9

D8

CS 1 10 14 SW0 10K
P1.0 P3.0/RXD PC0
2 11 15 SW1
P1.1 P3.1/TXD PC1
3 12 16 SW2
P1.2 P3.2/INT0 PC2
4 13 17 SW3
P1.3 P3.3/INT1 PC3
A0 5 14 13 SW4
P1.4 P3.4/T0 PC4
A1 6 15 12 SW5 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
P1.5 P3.5/T1 PC5
RD 7 16 11 SW6
P1.6 P3.6/WR PC6
WR 8 17 10 SW7
P1.7 P3.7/RD PC7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0

AT89C51
8255A
VCC=VDD

Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
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).
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí
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).
;***************************************************
;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

Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí
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).
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)

Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí
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).

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.
SWITCH POWER

PORT A

PORT 0
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
3

PORT 2

PORT 3
3

1.2 Sơ đồ nguyên lý của hệ thống:


MAÏC H ÑIEÀ U KHIEÅ N XUAÁ T/NHAÄ P DÖÕ LIEÄ U DAÏ NG SONG SONG
(ÖÙN G DUÏN G MÔÛ ROÄNG PORT XUAÁT/NHAÄP)

+5V +5V +5V +5V +5V +5V +5V +5V

RP1
+5V

C2 R9 R8 R7 R6 R5 R4 R3 R2
2 AD0
330 330 330 330 330 330 330 330
33p 3 AD1
4 AD2
5 AD3
X1 6 AD4
12MHz 7 AD5 D7 D6 D5 D4 D3 D2 D1 D0
C1 8 AD6
33p 9 AD7

10K
+5V U1 U2
D7

D6

D5

D4

D3

D2

D1

D0

19 39 AD0 AD0 34 4 D0
XTAL1 P0.0/AD0 D0 PA0
38 AD1 AD1 33 3 D1
P0.1/AD1 D1 PA1 +5V +5V +5V +5V +5V +5V +5V +5V
37 AD2 AD2 32 2 D2
P0.2/AD2 D2 PA2
18 36 AD3 AD3 31 1 D3
XTAL2 P0.3/AD3 D3 PA3 +5V
C3 P0.4/AD4
35 AD4 AD4 30
D4 PA4
40 D4
10uF 34 AD5 AD5 29 39 D5
R10 RP2
P0.5/AD5 D5 PA5
33 AD6 AD6 28 38 D6 R17 R16 R15 R14 R13 R12 R11
P0.6/AD6 D6 PA6
9 32 AD7 AD7 27 37 D7
330 330 330 330 330 330 330 330 1
RST P0.7/AD7 D7 PA7
21 RD 5 18 D8 2 SW0
P2.0/A8 RD PB0
R1 22 WR 36 19 D9 3 SW1
P2.1/A9 WR PB1
23 A0 9 20 D10 4 SW2
10k P2.2/A10 A0 PB2
29
PSEN P2.3/A11
24 A1 8
A1 PB3
21 D11 D15 D14 D13 D12 D11 D10 D9 D8 5 SW3
30 25 35 22 D12 6 SW4
ALE P2.4/A12 RESET PB4
31 26 23 D13 7 SW5
EA P2.5/A13 PB5
27 CS 6 24 D14 8 SW6
P2.6/A14 CS PB6
28 25 D15 9 SW7
D15

D14

D13

D12

D11

D10

P2.7/A15 PB7
D9

D8

CS 1 10 14 SW0 10K
P1.0 P3.0/RXD PC0
2 11 15 SW1
P1.1 P3.1/TXD PC1
3 12 16 SW2
P1.2 P3.2/INT0 PC2
4 13 17 SW3
P1.3 P3.3/INT1 PC3
A0 5 14 13 SW4
P1.4 P3.4/T0 PC4
A1 6 15 12 SW5 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
P1.5 P3.5/T1 PC5
RD 7 16 11 SW6
P1.6 P3.6/WR PC6
WR 8 17 10 SW7
P1.7 P3.7/RD PC7
SW7

SW6

SW5

SW4

SW3

SW2

SW1

SW0

AT89C51
8255A
VCC=VDD

Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí
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).
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
;***************************************************

Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí
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).
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)

Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí
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).
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.

Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí

You might also like