Chân Ký hiệu Vào/ra Chức năng
1 STROBE Ra Xung âm xác định máy tính đã gởi dữ liệu
2 D0 Ra Đường dữ liệu D0
3 D1 Ra Đường dữ liệu D1
4 D2 Ra Đường dữ liệu D2
5 D3 Ra Đường dữ liệu D3
6 D4 Ra Đường dữ liệu D4
7 D5 Ra Đường dữ liệu D5
8 D6 Ra Đường dữ liệu D6
9 D7 Ra Đường dữ liệu D7
10 ACK Vào 0: Tín hiệu xác nhận máy in đã in xong (Acknowledge)
11 BUSY Vào 1: Máy in bận
12 PE Vào 1: Hết giấy (Paper Empty)
13 SLCT Vào 1: Đã có máy in (Select)
14 AF Ra 0: Máy in xuống dòng tự động (Auto Feed)
15 ERROR Vào 0: Lỗi
16 INIT Ra 0: Khởi động máy in
17 SLCTIN Ra 0: Chọn máy in (Select In)
18-25 GND Nối đất
Cổng máy in có địa chỉ cơ sở đối với máy tính là 378h hay 278h bao gồm 3 thanh ghi: thanh ghi dữ liệu, thanh ghi trạng thái (địa chỉ cơ sở + 1) và thanh ghi điều khiển (địa chỉ cơ sở + 2)
Thanh ghi dữ liệu (378h, 278h)
D7 D6 D5 D4 D3 D2 D1 D0
Thanh ghi trạng thái (379h, 279h)
BUSY ACK PE SLCT ERROR IRQ - -
Thanh ghi điều khiển (37Ah, 27Ah)
- - Direction IRQ Enable SLCTIN INIT AF STROBE
Trong các chân của thanh ghi điều khiển và thanh ghi trạng thái, các chân SLCTIN, AF, STROBE sẽ bị đảo mức logic trước khi dưa ra ngoài còn chân BUSY cũng bị đảo mức trước khi đưa vào PC.
Sơ đồ mạch thiết kế như sau:
Đọc dữ liệu từ ngoại vi
Đoạn chương trình sau dùng để đọc từ thiết bị ngoại vi có địa chỉ 300h:
; Xuất 8 bit địa chỉ thấp
MOV AL,00h
MOV DX,378h
OUT DX,AL
MOV AL, 0Ah ; Xuất giá trị ra thanh ghi điều khiển để PC_CS2 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 0, AF = 0, STROBE = 1 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1010b = 0Ah (các bit SLCTIN, AF, STROBE bị đảo mức)
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS2 = 1
MOV DX,37Ah
OUT DX,AL
; Xuất 8 bit địa chỉ cao
MOV AL,03h
MOV DX,378h
OUT DX,AL
MOV AL, 09h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS3 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 0, AF = 1, STROBE = 0 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1001b = 09h
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS3 = 1
MOV DX,37Ah
OUT DX,AL
; Chốt 8 bit dữ liệu đọc vào
MOV AL, 0Eh ; Xuất giá trị ra thanh ghi điều khiển để PC_CS6 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 1, AF = 0, STROBE = 1 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1110b = 0Eh
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS6 = 1
MOV DX,37Ah
OUT DX,AL
; Đọc 4 bit dữ liệu thấp
MOV AL, 0Dh ; Xuất giá trị ra thanh ghi điều khiển để PC_CS7 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 1, AF = 1, STROBE = 0 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1101b = 0Dh
MOV DX,379h ; Đọc 4 bit dữ liệu về
IN AL,DX
MOV AH,AL ; AH chứa 4 bit thấp nhưng giá trị trong thanh ghi
MOV CL,4 ; trạng thái chứa ở 4 bit cao nên phải dịch phải
SHR AH,CL
; Đọc 4 bit dữ liệu cao
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS7 = 1
MOV DX,37Ah
OUT DX,AL
MOV DX,379h ; Đọc 4 bit dữ liệu về
IN AL,DX
AND AL,0F0h
ADD AL,AH ; AL chứa 8 bit dữ liệu
Xuất dữ liệu ra ngoại vi
Đoạn chương trình sau dùng để xuất dữ liệu ra thiết bị ngoại vi có địa chỉ 301h:
PUSH AX
; Xuất 8 bit địa chỉ thấp
MOV AL,01h
MOV DX,378h
OUT DX,AL
MOV AL, 0Ah ; Xuất giá trị ra thanh ghi điều khiển để PC_CS2 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 0, AF = 0, STROBE = 1 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1010b = 0Ah (các bit SLCTIN, AF, STROBE bị đảo mức)
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS2 = 1
MOV DX,37Ah
OUT DX,AL
; Xuất 8 bit địa chỉ cao
MOV AL,03h
MOV DX,378h
OUT DX,AL
MOV AL, 09h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS3 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 0, AF = 1, STROBE = 0 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1001b = 09h
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS3 = 1
MOV DX,37Ah
OUT DX,AL
POP AX
; Xuất 8 bit dữ liệu ra
MOV DX,378h
OUT DX,AL
MOV AL, 0Ch ; Xuất giá trị ra thanh ghi điều khiển để PC_CS8 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 1, AF = 1, STROBE = 1 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1100b = 0Ch
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS8 = 1
MOV DX,37Ah
OUT DX,AL
MOV AL, 0Bh ; Xuất giá trị ra thanh ghi điều khiển để PC_CS1 = 0
MOV DX,37Ah ; SLCTIN = 0, INIT = 0, AF = 0, STROBE = 0 nên
OUT DX,AL ; thanh ghi điều khiển = 0000 1011b = 0Bh
MOV AL,00h ; Xuất giá trị ra thanh ghi điều khiển để PC_CS1 = 1
MOV DX,37Ah
OUT DX,AL
2007-10-18
Giao tiếp PC và ngoại vi qua cổng máy in
Top of Page
Top of Post
Được đăng bởi
NHAN THANHTRI
tại
10:15 PM
Nhãn: auto
CÁC BÀI LIÊN QUAN:
Subscribe to:
Post Comments (Atom)
0 nhận xét:
Post a Comment