Chương 7: Giao tiếp ngoại viCPU giao tiếp với thế giới bên ngoài qua các thiết bị giao tiếp ngoại vi.. Để định địa chỉ chính xác tuyệt đối thì phải sử dụng các cổng OR và các đường địa c
Trang 1Chương 7: Giao tiếp ngoại vi
CPU giao tiếp với thế giới bên ngoài qua các thiết bị giao tiếp ngoại vi Trong thiết kế sử dụng 2 vi mạch 8255A nên có được 6 port giao tiếp Các 8255A này hoạt động theo chế độ I/O Vi xử lý 8085A có thể định số địa chỉ I/O tối đa là 256 port, các địa chỉ được chọn cho các 8255A là:
Sử dụng vi mạch 74LS138 kết hợp với một số cổng OR để giải mã địa chỉ cho các vi mạch giao tiếp 8255A
Địa chỉ hoạt động của các vi mạch 8255A
Dùng 74LS138 với các ngõ vào A, B và C là các đường địa chỉ
A4, A5, và A6 Các đường địa chỉ A0, A1 vào trực tiếp các 8255A Như vậy, nếu không sử dụng các đường địa chỉ A2, A3 và A7 thì các địa chỉ 14H, 18H, 90H và địa chỉ 10H được xem là như nhau, tương tự như vậy cho các địa chỉ khác
Để định địa chỉ chính xác tuyệt đối thì phải sử dụng các cổng
OR và các đường địa chỉ A2, A3 và A7
10 H Port A của 8255A-I
11 H Port B của 8255A-I
12 H Port C của 8255A-I
13 H Port điều khiển của 8255A-I
20 H Port A của 8255A-II
21 H Port B của 8255A-II
22 H Port C của 8255A-II
23 H Port điều khiển của 8255A-II
Các đường địa chỉ
Tới CS\ 8255A-II
74138
A 4
IO/M\
A
G 1
G2A\
G 2B \
Y7
Y 6
Y 5
Y 4
Y3
Y 2
Trang 2Sơ đồ kết nối giải mã địa chỉ cho giao tiếp ngoại vi
e Jumper RAM/ROM:
Chân 27 là Vpp đối với EPROM và là WR\ đối với RAM, ta có thể thay đổi chức năng RAM/ROM bằng cách đặt một jumper nối chân này lên Vcc nếu là EPROM và nối với WR\ của CPU nếu là RAM Chân 1 là NC nếu là EPROM và là chân CS1 nếu là RAM,
vì thế chân này luôn được nối lên Vcc
Sơ đồ kết nối
6264/
2764
Vcc Vcc
WR\
1 27
RAM/ROM jumper
Trang 3III Phần mềm:
1 Chương trình quét phím:
Chương trình sẽ quét bàn phím để kiểm tra xem có phím nào được ấn hay không Nếu phát hiện có phím được ấn thì chương trình sẽ nhận ra phím đó bằng cách xác định mã hàng và mã cột của phím đó rồi tra bảng để lấy mã của phím
2 Chương trình quét đèn:
Dữ liệu cần hiển thị được chứa trong bộ nhớ dưới dạng nhị phân Để hiển thị được trên LED 7 đoạn thì các dữ liệu này phải được đổi sang mã 7 đoạn, chương trình sẽ giúp CPU thực hiện công việc này đồng thời cũng còn thực hiện chức năng quét đèn để hiển thị dữ liệu lần lượt trên từng đèn vì thế mạch hiển thị được đơn giản
3 Chương trình minh họa:
; CHUONG TRINH LAY MA PHIM AN
GET:
LDA (KEYIN)
ANI 1Fh
CPI 1Fh
RZ ; khong co phim an
MVI B, 00h
LPROW:
RRC
JNC ROWFD ; co phim duoc an
INR B ; hang ke tiep
JMP LPROW
ROWFD:
PUSH B ; luu vi tri hang
MVI B, 00h
MVI A, 0FEh ; bat dau tu cot 0
LPCOL:
MOV D, A
Trang 4STA (DRIVE)
LDA (KEYIN)
ANI 1Fh
CPI 1Fh
JNZ COLFD
MOV A, D
RLC
RNC ; du 8 cot
INR B
JMP LPCOL
COLFD: ; B = vi tri cot
POP AF ; lay lai vi tri hang STC
CMC ; cy = 0
RAL
RAL
RAL ; hang = hang * 8
ADD B ; ma phim = hang*8 +cot PUSH AF
LPFD:
CALL DLDIS1 ; tri hoan co hien thi MVI A, 00h
STA (DRIVE)
LDA (KEYIN)
ANI 1Fh
CPI 1Fh
JNZ LPFD ; doi nha phim
CALL DLDIS ; tri hoan co hien thi POP AF
LXI H, KEYTBL ; lay bang tra ma phim CALL ADDAX
MOV A, M ; tra ma phim
STA (KEY) ; luu ma phim
MVI A, 01h
STA (KEYFLG) ; bao co phim duoc an RET
; BANG TRA MA PHIM
KEYTBL:
DEFB 00h ; 0
Trang 5DEFB 01h ; 1
DEFB 02h ; 2
DEFB 03h ; 3
DEFB 04h ; 4
DEFB 05h ; 5
DEFB 06h ; 6
DEFB 07h ; 7
DEFB 08h ; 8
DEFB 09h ; 9
DEFB 0Ah ; A
DEFB 0Bh ; B
DEFB 0Ch ; C
DEFB 0Dh ; D
DEFB 0Eh ; E
DEFB 0Fh ; F
DEFB 10h ; G
DEFB 11h ; H
DEFB 12h ; I
DEFB 13h ; J
DEFB 14h ; K
DEFB 15h ; L
DEFB 16h ; M
DEFB 17h ; N
DEFB 18h ; O
DEFB 19h ; P
DEFB 1Ah ; Q
DEFB 1Bh ; R
DEFB 1Ch ; S
DEFB 1Dh ; T
DEFB 1Eh ; U
DEFB 1Fh ; V
DEFB 20h ; W
DEFB 21h ; X
DEFB 22h ; Y
DEFB 23h ; Z
; phim chuc nang
DEFB 80h ; ESC
DEFB 81h ; PC
DEFB 82h ; '-'
DEFB 83h ; '+'
Trang 6; CHUONG TRINH HIEN THI DU LIEU RA LED 7 DOAN PUT:
MVI A, 0FEh ; tu den so 0
LHLD (DISPTR) ; con tro den vung dem hien thi
MUX:
PUSH AF
MOV A, M
STA (SEGDRV)
POP AF
STA (DRIVE)
PUSH AF
PUSH H
CALL DLPUT ; tri hoan de nhin thay MVI A, 00h
STA (SEGDRV)
STA (DRIVE)
LDA (KEYIN)
ANI 1Fh
CPI 1Fh
JZ LP002 ; khong co phim an
CALL GET ; doc ma phim
LP002:
LXI H, LP1
PUSH H
LHLD (MNPTR) ; thi hanh chuong trinh
co dia chi
PCHL ; duoc MNPTR chi den
LP1:
POP H
POP AF
RLC
JNC PUT ; het 8 den, bat dau lai tu den 0
INX H
JMP MUX ; den ke tiep
; GIAI MA SO HEX RA LED 7 DOAN
DISCOD:
Trang 7PUSH B
PUSH D
PUSH H
MVI B, 04h
LXI H, HEXBUF ; vung dem hien thi
LP01:
MOV A, M
ANI 0F0h
RRC
RRC
RRC
RRC
MOV D, A
MOV A, M
ANI 0Fh
MOV E, A
PUSH D
INX H
DCR B
JNZ LP01
LXI H, DISBUF + 7
MVI B, 04h
LP02:
POP D
MOV E, D
CALL SUBDIS
DCX H
CALL SUBDIS
DCX H
DCR B
JNZ LP02
POP H
POP D
POP B
RET
; Tra ma LED
SUBDIS:
MOV A, E
PUSH H
Trang 8LXI H, DISTBL ; lay bang tra ma LED CALL ADDAX
MOV A, M
POP H
MOV M, A
RET
; BANG TRA MA LED 7 DOAN
DISTBL:
DEFB 3Fh ; 0
DEFB 06h ; 1
DEFB 5Bh ; 2
DEFB 4Fh ; 3
DEFB 66h ; 4
DEFB 6Dh ; 5
DEFB 7Dh ; 6
DEFB 07h ; 7
DEFB 7Fh ; 8
DEFB 6Fh ; 9
DEFB 77h ; A
DEFB 7Ch ; B
DEFB 39h ; C
DEFB 5Eh ; D
DEFB 79h ; E
DEFB 71h ; F
; CHUONG TRINH CONG A VAO HL
ADDAX:
PUSH B
MVI B, 00h
MOV C, A
DAD B
POP B
RET
; CHUONG TRINH DOC PHIM
RDKEY:
MVI A, 00h
STA (KEYFLG)
LDA (KEY)
Trang 9RET
; CAC CHUONG TRINH DELAY
DLKP:
PUSH H
LXI H, 6000h
JMP LPDL
DLPUT:
PUSH H
LXI H, 0080h
JMP LPDL
DLAYHL:
PUSH H
LPDL:
DCX H
MOV A, H
CPI 00h
JNZ LPDL
MOV A, L
CPI 00h
JNZ LPDL
POP H
RET
; CHUONG TRINH DELAY VAN HIEN THI
DLDIS:
PUSH AF
PUSH B
MVI B, 08h
LAB1:
CALL DLDIS1
DCR B
JNZ LAB1
POP B
POP AF
RET
DLDIS1:
MVI A, 0FEh
STA (DRIVE)
Trang 10LDA (DISBUF)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 0FDh
STA (DRIVE)
LDA (DISBUF + 1)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 0FBh
STA (DRIVE)
LDA (DISBUF + 2)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 0F7h
STA (DRIVE)
LDA (DISBUF + 3)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 0EFh
STA (DRIVE)
LDA (DISBUF + 4)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 0DFh
STA (DRIVE)
LDA (DISBUF + 5)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
Trang 11MVI A, 0BFh
STA (DRIVE)
LDA (DISBUF + 6)
STA (SEGDRV)
CALL DLPUT
MVI A, 00h
STA (SEGDRV)
MVI A, 7Fh
STA (DRIVE)
LDA (DISBUF + 7)
STA (SEGDRV)
CALL DLPUT
RET
; CAC NHAN SU DUNG
MNPTR EQU 5F20h
DISPTR EQU 5F30h ; con tro den vung dem hien thi
DISBUF EQU 5F40h ; vung dem hien thi
HEXBUF EQU 5F48h ; vung dem so HEXA KEY EQU 5F70h ; chua ma phim
KEYFLG EQU 5F80h ; =1 neu co phim nhan
KEYIN EQU 8000h
DRIVE EQU 8001h
SEGDRV EQU 8002h
SYSIO EQU 8003h