PCI-8255卡安裝

您可以上益眾科技公司的網站,找到PCI-8255介面卡的安裝資料,請依益眾科技公司說明書安裝您的PCI-8255介面卡。

一、        功能與特色

    1.      最普遍的PCI界面,使用益眾科技公司的雙8255界面實驗卡(A20-0002)的舊客戶不須更改程式即可升級為PCI界面。

2.      含有兩顆8255,可處理48BitI/O

3.      可自行結合其他電路作為 PCI AD/DA卡(說明書內附簡單的應用說明)、馬達控制卡……等。

4.      內含8LED可供測試時使用。

5.          可應用於Visual C++Borland C++ BuilderVisual BasicTurbo C、組合語言等開發環境。

6.          Borland C++ Builder 範例程式。

二、        配件

1.          PCI 8255               × 1

2.          系統磁片                   × 1

3.          使用說明書               × 1

4.          25 Pin D型連接線  × 2

 

三、        元件配置說明

 

1.          8255晶片:共有兩顆用來控制I/O的控制器,其I/O位址透過【2.指撥開關】設定,並且分別由【3.8255-2 I/O埠】、【4.8255-1 I/O埠】雙向傳遞資料。

2.          指撥開關:共有8Bit,可用來設定【1.8255晶片】的位址以及關閉PCI 8255的功能,於下節有更詳細的說明。

3.          測試LED連接至 8255-1 Port A,可方便測試。

4.          8255-2 I/O CPP2第二顆8255的雙向I/OCPP2,接腳如下圖所示。

2B0

2B1

2B2

2B3

2B4

2B5

2B6

2B7

2C4

2C5

2C6

2C7

VCC

2A0

2A1

2A2

2A3

2A4

2A5

2A6

2A7

2C0

2C1

2C2

2C3

GND

5.          8255-1 I/O CPP1第一顆8255的雙向I/OCPP1,除了連接至界面卡上的接腳,另外還提供了一組 25 Pin D-SUB 的接頭,其接腳圖如下所示。

1A0

1B0

1A1

1B1

1A2

1B2

1A3

1B3

1A4

1B4

1A5

1B5

1A6

1B6

1A7

1B7

1C0

1C4

1C1

1C5

1C2

1C6

1C3

1C7

GND

VCC

四、        位址設定

       PCI 8255卡不支援隨插即用(PNPPlug AND Play)功能,因此PCI 8255卡的位址都必須經由卡上的指撥開關設定,PCI 8255卡共有兩顆8255,並且都可以經由指撥開關1~34~6 Bit指定起始位址(詳見下頁的表格),指定位址時強烈建議讓這兩顆8255使用不同的位址,避免干擾。

在出廠時,預設的位址是:

第一顆在200H的位址,並佔用了200H201H202H203H

第二顆在240H的位址,並佔用了240H241H242H243H

位址所代表的意義依序為 PortAPortBPortC及控制暫存器,控制暫存器是用來設定PortAPortBPortC為輸出埠、輸入埠或雙向傳輸埠。

假使我們將指撥開關設定為 380H ,依照上面的規則就可以知道PortA是在380H的位址、PortB 是在 381H 的位址、PortC 是在382H 的位址,而控制暫存器是位在383H的位址,接著只要利用任何程式語言去寫入或讀取這些 I/O Port就可進行控制。

指撥

開關

8

7

6

5

4

3

2

1

CPP2

CPP1

功能

IDEN

X

CPP2

CPP1

PSEL2

PSEL1

PSEL0

PSEL2

PSEL1

PSEL0

位址

位址

設定值

0

X

0

0

0

0

0

0

200

200

0

X

0

0

1

0

0

1

240

240

0

X

0

1

0

0

1

0

280

280

0

X

0

1

1

0

1

1

2C0

2C0

0

X

1

0

0

1

0

0

300

300

0

X

1

0

1

1

0

1

340

340

0

X

1

1

0

1

1

0

380

380

0

X

1

1

1

1

1

1

不使用

不使用

1

X

X

X

X

X

X

X

不使用

不使用

五、       

 

 

 

 

 

初步測試

益眾科技公司提供PCI 8255卡兩種測試方法,一種是利用 DEBUG 軟體(Windows 內建的除錯程式),另一種是利用益眾科技公司所提供的測試程式。使用上述兩種測試方法不必做任何接線的動作,只須觀察界面卡上的燈號即可,在進行測試前請先確定界面卡所設定的 I/O 埠位址,本測試範例使用的PCI 8255卡的指撥開關設定如下,可此可知CPP1是使用位址240H,您的設定值也許會不同,但除了與其他界面卡相衝外,位址的不同並不會影響PCI 8255卡的功能:

0

X

0

1

0

0

0

1

 

  

