Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
CHƯƠNG 4: GIAO TIẾP VỚI CÁC THIẾT
BỊ ĐƠN GIẢN
1. Giao tiếp LED (Light Emitting Diode)
Để giúp cho người sử dụng có thể giao tiếp với máy móc thiết bị điều khiển, ta
cần phải có một màn hình hiển thị số và chữ cái.Trong các hệ thống cần hiển thị một
lượng lớn thông tin dữ liệu thường dùng CRT (màn hình) để hiển thị còn khi chỉ cần
hiển thị một lượng nhỏ thông tin thì sẽ dùng các thiết bị hiển thị số đơn giản do giá rẻ
và dễ điều khiển. Có nhiều loại màn hình hiển thị như CRT, LCD, LED, … Ta chỉ xét
thiết bị hiển thị đơn giản là LED. Hiển thị số và chữ dùng LED có 3 loại chính.Với các
ứng dụng hiển thị dùng để chỉ thị thì dùng LED đơn, để hiện số và chữ số thì dùng Led
7 đoạn hay Led 18 đoạn, để hiển thị ký tự bất kỳ thì dùng ma trận Led.
1.1. Giao tiếp LED đơn
Hình 4.1 - Mô tả LED và biểu diễn trong mạch
Khi LED sáng, dòng qua LED khoảng 10 – 40 mA và điện áp rơi trên LED vào
khoảng 1.8V – 2V. Khi đó, ta có mạch điện điều khiển LED như sau:
VCC
D1 R1 D1
R1
IN IN
LED RESISTOR RESISTOR
LED
Hình a Hình b
Hình 4.2 – Sơ đồ kết nối LED đơn
Giả sử mạch kết nối với 8255A có điện áp ứng với mức logic 0 từ 0 – 0.4V và
mức logic 1 từ 4.6V – 5V. Chọn dòng qua LED là 20 mA và điện áp rơi trên LED là
2V.
Xét hình a: LED sáng khi mức logic tại chân IN là mức 0, ứng với điện áp 0.4V
nên giá trị điện trở R1 là:
Vcc − VLED − 0.4 5 − 2 − 0.4
R1 = = = 130Ω chọn R1 = 150 Ω
I LED 20 x10 −3
Phạm Hùng Kim Khánh Trang 109
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Xét hình b: LED sáng khi mức logic tại chân IN là mức 1, ứng với điện áp 4.6V
nên giá trị điện trở R1 là:
VIN − VLED 4 .6 − 2
R1 = = = 130Ω chọn R1 = 150 Ω
I LED 20 x10 −3
Tuy nhiên khi thiết kế mạch như hình b thì lưu ý rằng dòng tại chân IN phải đáp
ứng được giá trị 20 mA. Đối với 8255A, dòng ngõ ra vào khoảng 2.5 mA nên không
đáp ứng đủ dòng để sáng LED nên phải dùng thêm mạch khuếch đại.
Thông thường khi thiết kế giao tiếp với 8255A, ta sử dụng mạch hình a nhưng
lưu ý là đối với cách thiết kế như trên thì dòng sẽ đi trực tiếp vào cổng vào/ra của
8255A nên ta có thể dùng thêm các cổng đệm hay đảo để tránh làm hư cổng.
VCC
U1A
D1 R1
1 2
IN
LED RESISTOR
74LS04
Hình 4.3 – Sơ đồ kết nối LED đơn dùng cổng đảo
Xét sơ đồ kết nối giữa LED đơn và 8255 như sau:
VCC
R1 R2 R3 R4 R5 R6 R7 R8
D1 D2 D3 D4 D5 D6 D7 D8
LED LED LED LED LED LED LED LED
7404
34 4 1 2
33 D0 PA0 3
32 D1 PA1 2
31 D2 PA2 1
30 D3 PA3 40 1 2
29 D4 PA4 39
28 D5 PA5 38
27 D6 PA6 37
D7 PA7 1 2
9 18
8 A0 PB0 19
A1 PB1 20
35 PB2 21 1 2
5 RESET PB3 22
36 RD PB4 23
6 WR PB5 24
CS PB6 25 1 2
PB7
14
PC0 15
PC1 16 1 2
PC2 17
PC3 13
PC4 12
PC5 11 1 2
PC6 10
PC7
8255 1 2
Hình 4.4 - Kết nối giữa LED đơn và 8255
Phạm Hùng Kim Khánh Trang 110
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Chương trình hợp ngữ quét LED từ trái sang phải như sau (giả sử địa chỉ Port
A, Port B, Port C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h):
.MODEL SMALL
.STACK 100h
.DATA
Led_data DB 01h,02h,04h,08h,10h,20h,40h,80h
.CODE
Main PROC
MOV AX,@DATA
MOV DS, AX ; Gán địa chỉ cho Data segment
MOV AL,80h ; Định cấu hình cho 8255
MOV DX,303h ; Port A: xuất, Port B: xuất
OUT DX,AL ; Port C: xuất
MOV BX,0
Lap:
MOV AL,Led_data[BX]
MOV DX,300h ; Địa chỉ LED
OUT DX,AL
MOV CX,0FFh
Delay: ; Tạo thời gian trễ
PUSH CX
MOV CX,0FFFFh
LOOP $
POP CX
LOOP delay
INC BX
CMP BX,8 ; LED có 8 trạng thái
JNE lap
MOV AH,4Ch ; Kết thúc chương trình
INT 21h
Main ENDP
END Main
1.2. Giao tiếp ma trận LED
Ma trận LED bao gồm nhiều LED cùng nằm trong một vỏ chia thành nhiều cột
và hàng, mỗi giao điểm giữa hàng và cột có thể có 1 LED (ma trận LED một màu) hay
nhiều LED (2 LED tại một vị trí tạo thành ma trận LED 3 màu). Để LED tại một vị trí
nào đó sáng thì phải cấp điện áp dương tại Anode và điện áp âm tại Cathode (nghĩa là
cấp mức logic 1 tại hàng và logic 0 tại cột ứng với ma trận LED có kết nối như hình
4.5). Trên cơ sở cấu trúc như hình vẽ 4.5, ta có thể mở rộng hàng và cột của ma trận
LED để tạo thành các bảng quang báo.
Phạm Hùng Kim Khánh Trang 111
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Hình 4.5 – Cấu trúc và hình dạng của ma trận LED 5x8
Hình 4.6 – Sáng chữ ‘A’ trên ma trận LED 5x8
Phạm Hùng Kim Khánh Trang 112
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Xét sơ đồ kết nối ma trận LED với 8255 như hình 4.7 trong đó Port A điều
khiển hàng thông qua các transistor và Port B điều khiển cột (địa chỉ Port A, B, C và
CR của 8255 lần lượt là 300h, 301h, 302h và 303h).
R2x8
1 16
VCC
2 15
3 14
4 13
5 12
6 11
7 10
8 9
U10 R1x8
34 4 1 16 Q1x8
33 D0 PA0 3 2 15
32 D1 PA1 2 3 14
31 D2 PA2 1 4 13
30 D3 PA3 40 5 12
29 D4 PA4 39 6 11
28 D5 PA5 38 7 10
27 D6 PA6 37 8 9
D7 PA7
9 18
8 A0 PB0 19
A1 PB1 20 1 2
35 PB2 21
5 RESET PB3 22
36 RD PB4 23
6 WR PB5 24
CS PB6 25
PB7
14
PC0 15
PC1 16
PC2 17
PC3 13 1 2
PC4 12
PC5 11
PC6 10
PC7 7404x5
8255
Hình 4.7 – Kết nối ma trận LED với 8255
Tính toán cho mạch:
Transistor Q1 hoạt động ở chế độ bão hoà với dòng Ic là dòng qua LED nên
chọn Q1 có β = 50, VCE = 0,2V , VBE = 0,7V
Vcc − VLED − VOL −7404 − VCE 5 − 2 − 0, 4 − 0, 2
R2 = = = 240 Ω, chọn R2 = 220 Ω
I LED 0,01
VOH −8255 − VBE − VLED − VOL−7404 4,6 − 0,7 − 2 − 0, 4
R1 = = = 7.5 KΩ, chọn R1 =
IB 0,01/ 50
8.2 KΩ
Phạm Hùng Kim Khánh Trang 113
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Để hiển thị một ký tự trên ma trận LED, ta sẽ cho sáng các LED tương ứng. Ví
dụ như để sáng chữ ‘A’ trên ma trận LED, ta cho tương ứng LED sáng như hình 4.6.
Tuy nhiên, ta không thể cho sáng đồng thời 2 LED tại 2 vị trí hàng và cột khác nhau vì
sẽ ảnh hưởng đến các LED còn lại. Ví dụ như khi sáng LED tại hàng 1, cột 2 (PA0 =
1, PB1 = 1) và hàng 2, cột 1 (PA1 = 1, PB0 = 1) thì do PA0 = 1, PB0 = 1; PA1 = 1,
PB1 = 1 nên LED tại hàng 1, cột 1 và hàng 2, cột 2 cũng sáng.
Như vậy để sáng ký tự ‘A’ trên ma trận LED thì phải dùng phương pháp quét
khi hiển thị dữ liệu trên ma trận LED. Quá trình quét có thể thực hiện quét dòng hay
cột. Khi thực hiện quét cột, tại mỗi thời điểm chỉ có một cột sáng. Dữ liệu cho Port B
và Port B của 8255A như sau:
- Cột 1: sáng 7 LED
PB0 = 1, PB1 – 4 = 0: PB = xxx0 0001b (01h)
PA0 = 0, PA1 – 7 = 1: PA = 1111 1110b (0FEh)
- Cột 2: sáng 2 LED
PB0 = 0, PB2 – 4 = 0, PB1 = 1: PB = xxx0 0010b (02h)
PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0:
PA = 0001 0001b (11h)
- Cột 3: giống cột 2
PB0 - 1 = 0, PB3 – 4 = 0, PB2 = 1:
PB = xxx0 0100b (04h)
PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0:
PA = 0001 0001b (11h)
- Cột 4: giống cột 2
PB0 - 2 = 0, PB4 = 0, PB3 = 1: PB = xxx0 1000b (08h)
PA0 = 1, PA4 = 1, PA1 – 3 = 0, PA5 – 7 = 0:
PA = 0001 0001b (11h)
- Cột 5: giống cột 1
PB0 - 3 = 0, PB4 = 1: PB = xxx1 0000b (10h)
PA0 = 0, PA1 – 7 = 1: PA = 1111 1110b (0FEh)
Chương trình hiển thị cho ma trận LED như sau:
.MODEL SMALL
.STACK 100h
.DATA
pa DB 0FEh,11h,11h,11h,0FEh
pb DB 01h,02h,04h,08h,10h
.CODE
Main PROC
MOV AX,@DATA
MOV DS, AX ; Gán địa chỉ cho Data segment
MOV AL,80h ; Định cấu hình cho 8255
Phạm Hùng Kim Khánh Trang 114
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
MOV DX,303h ; Port A: xuất, Port B: xuất
OUT DX,AL ; Port C: xuất
Start:
MOV AH,0Bh ; Kiểm tra phím nhấn
INT 21h
CMP AL,0 ; Nếu có phím nhấn
JNE Exit ; thì kết thúc chương trình
MOV BX,0
Lap:
MOV AL,pa[BX]
MOV DX,300h ; Xuất ra hàng
OUT DX,AL
MOV AL,pb[BX]
MOV DX,301h ; Xuất ra cột
OUT DX,AL
PUSH CX ; Tạo thời gian trễ
MOV CX,0FFFFh
LOOP $
POP CX
INC BX
CMP BX,5 ; Quét 5 cột
JNE lap
JMP Start
Exit:
MOV AH,4Ch ; Kết thúc chương trình
INT 21h
Main ENDP
END Main
2. Giao tiếp bàn phím
2.1. Giao tiếp phím đơn
VCC VCC
R
SW
To uP To uP
SW
R
a/ b/
Hình 4.8 – Sơ đồ kết nối phím nhấn (2 chân) với vi xử lý
Phạm Hùng Kim Khánh Trang 115
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
VCC
R
SW
To uP
Hình 4.9 – Sơ đồ kết nối phím nhấn (3 chân) với vi xử lý
Các phím đơn dùng để điều khiển khi hệ thống vi xử lý không đòi hỏi nhiều giá
trị nhập (chẳng như chỉ cần các điều khiển đóng mở thiết bị). Sơ đồ kết nối phím đơn
mô tả như hình 4.8 hay 4.9.
Khi thực hiện kiểm tra phím nhấn, vấn đề cần thiết là phải thực hiện chống dội.
Hiện tượng dội khi nhấn phím có thể mô tả như hình 4.10 (giả sử khi nhấn phím thì
ngõ ra ở mức logic 1 và nhả phím thì ngõ ra ở mức logic 0 – hình 4.8b). Quá trình
chống dội có thể thực hiện bằng phần mềm hay phần cứng.
Hình 4.10 – Hiện tượng dội khi nhấn phím
Phần mềm: Do thời gian dội của phím vào khoảng 20ms nên quá trình
chống dội bằng phần mềm đơn giản là tạo một thời gian trễ đủ lớn để
chương trình bỏ qua ảnh hưởng khi dội.
Phần cứng: Khi thực hiện chống dội bằng phần cứng, ta có thể thực
hiện bằng cách sử dụng các cổng NAND hay thực hiện bằng mạch RC.
VCC
VCC R1 R2
R
1
SW 3
To uP
2
To uP
7400
SW C
4
6
5
a/ b/ 7400
Hình 4.11 – Chống dội phím nhấn bằng phần cứng
Phạm Hùng Kim Khánh Trang 116
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Tuy nhiên khi thực hiện thiết kế phần cứng, thông thường ta sẽ chống dội bằng
phần mềm để đơn giản mạch phần cứng. Xét sơ đồ phần cứng thiết kế như hình 4.12
(giả sử địa chỉ Port A, B, C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h).
U16
34 4
33 D0 PA0 3
32 D1 PA1 2
31 D2 PA2 1
30 D3 PA3 40
29 D4 PA4 39
28 D5 PA5 38
27 D6 PA6 37
D7 PA7
9 18
8 A0 PB0 19
A1 PB1 20 VCC VCC VCC VCC
35 PB2 21
5 RESET PB3 22
36 RD PB4 23 R9 R10 R11 R12
6 WR PB5 24
CS PB6 25
PB7
14
PC0 15
PC1 16
PC2 17
PC3 13
PC4 12
PC5 11
PC6 10
PC7 SW1 SW2 SW3 SW4
8255
Hình 4.12 – Kết nối phím nhấn với 8255
Chương trình hợp ngữ kiểm tra các phím SW1, SW2, SW3, SW4 và hiển thị
trạng thái phím nhấn lên màn hình:
.MODEL SMALL
.STACK 100h
.DATA
Msg DB ‘Da nhan phim: SW‘
sw DB ?,13,10,’$’
.CODE
Main PROC
MOV AX,@DATA
MOV DS,AX
MOV AL,81h ; Định cấu hình cho 8255
MOV DX,303h ; PA, PB, PC (high): xuất
OUT DX,AL ; PC (low): nhập
Start:
MOV AH,0Bh ; Kiểm tra phím nhấn
INT 21h
CMP AL,0 ; Nếu có phím nhấn
JNE Exit ; thì kết thúc chương trình
MOV DX,302h ; Đọc từ Port C để kiểm tra
IN AL,DX ; phím nhấn
Phạm Hùng Kim Khánh Trang 117
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
AND AL,0Fh ; Xoá 4 bit cao
CMP AL,00001110b ; Nếu nhấn SW1 thì PC0 = 0
JE Sw1
CMP AL,00001101b ; Nếu nhấn SW2 thì PC1 = 0
JE Sw2
CMP AL,00001011b ; Nếu nhấn SW3 thì PC2 = 0
JE Sw3
CMP AL,00000111b ; Nếu nhấn SW4 thì PC3 = 0
JE Sw4
JMP Start
Sw1:
CALL Delay
MOV sw,’1’
MOV AH,09h
LEA DX,Msg
INT 21h
JMP Start
Sw2:
CALL Delay
MOV sw,’2’
MOV AH,09h
LEA DX,Msg
INT 21h
JMP Start
Sw3:
CALL Delay
MOV sw,’3’
MOV AH,09h
LEA DX,Msg
INT 21h
JMP Start
Sw4:
CALL Delay
MOV sw,’4’
MOV AH,09h
LEA DX,Msg
INT 21h
JMP Start
Exit:
MOV AH,4Ch ; Kết thúc chương trình
INT 21h
Main ENDP
;-------------
Delay PROC
PUSH CX
MOV CX,0FFFFh
LOOP $
Phạm Hùng Kim Khánh Trang 118
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
POP CX
RET
Delay ENDP
;-------------
END Main
2.2. Giao tiếp bàn phím Hex
Bàn phím Hex là bàn phím xây dựng theo cấu trúc ma trận gồm 16 phím chia
thành 4 hàng và 4 cột (hình 4.13).
VCC
R R R R
0 1 2 3
4 5 6 7
8 9 A B
CON8
1
2
3
4 C D E F
5
6
7
8
J1
Hình 4.13 – Cấu trúc bàn phím Hex
Lưu ý rằng khi không nhấn phím thì hàng của bàn phím Hex nối với Vcc thông
qua điện trở R nên có mức logic 1. Để phân biệt được trạng thái của phím nhấn thì
mức logic khi nhấn phím phải là mức logic 0. Mà khi nhấn một phím nào đó thì tương
ứng hàng và cột của bàn phím Hex sẽ kết nối với nhau. Do đó, để thực hiện kiểm tra
một phím thì ta phải cho trước cột chứa phím tương ứng ở mức logic 0, sau đó kiểm
tra hàng của phím, nếu hàng = 0 thì có nhấn phím còn hàng = 1 thì không nhấn phím.
Ví dụ như muốn kiểm tra phím 4 thì ta cho cột chứa phím 4 ở mức logic 0 (chân
5 của J1, các cột khác = 1, nghĩa là dữ liệu tại J1 là 1000xxxxb), sau đó thực hiện kiểm
tra chân 2 của J1 (hàng của phím 4), nếu chân này = 0 thì phím 4 được nhấn.
Xét sơ đồ kết nối của bàn phím Hex với 8255 như hình 4.14 (giả sử địa chỉ Port
A, B, C và CR của 8255 lần lượt là 300h, 301h, 302h và 303h). Ở đây ta thực hiện kết
nối với Port C của 8255 do Port C có thể chia thành 2 phần: 4 bit cao và 4 bit thấp có
thể xuất nhập độc lập trong khi đó Port A và Port B chỉ có thể đồng thời xuất hay nhập
Phạm Hùng Kim Khánh Trang 119
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
còn để xác định có phím nhấn trên bàn phím Hex hay không thì phải xuất dữ liệu điều
khiển cột và đọc dữ liệu từ hàng của bàn phím.
VCC
U17
34 4
33 D0 PA0 3 R R R R
32 D1 PA1 2
31 D2 PA2 1 0 1 2 3
30 D3 PA3 40
29 D4 PA4 39
28 D5 PA5 38
27 D6 PA6 37
D7 PA7
9 18 4 5 6 7
8 A0 PB0 19
A1 PB1 20
35 PB2 21
5 RESET PB3 22
36 RD PB4 23
6 WR PB5 24 8 9 A B
CS PB6 25
PB7
14
PC0 15
PC1 16
PC2 17 C D E F
PC3 13
PC4 12
PC5 11
PC6 10
PC7
8255
Hình 4.14 – Sơ đồ kết nối bàn phím Hex với 8255
Chương trình hợp ngữ kiểm tra bàn phím như sau:
.MODEL SMALL
.STACK 100h
.DATA
.CODE
Main PROC
MOV AX,@DATA
MOV DS,AX
MOV AL,81h ; Định cấu hình cho 8255
MOV DX,303h ; PA, PB, PC (high): xuất
OUT DX,AL ; PC (low): nhập
Start:
MOV AH,0Bh ; Kiểm tra phím nhấn
INT 21h
CMP AL,0 ; Nếu có phím nhấn
JE Next
JMP Exit ; thì kết thúc chương trình
Next:
MOV DX,302h ; Địa chỉ Port C
MOV AL,11100000b ; Cho PC4 = 0 ứng với các
Phạm Hùng Kim Khánh Trang 120
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
OUT DX,AL ; phím 0,4,8,C
IN AL,DX ; Đọc về kiểm tra hàng
AND AL,0Fh ; Xoá 4 bit cao
CMP AL,00001110b ; Nếu nhấn phím 0 thì PC0 = 0
JNE Not0
CALL Sw0
Not0:
CMP AL,00001101b ; Nếu nhấn phím 4 thì PC1 = 0
JNE Not4
CALL Sw4
Not4:
CMP AL,00001011b ; Nếu nhấn phím 8 thì PC2 = 0
JNE Not8
CALL Sw8
Not8:
CMP AL,00000111b ; Nếu nhấn phím C thì PC3 = 0
JNE NotC
CALL SwC
NotC:
MOV DX,302h ; Địa chỉ Port C
MOV AL,11010000b ; Cho PC5 = 0 ứng với các
OUT DX,AL ; phím 1,5,9,D
IN AL,DX ; Đọc về kiểm tra hàng
AND AL,0Fh ; Xoá 4 bit cao
CMP AL,00001110b ; Nếu nhấn phím 1 thì PC0 = 0
JNE Not1
CALL Sw1
Not1:
CMP AL,00001101b ; Nếu nhấn phím 5 thì PC1 = 0
JNE Not5
CALL Sw5
Not5:
CMP AL,00001011b ; Nếu nhấn phím 9 thì PC2 = 0
JNE Not9
CALL Sw9
Not9:
CMP AL,00000111b ; Nếu nhấn phím D thì PC3 = 0
JNE NotD
CALL SwD
NotD:
MOV DX,302h ; Địa chỉ Port C
Phạm Hùng Kim Khánh Trang 121
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
MOV AL,10110000b ; Cho PC6 = 0 ứng với các
OUT DX,AL ; phím 2,6,A,E
IN AL,DX ; Đọc về kiểm tra hàng
AND AL,0Fh ; Xoá 4 bit cao
CMP AL,00001110b ; Nếu nhấn phím 2 thì PC0 = 0
JNE Not2
CALL Sw2
Not2:
CMP AL,00001101b ; Nếu nhấn phím 6 thì PC1 = 0
JNE Not6
CALL Sw6
Not6:
CMP AL,00001011b ; Nếu nhấn phím A thì PC2 = 0
JNE NotA
CALL SwA
NotA:
CMP AL,00000111b ; Nếu nhấn phím E thì PC3 = 0
JNE NotE
CALL SwE
NotE:
MOV DX,302h ; Địa chỉ Port C
MOV AL,01110000b ; Cho PC7 = 0 ứng với các
OUT DX,AL ; phím 3,7,B,F
IN AL,DX ; Đọc về kiểm tra hàng
AND AL,0Fh ; Xoá 4 bit cao
CMP AL,00001110b ; Nếu nhấn phím 3 thì PC0 = 0
JNE Not3
CALL Sw3
Not3:
CMP AL,00001101b ; Nếu nhấn phím 7 thì PC1 = 0
JNE Not7
CALL Sw7
Not7:
CMP AL,00001011b ; Nếu nhấn phím B thì PC2 = 0
JNE NotB
CALL SwB
NotB:
CMP AL,00000111b ; Nếu nhấn phím F thì PC3 = 0
JNE NotF
CALL SwF
NotF:
Phạm Hùng Kim Khánh Trang 122
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
JMP Start
Exit:
MOV AH,4Ch ; Kết thúc chương trình
INT 21h
Main ENDP
;-----------
Sw0 PROC
; Chương trình cho phím 0
RET
Sw0 ENDP
;-----------
Sw1 PROC
; Chương trình cho phím 1
RET
Sw1 ENDP
;-----------
Sw2 PROC
; Chương trình cho phím 2
RET
Sw2 ENDP
;-----------
Sw3 PROC
; Chương trình cho phím 3
RET
Sw3 ENDP
;-----------
Sw4 PROC
; Chương trình cho phím 4
RET
Sw4 ENDP
;-----------
Sw5 PROC
; Chương trình cho phím 5
RET
Sw5 ENDP
;-----------
Sw6 PROC
; Chương trình cho phím 6
RET
Sw6 ENDP
;-----------
Phạm Hùng Kim Khánh Trang 123
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
Sw7 PROC
; Chương trình cho phím 7
RET
Sw7 ENDP
;-----------
Sw8 PROC
; Chương trình cho phím 8
RET
Sw8 ENDP
;-----------
Sw9 PROC
; Chương trình cho phím 9
RET
Sw9 ENDP
;-----------
SwA PROC
; Chương trình cho phím A
RET
SwA ENDP
;-----------
SwB PROC
; Chương trình cho phím B
RET
SwB ENDP
;-----------
SwC PROC
; Chương trình cho phím C
RET
SwC ENDP
;-----------
SwD PROC
; Chương trình cho phím D
RET
SwD ENDP
;-----------
SwE PROC
; Chương trình cho phím E
RET
SwE ENDP
;-----------
SwF PROC
Phạm Hùng Kim Khánh Trang 124
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
; Chương trình cho phím F
RET
SwF ENDP
;-----------
Delay PROC
PUSH CX
MOV CX,0FFFFh
LOOP $
POP CX
RET
Delay ENDP
END Main
Phạm Hùng Kim Khánh Trang 125
Giáo trình vi xử lý Giao tiếp với các thiết bị dơn giản
BÀI TẬP CHƯƠNG 4
1. Giả sử Port A của 8255 kết nối như hình 4.4, Port C kết nối với 2 công
tắc SW1, SW2 tương ứng tại PC7, PC6 tương tự như hình 4.12. Viết
chương trình hợp ngữ điều khiển công tắc sao cho:
- Nhấn SW1: LED sáng tuần tự từ trong ra ngoài, mỗi lần sáng tương ứng 2
LED.
- Nhấn SW2: tắt các LED và kết thúc chương trình
2. Giả sử Port A và Port B của 8255 kết nối với ma trận LED 5x8 như
hình 4.7 còn Port C kết nối với bàn phím Hex như hình 4.14. Viết
chương trình hợp ngữ điều khiển bàn phím Hex sao cho:
- Nhấn phím 2: sáng số ‘2’ trên ma trận LED
- Nhấn phím D: sáng chữ ‘D’ trên ma trận LED
Phạm Hùng Kim Khánh Trang 126