- Đĩc hoaịc ghi từ Data register Thí dú : đĩc vị trí con trỏ
CHƯƠNG 12: CÁC KEĐNH GIAO TIÊP CHUAƠN
Tređn IBM PC, có moơt sô các keđnh lieđn lác chuaơn cho phép trao đoơi dữ lieơu giữa máy tính và các thiêt bị khác . Các keđnh lieđn lác này được chia thành hai lối chính :
Keđnh lieđn lác nôi tiêp (serial) : đa dúng
Keđnh lieđn lác song song (parallel) : thường dùng cho máy in
Các keđnh lieđn lác này thường được gĩi là các I/O port cụa IBM PC . Lưu ý raỉng khái nieơm port chúng ta đã dùng trong các chương trước là đeơ xác định các địa chư giao tiêp giữa CPU và các thành phaăn khác trong computer .
Trong khi đó,serial ports hay parallel ports chư là moơt cách gĩi cho các keđnh lieđn lác giữa computer và các thiêt bị ở beđn ngoài máy tính.
Tài lieơu này tám dùng teđn gĩi “các ngõ ra” đeơ chư các keđnh lieđn lác ây.
12.1CÁC NGÕ RA NÔI TIÊP (SERIAL PORTS)
Dựa tređn chuaơn truyeăn thođng RS-232, các serial port cụa IBM PC cho phép gởi và nhaơn sô lieơu theo nguyeđn taĩc từng chuoêi các bit nôi tiêp nhau.Theo đó, moêi byte dữ lieơu sẽ được chuyeơn thành từ 5-8 bit coơng với moơt sô bit đánh dâu đieơm đaău,đieơm cuôi,kieơm tra ... thành moơt dãy các tín hieơu nôi tiêp nhau phát đi tređn moơt đường truyeăn duy nhât.
Dáng thức truyeăn cụa moơt byte dữ lieơ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 đieău khieơn sẽ tự đoơng táo ra start bit,parity bit và stop bit trong chuoêi dữ lieơu được gởi đi.Khi nhaơn,các bit phú ây sẽ tự đoơng được lối bỏ.
Các ngõ ra nôi tiêp cụa IBM PC thường được gĩi là các coơng COM và được đánh sô từ 1 đên 4 . Ngoài đường truyeăn dữ lieơu (DATA OUT và DATA IN), mách đieău khieơn các ngõ ra nôi tiêp còn có moơt sô các mách tín hieơu chuaơn dùng giao tiêp với các modem.Các đường tín hieơu cụa ngõ ra nôi tiêp được nôi vào D-Shell connector 9 pin hoaị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 chieău dữ lieơu chuyeơn đi hay nhaơn veă từ computer
Đieău khieơn ngõ ra nôi tiêp tređn IBM PC là Asynchronous Adapter. Với moêi coơng COM, có moơt lố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|||
Ù----ÚĨÚĨÚĨÚEƠ bit
|| OÂỚ 0: 1=enable an interrupt when rec’d data is available
|OÂỚỚỚ 1: 1=enable interrupt when transmit buffer is empty
| OÂỚỚỚỚỚ 2: 1=enable int on rec’r line status (error or break) OÂỚỚỚỚỚỚỚ 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|| Ù---ÚEƠ
OÂOÊEÊ OÂỚ 1=no interrupt pending
OÂỚ 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
|||par|s|len|
ÙÚĨÚĨÚĨ—ÚĨ—EƠ bit
|| OÂOÊEÊOÂỚOƠỚ 0-1: word length: 00=5, 01=6, 10=7, 11=8
||OÂỚỚỚỚỚ 2: stop bits: 0=1,1=2
|| OÂỚỚỚỚỚỚ 3-4: parity: x0=None, 01=Odd, 11=Even
|OÂỚỚỚỚỚỚỚỚỚỚỚ 5: stuck parity (not used by BIOS)
| OÂỚỚỚỚỚỚỚỚỚỚỚỚỚ 6: enable break control. 1=start sending 0s (spaces) OÂỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ 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|||| Ù---ÚĨÚĨÚĨÚĨÚEƠ bit ||OÂỚ 0: 1=activate -DTR || OÂỚỚỚ 1: 1=activate -RTS |OÂỚỚỚỚỚ 2: 1=activate -OUT1 | OÂỚỚỚỚỚỚỚ 3: 1=activate -OUT2
OÂỚỚỚỚỚỚỚỚỚ 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)
Ù-ÚĨÚĨÚĨÚĨÚĨÚĨÚEƠ bit
|||OÂỚ 0: 1=data ready (DR). Reset by reading recv’r buffer
||| OÂỚỚỚ 1: 1=overrun error (OE). Previous character is lost
||OÂỚỚỚỚỚ 2: 1=parity error (PE). Reset by reading line status
|| OÂỚỚỚỚỚỚỚ 3: 1=framing error (FE). Bad stop bit in character
|OÂỚỚỚỚỚỚỚỚỚ 4: 1=break indicated (BI). Sustained space received
| OÂỚỚỚỚỚỚỚỚỚỚỚ 5: 1=transmitter holding register empty. OK to send OÂỚỚỚỚỚỚỚỚỚỚỚỚỚ 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)
ÙÚĨÚĨÚĨÚĨÚĨÚĨÚĨÚEƠ bit
|||| OÂỚ 0: 1=Delta Clear To Send (DCTS) has changed state
|||OÂỚỚỚ 1: 1=Delta Data Set Ready (DDSR) has changed state
||| OÂỚỚỚỚỚ 2: 1=Trailing Edge Ring Indicator (TERI) is active
||OÂỚỚỚỚỚỚỚ 3: 1=Delta Data Carrier Detect (DDCD) has changed
|| OÂỚỚỚỚỚỚỚỚỚ 4: 1=Clear To Send (CTS) is active
|OÂỚỚỚỚỚỚỚỚỚỚỚ 5: 1=Data Set Ready (DSR) is active
| OÂỚỚỚỚỚỚỚỚỚỚỚỚỚ 6: 1=Ring Indicator (RI) is active
OÂỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ 7: 1=Data Carrier Detect (DCD) is active
Trong quá trình POST, BIOS kieơ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 baĩt đaău từ địa chư 00:400.
Có tôi đa 4 word tương ứng với 4 base port được BIOS lieđn heơ dưới teđn gĩi
COM1-COM4.Chư hai word đaă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 rieđ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 tieơn truy nhaơp đên các ngõ ra nôi tiêp moơt cách đơn giạn và deê dàng thođng qua các chức naíng cụa interrupt 14.
12.1.2.1Khởi táo thođng sô cho COM port
Input : AH = 0
DX = sô hieơu cụa port AL = Thođng sô khởi táo:
7--6--5--4--3--2--1--0--
| baud rate |parity |stp|length |
---Ú---
OÂỚỚỚỚOÊỚỚỚỚEÊ OÂỚOÊỚEÊOÂỚỚỚOƠỚỚ word length
| OÂỚỚỚỚỚỚỚỚỚỚ stop bits
OÂỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ parity code
OÂỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ baud rate
Word length : 10 = 7 bits ; 11 = 8 bits Stop bits : 0 = 1 bit ; 1 = 2 bits
Parity : x0 = none ; 01 = odd (chaü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 moơt ký tự ra COM port
Input : AH = 1
DX = sô hieơu cụa port AL = ký tự gởi ra COM port
Output: AL khođng đoơi
nêu bit 7 cụa AH = 1 --> có loêi
AH (bits 6-0) = byte tình tráng cụa port (Xem func 3)
12.1.2.3Nhaơn moơt ký tự từ COM port
Input : AH = 2
DX = sô hieơu cụa port
Output: AL = ký tự nhaơn từ COM port
nêu AH khác 0 --> có loêi
12.1.2.4Lây tình tráng cụa COM port
Input : DX = sô hieơ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
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 rieđ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|
Thođng tin được chuyeơn đên máy in theo 8 đường data song song,moêi laăn chuyeơn được 1 byte . Quá trình chuyeơn thođng tin được thực hieơn như sau :
Đaịt data byte vào buffer đeơm
Đaịt tín hieơu Strobe leđn mức cao báo hieơu các đường data đã saün sàng.
Chờ máy in đĩc xong data thì đaịt tín hieơu Strobe veă mức thâp. ( tôi thieơu 0.5 micro giađy đôi với các máy in kim EPSON )
12.2.1Parallel Printer Adapters
Tređn IBM PC các coơng máy in song song có các base port như sau :