Doogan

New Member

Download miễn phí Giáo trình Đo lường và điều khiển bằng máy tính - Giao tiếp qua cổng song song





Khi nhận dữ liệu, đầu tiên chương trình đọc thanh ghi gốc +4. Nếu
/Wait mức thấp thì /Data Strobe sẽ ở mức thấp chờ khi /Wait ở mức cao
bên kia báo đã gởi dữ liệu tới, /Data Strobe sẽ ở mức cao và dữ liệu được
đọc vào. Chu kỳ xuất và nhập dữ liệu cũng giống như chu kỳ xuất và
nhập địa chỉ. Thường kết hợp địa chỉ và dữ liệu để truy xuất dữ liệu từ
các địa chỉ ngoại vi khác nhau.
Phần cứng ngoại vi có nhiệm vụ xử lý các chân /Write, /Data Strobe,
/Address Strobe đưa vào các mạch cài hay cho phép và xuất tín hiệu /wait
phù hợp. Thông qua tín hiệu Interrupt (chân số 10) ngoại vi sẽ tác động
đến máy tính, bit 0 của thanh ghi trạng thái là bit báo hết thời gian EPP.
Nếu trong khoảng 10µs đường /Wait không tác động khi /Data Strobe hay
/Address strobe tác động thì bit này sẽ được đặt lên 1.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

