5.3Vi mạch PPI 8255A
5.3.4.Ghộp nối 8255A với MVT và TBN
quan tõm
- > Giỏ trị từ điều khiển: 87H hoặc 86H • Từ trạng thỏi
Thụng thường khi sử dụng 8255 ở chế độ 1 và 2, ta thường dựng phương phỏp điều khiển bằng ngắt chương trỡnh. Tuy nhiờn ta cú thể sử dung phương phỏp hỏi vũng trạng thỏi bằng cỏch đọc cổng C để biết được trạng thỏi hoạt động của 8255. Do đú ta cú thể coi địa chỉ cổng C trong chế độ 1 và 2 là địa chỉ của thanh ghi trạng thỏi của 8255. Đọc thanh ghi trạng thỏi này, ta cú thể biết được cỏc thụng tin sau:
Cú yờu cầu ngắt chương trỡnh để trao đổi tin của cỏc cửa A (INTRA) hay B (INTRB)
Cỏc thanh ghi đệm số liệu vào đĩ cú số liệu (IBFA=1, IBFB=1)
Cỏc thanh ghi đệm ra đĩ cú số liệu (/OBFA = 0, /OBFB = 0)
Hoặc riờng với chế độ 2, khi cú ngắt xảy ra, ta cần phải đọc từ trạng thỏi để biết được nguyờn nhõn gõy ra ngắt là do 8255 đĩ nhận được dữ liệu hay đĩ gửi được dữ liệu để cú cỏc hoạt động tương ứng.
5.3.4. Ghộp nối 8255A với MVT và TBN
Sơ đồ ghộp nối cửa vào ra theo chương trỡnh với VXL và TBN như hỡnh dưới. PPI 8255A đặt giữa VXL và TBN, đúng vai trũ trung chuyển tin giữa VXL và TBN qua cỏc đường dõy của MVT và TBN.
• Phần ghộp nối với MVT
Cỏc tớn hiệu về số liệu (data bus) D0 – D7, địa chỉ thấp (A0,A1), lệnh đọc (RD), lệnh ghi (WR) được nối thẳng với cỏc lối vào tương ứng của PPI 8255A
D0 – D7 RD WR A 0 A 1 8 CS RST RD WR D0 – D7 Giải mĩ địa chỉ INTR A INTR B PA0 – PA7 8 PA0 – PA7 8 PC TBN A2 - An INTR VXL 8255 A
Ghộp nối 8255A với MVT và TBN
Tớn hiệu /CS (Chip Select) của PPI được nối với bộ giải mĩ cỏc địa chỉ cao (A2 – An) của VXL
Cỏc tớn hiệu ra yờu cầu ngắt chương trỡnh (INTRA , INTRB) của 8255 được nối vào lối vào INTR của VXL qua một vi mạch logic OR
• Phần ghộp nối với thiết bị ngồi:
Tuỳ thuộc loại TBN, số bit của đường dõy số liệu và phương thức trao đổi tin mà ta cú cỏch mắc đường dõy khỏc nhau.
Chế độ 0: Ba đường dõy PA, PB, PC đều được dựng để trao đổi số liệu hoặc tin về điều khiển và trạng thỏi một cỏch bỡnh đẳng với nhau và tuỳ ý lựa chọn. Ở chế độ này cú thể:
- Khụng cần đối thoại giữa 8255 và TBN, chỉ cú trao đổi số liệu trờn 1 trong 3 cổng
- Nếu cần tin về điều khiển hay đọc trạng thỏi của TBN ta sử dụng thờm cỏc cửa khỏc cho mục đớch này ngồi cửa trao đổi số liệu
Chế độ 1: Chỉ cú hai cửa A,B trao đổi số liệu độc lập nhau, cũn cỏc đường PCi của cửa PC để dựng để hội thoại cho cỏc cửa A,B ở trờn. Cỏc đường này cú chiều và vai trũ xỏc định do đú khụng thể thay đổi.
Chế độ 2: Chỉ cho cửa PA với số liệu vào/ra hai chiều. Cỏc bit của PC cũng cú vai trũ và chiều xỏc định
Ở cỏc chế độ bắt tay (đối thoại), giữa 8255 và TBN chỉ trao đổi hai tớn hiệu hỏi đỏp mà thụi
Một số ứng dụng ghộp nối 8255 với thiết bị ngồi: • Mạch ghộp nối 8255 ở chế độ 0:
Ở hỡnh 4.x giới thiệu cỏch ghộp nối 8255 với mỏy in qua cổng PA cú chiều ra, và ghộp nối với một bộ biến đổi tương tự - số qua cổng PB cú chiều vào. Cổng C được dành cho cỏc tớn hiệu đối thoại. Trong đú:
Nửa C thấp là cửa vào, đọc trạng thỏi của mỏy in và ADC
- PC0 cho trạng thỏi mỏy in bận (busy)
- PC1 cho tớn hiệu ACK của mỏy in
- PC2 Cho tớn hiệu EOC (End of Convertion) của ADC
Nửa C cao để đưa ra cỏc tin về điều khiển
- PC4 đưa ra tớn hiệu chốt dữ liệu cho mỏy in
• Ghộp nối 8255 ở chế độ 1:
Chương trỡnh trao đổi tin cho 8255A
Tuỳ theo cỏch mắc và TBN, chương trỡnh cần cú cỏc khối lệnh cơ bản sau:
1. Khởi tạo: đú là lờnh ghi vào thanh ghi điều khiển của 8255 với địa chỉ thấp A0, A1 =
11 tới từ điều khiển. Cỏc bit từ điều khiển này được xỏc định bởi: - Chế độ của cỏc cửa
- Chiều (vào/ra) của cỏc cửa
2. Điều khiển TBN: Cần đưa nội dung của cỏc bit cho cỏc cửa dựng để điều khiển TBN.
Nếu ở chế độ 1,2 cỏc bit nay là cỏc bit PCi của đối thoại, ta khụng cần phải viết lệnh đưa giỏ trị ra nữa. Cũn trường hợp ở chế độ 0 ta cú thể dựng một trong hai cỏch sau:
- Lập/ xoỏ từng bit PCi của cửa PC - Đưa tin ra cỏc bit của cỏc cửa
3. Đọc và kiểm tra trạng thỏi:
- Cỏc lệnh đọc vào
o Thanh ghi trạng thỏi nếu cửa dựng chế độ 1, 2
8 PA0 – PA7 INTRD0 – D7 RD WR A0 A1 CS RST RD WR D 0 – D 7 Giải mĩ địa chỉ PB 0 – PB 7 Mỏy in A2 - An VXL 8255 A
Ghộp nối 8255A với MVT và TBN ở chế độ 0
Reset ADC /ACK Busy Data Strobe EOC Start PC 0 PC1 PC4 PC5 PC3 D0 – D7 RD WR A0 A1 8 CS RST RD WR D 0 – D 7 Giải mĩ địa chỉ PC3 PC0 A2 - An INTR VXL 8255 A
Ghộp nối 8255A với MVT và TBN ở chế độ 1
Reset PB Mỏy in ADC /ACK Busy Data Strobe EOC Start PA
o Một cửa bất kỳ ở chế độ 0 dựng để ghi trạng thỏi của TBN. - Lệnh và logic (AND) để chắn cỏc bit khụng cần kiểm tra
- Lệnh so sỏnh (CMP) với cỏc giỏ trị 1 của bit đú
- Lệnh trở về vị trớ cú lệnh đọc trạng thỏi nếu kết quả so sỏnh khụng đỳng trạng thỏi cần xột
4. Trao đổi số liệu:
- Đưa số liệu vào (IN đv VXL họ 86) hay chuyển số liệu MOV (của VXL 8085) - Đưa số liệu ra (OUT ) hay chuyển số liệu MOV
5.4 Ghộp nối song song qua cổng mỏy in
5.4.1. Ghới thiệu chung
Cổng mỏy in là giao diện thường được sử dụng nhiều nhất trong cỏc ứng dụng ghộp nối mỏy tớnh đơn giản, do tớnh phổ cập và đơn giản trong việc ghộp nối và điều khiển cộng với yờu cầu tối thiểu về thiết bị phần cứng thờm vào. Cổng này cho phộp đưa vào tới 13 bit và đưa ra 12 bit song song, trong đú cú 4 đường điều khiển, 5 đường bỏo trạng thỏi và 8 đường dữ liệu. Trong hầu như bất kỳ PC nào ta cũng cú thể tỡm thấy cổng mỏy in ở phớa sau. Đầu nối này cú dạng DB 25 chõn (giắc cỏi – female).
Cỏc cổng song song gần đõy được chuẩn hoỏ theo chuẩn IEEE 1284 đưa ra năm 1994. Chuẩn này mụ tả 5 chế độ hoạt động của cổng mỏy in như sau:
1. Chế độ tương thớch (Compatibility mode) 2. Chế độ Nibble
3. Chế độ Byte 4. Chế độ EPP 5. Chế dộ ECP
Chế độ cớ sở (hay cũn gọi là Centronics mode) được biết dến từ lõu. Chế độ này chỉ cho phộp đưa dữ liệu theo một chiều ra (output), với tốc độ tối đa 150kB/s. Muốn thu dữ liệu (input) ta phải chuyển sang chế độ Nibble hay Byte. Chế độ Nibble cú thể cho phộp đưa vào 4 bit song song một lần. Chế độ Byte sử dụng tớnh năng song song hai hướng của cổng mỏy in để đưa vào một byte.
Để đưa ra một byte ra mỏy in ( hoặc cỏc thiết bị khỏc) trong chế độ cơ sở, phần mềm phải thực hiện cỏc bước sau:
(1) Viết dữ liệu ra cổng mỏy in (ghi vào thanh ghi dữ liệu)
(2) Kiểm tra mỏy in cú bận khụng, nếu mỏy in bận, nú sẽ khụng chấp nhận bất cứ dữ liệu nào, do đú dữ liệu ghi ra lỳc đú sẽ bị mất
(3) Nếu mỏy in khụng bận, đặt chõn Strobe (chõn 1) xuống thấp (mức 0), để bỏo với mỏy in là đĩ cú dữ liệu trờn đường truyền ( chõn 2 - 9)
(4) Sau đú chờ 5 microgiõy và đặt chõn Strobe lờn cao (mức 1).
Chế độ mở rộng (EPP) và nõng cao (ECP) sử dụng cỏc thiết bị phần cứng tớch hợp thờm vào để thực hiện và quản lý việc đối thoại với thiết bị ngồi. Ở chế độ này để cho phần cứng kiểm tra trạng thỏi mỏy in bận, tạo xung strobe và thiết lập sự bắt tay thớch hợp. Do đú chỉ cần sử dụng một lệnh vào ra để trao đổi dữ liệu nờn giỳp tăng tốc độ thực hiện. Khi đú cổng này cú thể đưa dữ liệu ra với tốc độ 1 – 2 MB/s. Ngồi ra chế độ ECP cũn hỗ trợ sử dụng kờnh DMA và cú thờm bộ đệm FIFO.
5.4.2. Cấu trỳc cổng mỏy in
Chuẩn IEEE 1284 đưa ra 3 đầu nối dựng cho cổng mỏy in. Dạng A (DB25) cú thể thấy ở hầu hết cỏc mỏy PC, dạng B (36 chõn) thường thấy ở mỏy in, và dạng C, 36 chõn, giống dạng B nhưng nhỏ hơn, cú cỏc thuộc tớnh điện tốt hơn và cú thờm 2 đường tớn hiệu dành cho cỏc thiết bị đời mới sau này.
Số hiệu chân
(DB25) Tên
Hớng
(In/Out) Thanhghi Mơ tả
1 nStrobe In/Out Control Byte đợc in
2 Data 0 Out Data
Đờng dữ liệu D0 - D7
3 Data 1 Out Data
4 Data 2 Out Data
5 Data 3 Out Data
6 Data 4 Out Data
7 Data 5 Out Data
8 Data 6 Out Data
9 Data 7 Out Data
10 nAck In Status Xác nhận (Acknowledge)
11 Busy In Status Máy in bận
12 Paper-Out / Paper-End In Status Hết giấy ( Paper Empty)
13 Select In Status Lựa chọn ( Select )
14 nAuto-Linefeed In/Out Control Tự nạp giấy ( Auto Feed)
15 nError / nFault In Status Lỗi
16 nInitialize In/Out Control Đặt lại máy in
17 nSelect-Printer / nSelect-In In/Out Control
nXXXX: Tích cực ở mức thấp
Bảng sơ đồ chõn của cổng mỏy in
Tớn hiệu ra của cổng mỏy in thường ở cỏc mức logic TTL.
Address Cổng
378h - 37Fh LPT 1
278h - 27Fh LPT 2
Khi khởi động BIOS gỏn địa chỉ cho cỏc cổng mỏy in và lưu thụng tin địa chỉ này trong bộ nhớ ở địa chỉ cho ở bàng dưới:
Địa chỉ bắt đầu Mụ tả
0000:0408 Địa chỉ cơ bản cổng LPT1
0000:040A Địa chỉ cơ bản cổng LPT2
0000:040C Địa chỉ cơ bản cổng LPT3
0000:040E Địa chỉ cơ bản cổng LPT4
Chương trỡnh vớ dụ đọc thụng tin địa chỉ của cỏc cổng mỏy in cú trong mỏy tớnh:
#include <stdio.h> #include <dos.h> void main(void) {
unsigned int far *ptraddr; /* Pointer to location of Port Addresses */
unsigned int address; /* Address of Port */ int a;
ptraddr=(unsigned int far *)0x00000408; for (a = 0; a < 3; a++)
{
address = *ptraddr; if (address == 0)
printf("No port found for LPT%d \n",a+1); else printf("Address assigned to LPT%d is %Xh\n",a+1,address); *ptraddr++; } }
5.4.3. Cỏc thanh ghi của cổng mỏy in:
1. Thanh ghi dữ liệu (Data Register)
Địa chỉ Tên Read/Write Số hiệu bit Mơ tả
Base + 0 Data Port
Write Bit 7 Data 7
Bit 6 Data 6 Bit 5 Data 5 Bit 4 Data 4 Bit 3 Data 3 Bit 2 Data 2 Bit 1 Data 1 Bit 0 Data 0
Địa chỉ cơ sở (Base address) thường gọi là cổng dữ liệu (Data port) hay Thanh ghi dữ liệu (Data Register) thường sử dụng để đưa dữ liệu ra cỏc chõn tớn hiệu ( Chõn 2 – 9). Thanh ghi này thường là thanh ghi chỉ ghi. Nếu ta đọc dữ liệu ở cổng này ta sẽ thu được giỏ trị mà ghi ra gần nhất. Nếu cổng mỏy in là hai chiều thỡ ta cú thể thu giữ liệu vào từ cổng này.
2. Thanh ghi trạng thái ( Status Register):
Địa chỉ Tờn Read/Write Số hiệu bit Mụ tả
Base + 1 Status Port Read Only Bit 7 Busy
Bit 6 Ack
Bit 5 Paper Out Bit 4 Select In
Bit 3 Error
Bit 2 IRQ (Not)
Bit 1 Reserved
Bit 0 Reserved
Thanh ghi trạng thỏi là thanh ghi chỉ đọc. Bất kỳ dữ liệu nào viết ra cổng này đều bị bỏ qua. Cổng trạng thỏi được tạo bới 5 đường tớn hiệu vào (Chõn 10, 11, 12, 13, 15), một bit trạng thỏi ngắt IRQ và 2 bit để dành. Chỳ ý rằng bit 7 (Busy) là đầu vào tớch cực thấp, nghĩa là khi cú một tớn hiệu +5V ở chõn 11, bit 7 sẽ cú giỏ trị logic 0. Tương tự với bit 2 (nIRQ) nếu cú giỏ trị 1 cú nghĩa là khụng cú yờu cầu ngắt nào xuất hiện.
3. Thanh ghi điều khiển ( Control Register):
Địa chỉ Tên Read/Write Số hiệu bit Mơ tả
Base + 2 Control
Port Read/Write Bit 7Bit 6 UnusedUnused
Bit 5 Enable Bi-Directional Port Bit 4 Enable IRQ Via Ack Line Bit 3 Select Printer Bit 2 Initialize Printer (Reset)
Bit 1 Auto Linefeed
Bit 0 Strobe
Thanh ghi điều khiển được dự định là chỉ ghi. Khi một mỏy in được nối với mỏy tớnh, 4 đường điều khiển sẽ được sử dụng. Đú là cỏc đường Strobe, Auto Linefeed, Inittialize và Select Printer, tất cả đều là đầu ra đảo trừ đường Initialize.
Bit 4 và 5 là cỏc bit điều khiển nội. Bit 4 cho phộp ngắt và bit 5 cho phộp chế độ vào ra 2 chiều. Đặt bit 5 cho phộp thu đữ liệu vào qua đường Data 0 – 7.
4. Thanh ghi điều khiển mở rộng ECR (Extended Control Register ):
Địa chỉ Bit Function
Base + 402H 7:5 Selects Current Mode of Operation
000 Standard Mode 001 Byte Mode
010 Parallel Port FIFO Mode 011 ECP FIFO Mode
100 EPP Mode 101 Reserved
110 FIFO Test Mode 111 Configuration Mode 4 ECP Interrupt Bit
3 DMA Enable Bit 2 ECP Service Bit 1 FIFO Full 0 FIFO Empty
5.4.4. EPP - Enhanced Parallel Port
Cụ̉ng song song nõng cao (EPP) đã được thiờ́t kờ́ bởi sự liờn kờ́t giữa các hãng Intel, Xircom & Zenith Data Systems. Cụ̉ng EPP ban đõ̀u đươ ̣c thiờ́t kờ́ theo chũ̉n và sau đó là chũ̉n IEEE 1284 ra đời năm 1994. EPP có hai chũ̉n: EPP 1.7 và EPP 1.9. Có mụ ̣t vài sự khác nhau giữa các chũ̉n này mà chúng có những ảnh hưởng tới các thao tác xử lý của thiờ́t bi ̣. Vṍn đờ̀ này sẽ còn đươ ̣c nói đờ́n trong phõ̀n sau. EPP có tụ́c đụ ̣ truyờ̀n dữ liờ ̣u theo tiờu chũ̉n là từ 500KB/s tới 2MB/s. Điờ̀u này cho phép các thiờ́t bi ̣ phõ̀n cứng ta ̣i các cụ̉ng ta ̣o ra tín hiờ ̣u bắt tay (tín hiờ ̣u móc nụ́i, hụ ̣i thoa ̣i) chẳng ha ̣n như tín hiờ ̣u stroble, đờ̉ phõ̀n mờ̀m xử lý chúng, ví du ̣ như của Centronics.
EPP đươ ̣c sử du ̣ng rụ ̣ng rãi hơn ECP. EPP khác với ECP ở chụ̃ cụ̉ng EPP phát ra các tín hiờ ̣u điờ̀u khiờ̉n và điờ̀u khiờ̉n tṍt cả quá trình truyờ̀n dữ liờ ̣u từ nó tới thiờ́t bi ̣ ngoa ̣i vi. Bờn ca ̣nh đó thì ECP la ̣i yờu cõ̀u thiờ́t bi ̣ ngoa ̣i vi có sự “hụ ̣i thoa ̣i” trở la ̣i bởi mụ ̣t tín hiờ ̣u móc nụ́i. Điờ̀u này là khụng mờ̀m dẻo cho viờ ̣c thiờ́t lõ ̣p mụ ̣t liờn kờ́t logic và như võ ̣y cõ̀n có mụ ̣t bụ ̣ điờ̀u khiờ̉n chuyờn du ̣ng hoă ̣c mụ ̣t chip ngoa ̣i vi ECP.
• EPP Hardware Properties (các đă ̣c trưng phõ̀n cứng EPP)
Khi sử du ̣ng chờ́ đụ ̣ EPP, mụ ̣t tõ ̣p các tác vu ̣ khác nhau (có tờn tương ứng) được sắp xờ́p trờn mụ̃i đường dõy tín hiờ ̣u. Các tín hiờ ̣u này được chỉ ra trong bảng 4. Chúng sử du ̣ng các tờn chung trong SPP và EPP trong các bảng mụ tả vờ̀ cụ̉ng song song và các tài liờ ̣u. Điờ̀u này có thờ̉ làm cho nó rṍt cứng nhắc đờ̉ chỉ rõ chính xác những gì đang xảy ra. Mă ̣c dù tṍt cả các tài liờ ̣u ở đõy đờ̀u sẽ sử du ̣ng tờn theo EPP.
Pin SPP Signal EPP Signal IN/OUT Function
1 Strobe Write Out Mức thấp thể hiện một chu kỳ ghi, mức caochỉ định là đang đọc 2-9 Data 0-7 Data 0-7 In-Out Data Bus. Hai chiều
10 Ack Interrupt In Interrupt Line. Ngắt xuất hiện ở sườn dươngcủa xung 11 Busy Wait In Used for handshaking. A EPP cycle can bestarted when low, and finished when high. 12 Paper Out /End Spare In Spare - Not Used in EPP Handshake
13 Select Spare In Spare - Not Used in EPP Handshake
14 Auto Linefeed Data Strobe Out Khi ở mức thấp, chỉ định là đang truyền dữliệu (data) 15 Error / Fault Spare In Spare - Note used in EPP Handshake
16 Initialize Reset Out Reset - Tớch cực thấp
17 Select Printer AddressStrobe Out Khi ở mức thấp, chỉ định đang truyền đại chỉ 18-25 Ground Ground GND Ground
Các tín hiờ ̣u Paper Out, Select và Error khụng được xác đi ̣nh trong tõ ̣p các tín hiờ ̣u bắt tay của EPP. Các tín hiờ ̣u này có thờ̉ được sử du ̣ng tuỳ ý theo sự đi ̣nh nghĩa của người sử du ̣ng. Tra ̣ng thái của các được tín hiờ ̣u này có thờ̉ được xác đi ̣nh ta ̣i bṍt kỳ thời điờ̉m nào theo sự xắp xờ́p tín hiờ ̣u của thanh ghi tra ̣ng thái. Đáng tiờ́c là khụng có đõ̀u ra thừa. Điờ̀u này có thờ̉ trở nờn phức ta ̣p