為了讓使用者更了解所有測試程式的差異,益眾科技公司所有的測試程式統一將測試燈號輸出為下面的狀態:

文字方塊: 亮暗亮暗 暗暗暗暗

 

 

1.      DEBU測試方法

A.   執行 C:\WINDOWS\COMMAND\DEBUG,執行後游標左方會出現一個DEBUG的提示符號 】,代表已進入DEBUG的環境。參考畫面如下:

 

 

B.   DEBUG的指令中,大寫的 “O” 是輸出資料到I/O 埠,其指令格式如下:

文字方塊: O   “I/O 埠位址”   “8位元資料”

 

 


 

假使您卡上的 CPP1 是設定在 240H,控制時會使用到的位址有:240H241H242H243H,分別代表 PortAPortBPortC及控制位元的位址。

請您輸入: O 243 80 ,將控制位元設定為雙向I/O

再輸入:   O 240 A0 ,將PortA(測試燈號)設定為

文字方塊: 亮暗亮暗 暗暗暗暗

 

 


 

其操作畫面如右:

 

 

 

 

C.   如果燈號輸出為:亮暗亮暗 暗暗暗暗,就代表界面卡輸出功能正常。

D.   如果您想要測試輸入,DEBUG 也提供大寫的 “I” 用來讀取 I/O埠的資料,其指令格式如下:

文字方塊: I   “I/O 埠位址”

 

 

 

 

這是益眾科技公司操作後的結果:

如果測試的結果異常,請檢查 I/O 位址是否設定錯誤,以及是否有其他界面卡使用了相同的 I/O 位址,檢查的方法在第七節有詳細的說明,資源衝突有時會造成由PCI 8255卡輸出資料時正常,但由PCI 8255卡輸入資料卻會發生錯誤的情形產生。請確定將所有的埠都測試過一次。

 

2.    PCI / ISA測試程式:放入光碟片後會自動出現下面的視窗(或點選test.exe),請依照以下順序操作即可。

A.   請在下拉選單中選擇PCI 8255所設定的位址,益眾科技公司的測試環境是將PCI 8255卡設定使用 0x240 0x280

B.   在左邊的控制位元設定模式,本程式預設值是 0x80,如果您不想更改,請直接點選設定 鈕。

C.   I/O 設定 點選您想設定的狀態,如PortA輸出、PortB輸入、PortC輸入。

D.   “Port 數值 的編輯框填入您想輸出的數值(十進位或十六進位,十六進位請以 0x 做為前置字串,如範例的0x80),範例裡我們在 “PortA 數值填入 0xA0

E.   點選交換狀態 即可。


 

 

六、    編寫程式

1.    Turbo C 範例

#include “stdio.h”

#include “dos.h”

main()

{

 // 使用 outportb , outport 輸出資料到 IO Port

 // 使用 inportb , inport 輸入資料到變數裡

 

 

 int Address1 = 0x240;       //第一顆8255 IO 240H

 int Address2 = 0x280;       //第二顆8255 IO 280H

 int ReadPort;             //讀出資料的暫存器

 

 outportb(Address1 + 3 , 0x80); //初始第一顆 8255 (IO 243H)

 outportb(Address2 + 3 , 0x80); //初始第二顆 8255 (IO 283H)

 

 outporb(Address1 , 0xAA);   //輸出 PortA 0xAA

 

 ReadPort = inportb(Address1+1 ) //輸入 PortB ReadPort

 

 outportb(Address2 , inportb(Address1 +1)); 

// PortB 的資料丟到第二                                  // 8255 PortA

 

}

2.    Basic 範例

 ‘Basic 使用 OUT 輸出資料到 I/O

 ‘Basic 使用 INP  I/O 輸入資料到變數裡

 

 

 Dim address1 = &H240        ‘第一顆8255 IO 240H

 Dim address2 = &H280        ‘第二顆8255 IO 280H

 Dim readport               ‘讀出資料的暫存器

 

 OUT address1 + 3 , &H80      ‘初始第一顆 8255 (IO 243H)

 OUT address2 + 3, &H80       ‘初始第二顆 8255 (IO 283H)

 

 OUT address1,&HAA         ‘輸出 PortA 0xAA

 

 Readport = INP (address1+1)    ‘輸入 PortB ReadPort

 

 OUT address2,INP(address1+1)  ‘ PortB 的資料丟到第二

8255 PortA                               

 

3.    Borland C++ Builder 範例

A.   Winzip 解壓縮 Port.zip,裡面有 Port.obj Port.hpp兩個檔案。

B.   Port.ObjPort.hpp 複製到您的專案的資料夾。

C.   在您的專案裡加入 #include “Port.hpp”,程式會自動新增下列三個函數。

Word inportb(Word Addr)

void outportb(Word Addr , int Value)

void Register(void)

