80
CHƯƠNG 12 : CÁC KÊNH GIAO TIẾP CHUẨN
Trên IBM PC, có một số các kênh liên lạc chuẩn cho phép trao đổi dữ liệu giữa máy tính và các
thiết bò khác . Các kênh liên lạc này được chia thành hai loại chính :
Kênh liên lạc nối tiếp (serial) : đa dụng
Kênh liên lạc song song (parallel) : thường dùng cho máy in
Các kênh liên lạc này thường được gọi là các I/O port của IBM PC . Lưu ý rằng khái niệm port
chúng ta đã dùng trong các chương trước là để xác đònh các đòa chỉ giao tiếp giữa CPU và các thành phần
khác trong computer .
Trong khi đó,serial ports hay parallel ports chỉ là một cách gọi cho các kênh liên lạc giữa computer
và các thiết bò ở bên ngoài máy tính.
Tài liệu này tạm dùng tên gọi “các ngõ ra” để chỉ các kênh liên lạc ấy.
12.1CÁC NGÕ RA NỐI TIẾP (SERIAL PORTS)
Dựa trên chuẩn truyền thông RS-232, các serial port của IBM PC cho phép gởi và nhận số liệu theo
nguyên tắc từng chuỗi các bit nối tiếp nhau.Theo đó, mỗi byte dữ liệu sẽ được chuyển thành từ 5-8 bit
cộng với một số bit đánh dấu điểm đầu,điểm cuối,kiểm tra ... thành một dãy các tín hiệu nối tiếp nhau
phát đi trên một đường truyền duy nhất.
Dạng thức truyền của một byte dữ liệu (8 bit)
D0 D1 D2 D3 D4 D5 D6 D7
------- ----------------------------------------
|Start bit|||||Parity bit|Stop bit|
D0-D7 : các bit của byte được gởi đi .
Mạch điều khiển sẽ tự động tạo ra start bit,parity bit và stop bit trong chuỗi dữ liệu được gởi đi.Khi
nhận,các bit phụ ấy sẽ tự động được loại bỏ.
Các ngõ ra nối tiếp của IBM PC thường được gọi là các cổng COM và được đánh số từ 1 đến 4 .
Ngoài đường truyền dữ liệu (DATA OUT và DATA IN), mạch điều khiển các ngõ ra nối tiếp còn có
một số các mạch tín hiệu chuẩn dùng giao tiếp với các modem.Các đường tín hiệu của ngõ ra nối tiếp
được nối vào D-Shell connector 9 pin hoặc 25 pin .
| Full nameIDDirection9 pin25 pin |
|--------------------------|-----|-------------|---------|----------
1. Carrier DetectDCDIN18 |
2. Receive Data| IN23 |
3. Transmit Data| OUT32 |
4. Data Terminal ReadyDTROUT420 |
5. Signal Ground|5|
6. Data Set ReadyDSRIN66 |
7. Request To SendRTSOUT74 |
8. Clear To SendCTSIN85 |
9. Ring IndicatorRIIN922 |
IN và OUT được xét theo chiều dữ liệu chuyển đi hay nhận về từ computer
12.1.1Asynchronous Adapter
81
Điều khiển ngõ ra nối tiếp trên IBM PC là Asynchronous Adapter. Với mỗi cổng COM, có một loạt
các register và các port tương ứng của Adapter.
COM 1 có base port là 3F8h và sử dụng IRQ 4
COM 2 có base port là 2F8h và sử dụng IRQ 3
Tham số cho các port tương ứng với COM 1 như sau :
Port 3F8H :
When DLAB=1
Write divisor latch low byte
| Baud110150300600200240048009600 |
|---------|------|-----|-----|-----|-----|------|------|-------
| Divisor104076838419296482412 |
When DLAB=0
Write transmitter holding register
Read receiver buffer register
Port 3F9H :
When DLAB=1
Write divisor latch high byte
When DLAB=0
Write interrupt enable register
[7|6|5|4|3|2|1|0]
|0 0 0 0|||
Ù----ÚĨÚĨÚĨÚỆ bit
|| ỐỚ 0: 1=enable an interrupt when rec’d data is available
|ỐỚỚỚ 1: 1=enable interrupt when transmit buffer is empty
| ỐỚỚỚỚỚ 2: 1=enable int on rec’r line status (error or break)
ỐỚỚỚỚỚỚỚ 3: 1=enable int on modem status (CTS,DSR,RI,RLSD)
Port 3FAh :
Read interrupt identification register.When an interrupt occurs,
read this register to find what caused it.
[7|6|5|4|3|2|1|0]
|0 0 0 0 0||
Ù-------ÚỆ
ỐỖỄ ỐỚ 1=no interrupt pending
ỐỚ 00=receiver line status interrupt. Occurs upon:
overrun, parity, or framing error, or break
Reset by reading line status (port 3fdH)
01=received data available
Reset by reading receiver buffer (port 3f8H)
10=transmitter buffer empty
Reset by writing transmitter buffer (port 3f8H)
11=modem status. Occurs upon: Clear To Send, Data
Set Ready, Ring Ind, or Rec’d Line Sig Detect.
Reset by reading modem status (port 3feH).
Port 3FBh :
Read/Write line control register
[7|6|5|4|3|2|1|0]
82
|| |par|s|len|
ÙÚĨÚĨÚĨ—ÚĨ—Ệ bit
|| ỐỖỄỐỚỔỚ 0-1: word length: 00=5, 01=6, 10=7, 11=8
||ỐỚỚỚỚỚ 2: stop bits: 0=1,1=2
|| ỐỚỚỚỚỚỚ 3-4: parity: x0=None, 01=Odd, 11=Even
|ỐỚỚỚỚỚỚỚỚỚỚỚ 5: stuck parity (not used by BIOS)
| ỐỚỚỚỚỚỚỚỚỚỚỚỚỚ 6: enable break control. 1=start sending 0s (spaces)
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ 7: DLAB (Divisor Latch Access Bit) Determines mode
of ports 3f8H and 3f9H. 1=set baud rate, 0=normal
Port 3FCh :
Write modem control register
[7|6|5|4|3|2|1|0]
|0 0 0||| |
Ù---ÚĨÚĨÚĨÚĨÚỆ bit
||ỐỚ 0: 1=activate -DTR
|| ỐỚỚỚ 1: 1=activate -RTS
|ỐỚỚỚỚỚ 2: 1=activate -OUT1
| ỐỚỚỚỚỚỚỚ 3: 1=activate -OUT2
ỐỚỚỚỚỚỚỚỚỚ 4: 1=activate loopback for diagnostic testing
Port 3FDh :
Read line status register
[7|6|5|4|3|2|1|0]
|0||||Note: bits 1-4 cause an interrupt if enabled (3f9H)
Ù-ÚĨÚĨÚĨÚĨÚĨÚĨÚỆ bit
|||ỐỚ 0: 1=data ready (DR). Reset by reading recv’r buffer
||| ỐỚỚỚ 1: 1=overrun error (OE). Previous character is lost
||ỐỚỚỚỚỚ 2: 1=parity error (PE). Reset by reading line status
|| ỐỚỚỚỚỚỚỚ 3: 1=framing error (FE). Bad stop bit in character
|ỐỚỚỚỚỚỚỚỚỚ 4: 1=break indicated (BI). Sustained space received
| ỐỚỚỚỚỚỚỚỚỚỚỚ 5: 1=transmitter holding register empty. OK to send
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚ 6: 1=transmitter empty. No data being processed.
Port 3FEh :
Read modem status register
[7|6|5|4|3|2|1|0]
||||| Note: bits 0-3 cause an interrupt if enabled (3f9H)
ÙÚĨÚĨÚĨÚĨÚĨÚĨÚĨÚỆ bit
|||| ỐỚ 0: 1=Delta Clear To Send (DCTS) has changed state
|||ỐỚỚỚ 1: 1=Delta Data Set Ready (DDSR) has changed state
||| ỐỚỚỚỚỚ 2: 1=Trailing Edge Ring Indicator (TERI) is active
||ỐỚỚỚỚỚỚỚ 3: 1=Delta Data Carrier Detect (DDCD) has changed
|| ỐỚỚỚỚỚỚỚỚỚ 4: 1=Clear To Send (CTS) is active
|ỐỚỚỚỚỚỚỚỚỚỚỚ 5: 1=Data Set Ready (DSR) is active
| ỐỚỚỚỚỚỚỚỚỚỚỚỚỚ 6: 1=Ring Indicator (RI) is active
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ 7: 1=Data Carrier Detect (DCD) is active
12.1.2Interrupt 14
83
Trong quá trình POST, BIOS kiểm tra các base port 3F8h và 2F8h, đòa chỉ của các port có đáp ứng
sẽ được ghi vào các word bắt đầu từ đòa chỉ 00:400.
Có tối đa 4 word tương ứng với 4 base port được BIOS liên hệ dưới tên gọi
COM1-COM4.Chỉ hai word đầu được BIOS khởi tạo (tương ứng với COM1 và COM2).
Hai word cuối (tương ứng với COM3 và COM4) dành riêng cho các cấu hình khác của ngõ ra nối
tiếp, người sử dụng phải tự xác đònh các giá trò cho hai word này.
BIOS cung cấp cho người sử dụng các phương tiện truy nhập đến các ngõ ra nối tiếp một cách đơn
giản và dễ dàng thông qua các chức năng của interrupt 14.
12.1.2.1Khởi tạo thông số cho COM port
Input : AH = 0
DX = số hiệu của port
AL = Thông số khởi tạo:
7--6--5--4--3--2--1--0--
| baud rate |parity |stp|length |
-----------------Ú--------
ỐỚỚỚỚỖỚỚỚỚỄ ỐỚỖỚỄỐỚỚỚỔỚỚ word length
| ỐỚỚỚỚỚỚỚỚỚỚ stop bits
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ parity code
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ baud rate
Word length : 10 = 7 bits ; 11 = 8 bits
Stop bits : 0 = 1 bit ; 1 = 2 bits
Parity : x0 = none ; 01 = odd (chẵn) ; 11 = even (lẻ)
| Baud rate110150300600 |1200240048009600 |
|-------------|-----|-----|-----|-----|-----|------|------|-------
|Value setting| 000001010011100101110111 |
Output: AH = byte tình trạng của port ( Xem func 03 )
12.1.2.2Gởi một ký tự ra COM port
Input : AH = 1
DX = số hiệu của port
AL = ký tự gởi ra COM port
Output: AL không đổi
nếu bit 7 của AH = 1 --> có lỗi
AH (bits 6-0) = byte tình trạng của port (Xem func 3)
12.1.2.3Nhận một ký tự từ COM port
Input : AH = 2
DX = số hiệu của port
Output: AL = ký tự nhận từ COM port
nếu AH khác 0 --> có lỗi
12.1.2.4Lấy tình trạng của COM port
Input : DX = số hiệu của port
Output:
AH = COM status AL = modem status
------------------------------ -------------------------------------
bit 7: timeout bit 7: received line detect signal
bit 6: trans shift reg empty bit 6: ring indicator
bit 5: trans holding reg empty bit 5: data set ready
bit 4: break detect bit 4: clear to send
84
bit 3: framing error bit 3: delta recv line signal detect
bit 2: parity error bit 2: trailing edge ring detector
bit 1: overrun error bit 1: delta data set ready
bit 0: data ready status bit 0: delta clear to send
12.2CÁC NGÕ RA SONG SONG (PARALLEL PORTS)
Dành riêng cho các máy in song song, còn được gọi là các printer port .
Ngõ ra của parallel ports là D-Shell connector 25 pin
| Full nameDirection |
|--------------------------|--------------
1. StrobeOUT |
2. Data bit 0OUT |
3. Data bit 1OUT |
4. Data bit 2OUT |
5. Data bit 3OUT |
6. Data bit 4OUT |
7. Data bit 5OUT |
8. Data bit 6OUT |
9. Data bit 7OUT |
10. ACKIN |
11. BusyIN |
12. PEIN |
13. SLCTIN |
14. AUTO FEED XTOUT |
15. ErrorIN |
16. InitOUT |
17. SLCT INOUT |
18-25 Ground|
Thông tin được chuyển đến máy in theo 8 đường data song song,mỗi lần chuyển được 1 byte . Quá
trình chuyển thông tin được thực hiện như sau :
Đặt data byte vào buffer đệm
Đặt tín hiệu Strobe lên mức cao báo hiệu các đường data đã sẵn sàng.
Chờ máy in đọc xong data thì đặt tín hiệu Strobe về mức thấp. ( tối thiểu 0.5 micro giây đối với các
máy in kim EPSON )
12.2.1Parallel Printer Adapters
Trên IBM PC các cổng máy in song song có các base port như sau :
- 3BCh : Printer port của Monochrome Display Adapter
- 378h : Parallel Printer Adapter #1
- 278h : Parallel Printer Adapter #2
Tham số cho các port tương ứng với base port 378h như sau:
Port 378H Printer Data Latch.
Write: send byte to printer
Read : fetch last byte sent
Port 37Ah