ùy tính có thể dùng mode Nibble truyền 4 bit hay mode Byte truyền 8 bit.
Cổng EPP và ECP dùng thêm phần cứng hỗ trợ nên vận tốc truyền
nhanh hơn, có thể đến 2 Mbytes/sec, thu phát song song 8 bit.
Thay đổi chế độ của cổng song song bằng cách vào BIOS SETUP
của máy tính khi khởi động máy.
CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 2
Thành phố Hồ Chí Minh, tháng 4 năm 2006
6.1 CỔNG SPP
Cổng song song có đầu nối 25 chân cái thường dùng để kết nối với
máy in đầu nối Centronics 34 chân.
Bảng 6.1 cho sơ đồ chân và ý nghĩa các chân của cổng SPP khi dùng
với máy in, dấu “/” có nghĩa tích cực thấp. Ví dụ, chân 15 là /Error hướng
vào, nếu chân này xuống mức 0 là có lỗi. Cột Đảo ghi chữ Có tức là tín
hiệu được đảo mức, ví dụ chân 17 khi đưa mức logic 0 ứng với chân này
vào thanh ghi điều khiển thì ở chân 17 xuất hiện mức 1.
Bảng 6.1: Sơ đồ chân của đầu nối phía máy tính (cổng SPP)
và phía máy in
Chân
D – 25
Chân
Centronics
Tín hiệu
SPP
Hướng Thanh ghi Đảo
1 1 /Strobe Vào/Ra Điều khiển Có
2 2 Data 0 Ra Data
3 3 Data 1 Ra Data
4 4 Data 2 Ra Data
5 5 Data 3 Ra Data
6 6 Data 4 Ra Data
7 7 Data 5 Ra Data
8 8 Data 6 Ra Data
9 9 Data 7 Ra Data
10 10 /Ack Vào Trạng thái
11 11 Busy Vào Trạng thái Có
12 12 Paper Out Vào Trạng thái
13 13 Select Vào Trạng thái
14 14 /Auto-Linefeed Vào/Ra Điều khiển Có
15 32 /Error Vào Trạng thái
16 31 /Init Vào/Ra Điều khiển
17 36 /Select Printer Vào/Ra Điều khiển Có
18 - 25 19 - 30 Mass
Ngõ ra cổng song song tương thích với cổng TTL, dòng cấp và thu
khoảng vài mA đến 16mA tùy loại kết cấu phần cứng (công nghệ ASIC).
Giao tiếp cổng song song với máy in thường được thực hiện theo H.6.1
Tác giả: TS Nguyễn Đức Thành Trang 3
.
Hình 6.1: Sơ đồ kết nối và bắt tay
Ban đầu dữ liệu 8 bit được đưa ra, máy tính đọc chân Busy nếu ở
mức thấp thì máy in rảnh, sẽ đưa ra tín hiệu Strobe rộng 1sec và máy in
đọc dữ liệu, đọc xong sẽ báo trở lại bằng ACK rộng 5sec. Nếu máy in
bận thì Busy sẽ ở mức cao.
Việc giao tiếp được thực hiện qua 3 thanh ghi: thanh ghi dữ liệu,
thanh ghi điều khiển và thanh ghi trạng thái. Thông thường sử dụng hai
địa chỉ gốc là:
378H cho LPT1 (line printer 1)
278H cho LPT2
CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 4
Thành phố Hồ Chí Minh, tháng 4 năm 2006
Một số máy dùng địa chỉ 03BC.
- Thanh ghi dữ liệu có địa chỉ gốc +0, 8 bit, nhận dữ liệu để xuất ra
ngoài, dữ liệu được chốt..
- Thanh ghi trạng thái địa chỉ gốc +1 là thanh ghi chỉ đọc dùng để
nhận tín hiệu từ ngoài vào, có 5 tín hiệu vào.
D7 D0
Busy
11
/ACK
10
Paper Out
12
Select
13
/Error
15
/IRQ X X
Chú ý là bit Busy được đảo, nghĩa là nếu chân 11 có điện áp +5V thì
bit D7 của thanh ghi trạng thái mức logic 0, bit D2 bằng 0 khi có ngắt từ /ACK.
- Thanh ghi điều khiển có bốn đường ra điều khiển, địa chỉ gốc +2,
các đường này dùng cực thu hở do đó có thể giao tiếp hai chiều.
D7 D0
X X
Cho phép
cổng hai
chiều
Cho phép
IRQ qua ACK
Chọn
máy in
/Select
Khởi động
máy in /Init
Xuống hàng
/Auto Linefeed
Kích
/Strobe
17 16 14 1
Các chân 1, 11, 14 và 17 được đảo phần cứng, bit D6 thanh ghi trạng
thái (chân số 10) từ 1→ 0 thì gây ra ngắt IRQ7 nếu được cho phép bởi D4
của thanh ghi điều khiển =1.
Hình 6.2 Sơ đồ thanh ghi dữ liệu hai hướng
Một số mainboard (H6.2) hỗ trợ giao tiếp hai chiều qua thanh ghi dữ
Tác giả: TS Nguyễn Đức Thành Trang 5
liệu, bit D5 của thanh ghi điều khiển bằng 1 thì cho phép các chân 2..:9
của thanh ghi dữ liệu có chiều đi vào, nghĩa là có thể đưa tín hiệu vào các
chân này rồi đọc thanh ghi dữ liệu.
Các chân của thanh ghi điều khiển có ngõ ra cực thu hở nên có thể
nhận tín hiệu vào nếu trước đó ta đã nạp 8 bit sao cho các ngõ ra ứng với
thanh ghi này lên 1 (sơ đồ H 6.3). Do các tín hiệu
/Busy, /Select, /AF và /Strobe đã được đảo phần cứng nên ta thêm các cổng
đảo, logic đọc vào phản ảnh đúng mức tín hiệu.
Hình 6.3: Giao tiếp song song hai chiều qua cổng SPP
Trong một số trường hợp, các chân ra của thanh ghi điều khiển
không dùng loại cực thu hở mà dùng cột totem chỉ có một chiều xuất, lúc
đó có thể dùng bộ phân kênh để đọc 4 bit dữ liệu vào thanh ghi trạng
thái, đọc hai lần sẽ được 8 bit dữ liệu (H6.4).
Trong sơ đồ chân /Strobe được dùng để chọn nửa byte thấp khi ở
mức 0 tức là bit D0 của thanh ghi điều khiển ở mức 1.
CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 6
Thành phố Hồ Chí Minh, tháng 4 năm 2006
Với sơ đồ này việc xuất nhập dữ liệu 8 bit được thực hiện như sau:
1- Xác định địa chỉ gốc của cổng LPT
2- Muốn xuất dữ liệu, ghi dữ liệu 8 bitvào thanh ghi dữ liệu, muốn
xuất nhiều hơn 8 bit có thể dùng kèm các tín hiệu Init, Select … bằng
cách ghi vào thanh ghi điều khiển byte thích hợp.
3- Muốn đọc dữ liệu, ghi bit D0 = 1 vào thanh ghi điều khiển, đọc 4
bit cao của thanh ghi trạng thái (4 bit thấp của dữ liệu vào), rồi dời phải 4
bit, sau đó cho D0 của thanh ghi điều khiển bằng 0, đọc 4 bit cao của
thanh ghi trạng thái (4 bit cao của dữ liệu vào), kết hợp hai lần đọc ta
được 1 byte rồi exclusive OR với 88H để đảo hai bit D7 và D3 (do Busy
đảo).
Hình 6.4: Vào 8 bit với 74LS157
Ví dụ lập trình
Xuất trị của biến oval1 ra thanh ghi dữ liệu và oval2 ra thanh ghi
điều khiển, nhập giá trị inval từ thanh ghi trạng thái.
Trong ngôn ngữ C
# define DATA 0X378
# define STATUS DATA + 1
# define CONTROL DATA + 2
int oval1, oval2, inval;
oval1 = 0X81;
outportb (DATA, oval1);
Tác giả: TS Nguyễn Đức Thành Trang 7
oval2 = 0X08;
outportb (CONTROL, OVAL2 ^ 0x0b); // exclusive or
inval = ((inportb (STATUS) ^ 0X80;
Trong ngôn ngữ BASIC
DATA = &H378
STATUS = DATA + 1
CONTROL = DATA + 2
OVAL1 = 129
OUT DATA, OVAL1
OVAL2 = 75
OUT CONTROL, OVAL2 XOR 11
INVAL = ((INP (STATUS) XOR 128) AND &HF8) / 8
Lập trình cho sơ đồ H6..4 đọc 8 bit
outportb(CONTROL, inportb(CONTROL) | 0x01); /* Chọn nửa byte thấp (A), phép tóan or */
a = (inportb(STATUS) & 0xF0); /* Đọc nửa byte thấp, phép toán and */
a = a >> 4; /* Dời phải 4 bit */
outportb(CONTROL, inportb(CONTROL) & 0xFE); /* Chọn nửa byte cao (B)/
a = a |(inportb(STATUS) & 0xF0); /* Đọc nửa byte cao */
byte = a ^ 0x88;
Sử dụng ngắt
Khi bit 4 của thanh ghi điều khiển ở mức 1 sẽ cho phép ngắt nếu
chân ACK chuyển từ 1 xuống 0, chương trình phục vụ ngắt IRQ7 sẽ được
gọi (cũng có lúc ngắt bị tác động khi ACK chuyển từ 0 lên 1). Có thể viết
một chương trình kiểm tra xem ngắt có tác động không. Về phần cứng chỉ
cần nối chân 9 (D7) với chân 10 (ACK). Vào Control panel –System kiểm
tra địa chỉ và số ngắt của cổng LPT.
#include
#define PORTADDRESS 0x378
#define IRQ 7
#define DATA PORTADDRESS+0
#define STATUS PORTADDRESS+1
#define CONTROL PORTADDRESS+2
#define PIC1 0x20
#define PIC2 0xA0
int interflag; /* Cờ ngắt */
int picaddr; /* Địa chỉ gốc của PIC) */
void interrupt (*oldhandler)();
void interrupt parisr() /* Interrupt Service Routine (ISR) */
{
interflag = 1;
outportb(picaddr,0x20); /* End of Interrupt (EOI) */
}
void main(void)
{
CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 8
Thành phố Hồ Chí Minh, tháng 4 năm 2006
int c;
int intno; /* Số vectơ ngắt */
int picmask; /* Mặt nạ */
if (IRQ >= 2 && IRQ <= 7)
{
intno = IRQ + 0x08;
picaddr = PIC1;
picmask = 1;
picmask = picmask << IRQ;
}
if ...
 

Các chủ đề có liên quan khác

Top