D.   參考 Turbo C 的範例將這些函數加入到您的物件(如按鈕)裡即可。

E.   如果您還有問題請參考光碟片所附的範例程式。

七、    測試與維修

1.    資源相衝(I/O 位址)檢測方法

進行這種檢測方法前,請先拔除PCI 8255卡,檢測的方法是利用【我的電腦à控制台à系統à裝置管理員à電腦(電腦內容)àI/O】,檢測步驟如下:

 

 

 


 

A. 點選【控制台】,出現【控制台】內容。

B. 點選 【系統】後,出現【系統內容】表單。

 

 

 

 

 

 

C. 點選【裝置管理員】的分頁,並在【電腦】雙按滑鼠左鍵,出現【電腦內容】表單。

D. 點選【檢視資源】的分頁,並點選【I/O(O)】的選項,點選後的表單如步驟E

E. 檢查看看是您想使用的位址是否被其他裝置使用到了。

 

 

 

 

 

 

 

 

如上邊的畫面中(反白部份)200 – 207 已經被搖捍連接埠使用了,所以我們不能將PCI 8255 卡設定為 200,不過可以設定2402802C0300340380PCI 8255卡使用。

 

2.常見問題Q&A

          Q1. 測試時CPP1沒有問題,可是CPP2的值沒辦法控制??

A1. 您可交換兩顆 8255 試看看,也許是其中一顆壞了。

Q2. 依照您的測試方法測試過了,資源都沒有相衝突,可是卻無法控制PCI 8255卡。

A2. 有幾個檢查的重點

l    指撥開關 IDEN# 請撥至 ON 的位置。

l    再確定指撥開關所設的位址及測試時所輸入的位址是否相同,有些人會把十進制的位址及十六進制搞錯。

l    控制PCI 8255前,是否先寫入控制位元到PCI 8255卡,假使指撥開關的CPP1設定在200H,測試前應該先輸出 80H0x80)到 203H0x203),並且測試燈號都會全部熄滅,接著才可以輸出或輸入資料到PCI 8255卡。

l    如果以上的步驟您都試過了,那麼大概是IC故障,您可自行購買 7424474245更換,如果更換了也無法解決,只好請您寄回益眾科技公司司,由益眾科技公司為您服務。

Q3. 在測試時輸出資料到PCI 8255卡都正常,可是由PCI 8255讀入的數值跟I/O設定的數值都不一樣,好像沒有被讀進去。

A3.  除了資源相衝突會造成這種情形外(有其他界面卡或裝置使用相同的I/O埠),也許您忘了共地(將PCI 8255卡的接地與外接電路的接地要連接起來,才有電流迴路),當然如果以上兩點您都已經注意了,也許是PCI 8255卡故障了,請送回益眾科技公司檢修。

Q4. 請問該如何利用Borland C++ Builder 控制 PCI 8255 ??

A4.  Borland C++ Builder不像TurboCBasic有支援直接控制I/O的語法(outportbinportb),因此我們如果要編寫程式時可能要利用 API 去控制,如果您不了解這些語法,可以上Borland C++ Builder的相關網站尋找控制項或元件。

Q5. 己經使用了元件並且在Windows98使用沒問題,不過在Windows2000WindowsXP仍然無法控制PCI 8255卡,為什麼??

A5.  Windows2000不允許使用者直接控制I/O(為了系統的穩定性,採取嚴格的資源掌控,限制使用者的權限),使用裝置前要向Windows2000的核心申請以獲得掌控,因此如果您想利用Windows2000的控制軟體,請參考Windows2000 SDK內的說明(MicroSoft原版Visusal Studio Professional Edition內附)。

八、    應用指南

1.    AD/DA電路:

我們可以使用ADC0809DAC0832兩顆IC結合PCI 8255達成數位、類比轉換的功能,以下提供ADC部份簡易的說明,但仍建議您參考IC製造商所提供的DataSheet(本說明書取自National ADC 0809 DataSheet的資料)。

 

 

 

 

 

 

 

l       設定位址:這顆IC可支援8個頻道,由ABC三根接腳解碼後選擇一個特定的頻道(如下表),並且將數位化的結果輸出至DB7~DB0

 

 

 

 

l       寫入指令:當這根接腳設定為低態時,會把位址存入並開始類比轉換為數位的動作。

l       偵測中斷:當INTERRUPT0被設定為1時,代表數位化的工作完成,可以準備取得數位化的資料。

l       讀取資料:當這根接腳設定為低態後,資料線DB7~DB0上的資料就是類比轉為數位的結果。

ADC0809的時序圖如下:

 

 

 

 

 

 

 

 

 

 

 

如需National系列ICDataSheet,請至www.national.com搜尋,網站所提供的DataSheet有相當詳細的設計說明。