标题：PC-6360
概述
PC-6360多功能模入接口卡上的A/D转换结果为12位字长，同时还备有4路数字量输入和4路数字量输出接口和三路 16位字长的计数/定时器，以及1MHz 的基准时钟。本卡的A/D转换启动方式可以选用程序触发、定时器自动触发、外同步触发等方式，转换状态可以用程序查询，也可以用中断方式通知CPU读取转换结果。同时本卡还具有定时中断和外触发中断供用户选用。
本卡可以直接与 PS-010/ PS-011 等前端信号处理板配套使用，方便地对热电偶、热电阻及各类传感器输出的微弱信号进行放大和采集。每块PC-6360 多功能模入接口卡最多可以连接8块 PS-010 等前端信号处理板即128路模拟信号输入。
主要技术参数
2.1输入通道数：单端8路； ( 标*为出厂标准状态，下同 )
2.2输入信号范围：0V～10V*；－5V～+5V；－10V～+10V
2.3输入阻抗：≥ 10MΩ
2.4A/D转换分辨率：12位
2.5A/D转换速度：10μS
2.6A/D启动方式：程序启动/定时触发启动/外触发启动
2.7A/D转换结束识别：程序查询/中断方式
2.8A/D转换非线性误差：±1LSB
2.9A/D转换输出码制：单极性原码*/双极性偏移码
2.10 系统综合误差：≤ 0.1% F.S
2.11 DI：4路/DO：4路；TTL电平带锁存
2.12 16位字长计数/定时器：3路，用户可外接使用一路计数/定时通道
2.13 基准时钟：1MHz，占空比50%
2.14 电源功耗：( 不含外接前端信号处理板部分 )
+ 5V ( ±10% ) ≤ 200mA
+12V ( ±10% ) ≤ 50mA
－12V ( ±10% ) ≤ 50mA
2.15 使用环境要求：
工作温度：10℃～40℃
相对湿度：40%～80%
存贮温度：－55℃～+85℃
2.16 外型尺寸：( 不含档板 )
长×高=139.7mm×106.7mm( 5.5英寸×4.2英寸 )
工作原理
PC-6360模入接口卡主要由模拟量输入及模数转换电路、数字量输入输出电路、计数/定时器电路及接口控制逻辑电路构成。工作原理框图PC-6360 模入接口卡工作原理框图见图1。
图1 工作原理框图模拟量输入及模数转换电路外部模拟信号经多路转换开关选择并经高速跟随器驱动后送入模数转换器进行转换。模数转换器的启动可以使用程序启动方式或者定时器定时触发启动方式，也可用外部触发方式启动。其转换状态和结果可用程序查询和读出。转换结束信号也可用中断方式通知CPU进行处理。数字量输入输出电路数字量输入输出电路可为用户提供4路DI及4路DO的信号，并具备加电DO清零和输出锁存功能。其中4路DO信号可以作为PS-010等前端信号处理板的通道选择控制信号。计数/定时器电路计数/定时器电路由一片可编程定时/计数器 8253 芯片和基准时钟电路以及有关的跨接选择器组成。可为用户提供3个16位字长的计数/定时通道和1MHz，占空比为50%的基准时钟，其中两路计数/定时通道供本卡内部使用，用户可外接使用一路计数/定时通道。接口控制逻辑电路接口控制逻辑电路用来产生与各种操作有关的控制信号。8253可编程计数/定时器应用简介3.6.1 8253芯片管脚图如图2。
图2 8253芯片管脚图
3.6.2 8253 功能及框图：
8253是INTEL公司微型计算机系统中的一个部件，可以将8253作为一个具有四个输入/输出接口的器件处理，其中三个是计数器，一个是可
编程序工作方式的控制寄存器。其内部结构图如图3所示。（见下页）
图3 8253内部结构图
3.6.3 8253可编程计数/定时器编程要点：
8253 的全部功能是由CPU 编程设定的。CPU 通过输出指令给8253装入控制字，从而设定其功能。8253控制字格式如下：
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
各位的功能见表1～表4：
表1SC1、SC0 － 计数器选择
SC1 SC0 选 择 计 数 器
0 0 选择0#
0 1 选择1#
1 0 选择2#
1 1 非 法
表2RL1、RL0 －CPU读/写操作
RL1RL0 操 作 类 型
0 0 计数器封锁操作
0 1 读/写计数器低8位
1 0 读/写计数器高8位
1 1 先读/写低8位，后读/写高8位
表3M2、M1、M0 －工作方式选择
M3M2M1 计 数 工 作 方 式
0 0 0 方 式 0
0 0 1 方 式 1
0 1 0 方 式 2
0 1 1 方 式 3
1 0 0 方 式 4
1 0 1 方 式 5
表4BCD－计数方式选择
BCD 数 码 形 式
0 十六位二进制计数
1 四位十进制 ( BCD ) 码计数
8253－5的三个计数器是独立的16位减法计数器。计数器的工作方式由工作方式寄存器确定。计数器在编程写入初始值后，在某些方式下计数到0后自动预置，计数器连续工作。CPU访问计数器时，必须先设定工作方式控制字中的RL1、RL0位。计数器对CLK计数输入端的输入信号进行递减计数。选通信号GATE控制计数工作的进行，其功能如表5所示。
表5选通信号 GATE 的功能 
低电平或进入低电平 上 升 边 沿 高 电 平
方式0 禁止计数 ---- 允许计数
方式1 ---- 1.初始化和计数 
2.下一个时钟后清除输出 ----
方式2 1.禁止计数 2.使输出立即变为高电平 1.重新装入计数器 
2.启动计数 允许计数
方式3 1.禁止计数 2.使输出立即变为高电平 初始化和计数 允许计数
方式4 禁止计数 计数未结束时初始化和计数 允许计数
方式5 ---- 初始化和计数 ----
8253-5 的三个计数器按照各工作方式寄存器中控制字的设置进行工作。可以选择的工作方式有六种。这六种方式是：
方式0：计数结束时中断。编程后自动启动，计数器减1计数，计数到终点( 减至0 )后输出高电平，可用于中断请求信号，GATE为低电平时停止计数，回到高电平后继续往下计数。再次启动要重新装入计数值或重新编程。
方式1：可编程单脉冲输出。GATE上升沿进行初始化并开始计数。输出低电平的宽度等于计数时间。单脉冲输出可用GATE 上升沿多次触发。
方式2：比率发生器。编程后重复地循环计数。计数到终点时输出一个时钟周期宽度的低电平脉冲，自动初始化后继续计数。用GATE的上升沿初始化，并开始计数。GATE为低电平时停止计数。
方式3：方波发生器。这种方式是在编程后重复地循环计数，输出波形为方波。如果初始计数值为偶数，每个时钟输入脉冲使计数器减2，达到计数终点时输出电平改变。如果初始计数值为奇数，则输出高电平时第一个时钟输入脉冲使计数器减1，随后每个输入脉冲使计数器减2；输出为低电平时第一个时钟输入脉冲使计数器减3，随后每个输入脉冲使计数器减2，到达计数终点时输出电平改变，计数器自动初始化后继续计数。用GATE的上升沿初始化并开始计数，GATE为低电平时停止计数。
方式4：软件启动选通脉冲输出。编程后自动启动，计数到终点后输出一个时钟周期的低电平脉冲。用GATE的上升沿初始化并开始计数，GATE为低电平时停止计数。
方式5：硬件启动选通脉冲输出。编程后，等待GATE上升沿进行初始化并开始计数，计数到终点后输出一个时钟周期的低电平脉冲，计数器开始计数后不受GATE信号电平的影响，这种选通脉冲的输出可用GATE的上升沿多次触发。在工作方式控制字中，如果设置计数器锁存操作，则该控制字中工作方式选择位 M1、M0 和计数方式选择位BCD无效。设置锁存操作时不影响计数器的工作方式，计数器锁存操作，是在计数器计数过程中，在不影响正在进行的计数操作的条件下，把当前的计数值锁存到寄存器，供CPU读取，这时在工作方式控制字中，SC1、SC0 指定要锁存的计数器，RL1、RL0=00表示锁存操作，其余4位无效，计数器按原来设定的方式工作。
当本卡A/D转换选择定时器定时触发启动工作方式时，一般将8253的工作方式设置为方式2 ( 即比率发生器 )，以保证符合A/D转换启动信号的要求。
安装及使用注意
本卡的安装十分简便，只要将主机机壳打开，在关电情况下，将本卡插入主机的任何一个空余扩展槽中，再将档板固定螺丝压紧即可。37芯D型插头可从主机后面引出并与外设连接。
本卡采用的器件可能会因静电击穿或过流造成损坏，所以在安装或用手触摸本卡时，应事先将人体所带静电荷对地放掉，同时应避免直接用手接触器件管脚，以免损坏器件。
禁止带电插拔本接口卡。设置接口卡开关、跨接套和安装接口带缆均应在关电状态下进行。
当模入通道不全部使用时，应将不使用的通道就近对地短接不要使其悬空以避免造成通道间串扰和损坏通道。
本卡跨接选择器较多，使用中应严格按照说明书进行设置操作。
为保证安全及采集精度，应确保系统地线计算机及外接仪器机壳）接地良好。并应注意对信号线进行屏蔽处理。
对外供电端应注意加以保护，严禁短路，否则将造成主机电源损坏，使用中应特别小心。
使用与操作
5.1 主要可调整元件位置见图4。
图4 主要可调整元件位置图
5.2 I/O基地址选择：
本卡的I/O基地址由地址总线A3～A9决定。用户可根据需要通过K1自行确定I/O基地址（出厂时设为300H）。开关拨至ON处为“0”，反之为“1”。现举例说明见图5。（图5请见下页）
ON1234567 ON1234567
A3 A4 A5 A6A7A8A9 A3 A4A5 A6A7 A8A9
(a) 100H (b) 318H
图5I/O基地址选择举例
5.3 输入输出插座接口定义：
输入输出插座接口定义见表6。
表6输入输出插座接口定义表
插座引脚号 信 号 定 义 插座引脚号 信 号 定 义
1 CH0 20 模拟地
2 CH1 21 模拟地
3 CH2 22 模拟地
4 CH3 23 模拟地
5 CH4 24 模拟地
6 CH5 25 模拟地
7 CH6 26 模拟地
8 CH7 27 模拟地
9 模 拟 地 28 模拟地
10 E.C 29 E.T
11 DI0 30 DI1
12 DI2 31 DI3
13 DO0 32 DO1
14 DO2 33 DO3
15 数字地 34 数字地
16 +5V输出 35 +5V输出
17 +12V输出 36 +12V输出
18 －12V输出 37 －12V输出
19 NC(未使用)
其中：E.T为外触发信号，E.C为外时钟信号。
5.4 跨接插座的用法：
5.4.1 转换码制选择：
KJ1为转换码制选择插座。码制的定义参见5.6节。用户应根据输入信号的极性进行选择，选择方法见图6。
D S D S
a. 单极性原码 b. 双极性偏移码
图6转换码制选择
5.4.2 A/D输入量程选择：
KJ2为A/D输入量程选择插座，输入量程的选择方法见图7。
1 2 1 2
a. ±10V输入 b. ±5V、0～10V输入
图7 A/D输入量程选择
5.4.3 定时触发启动选择：
KJ3用于在定时触发启动方式时，选择8253的定时/计数器输出通道，本卡上的8253定时/计数器中，通道0和通道1已连成级连方式，即通道0的CLK0端接至1MHz时钟上，OUT0端接至通道1的CLK1端，通道0、1、2上的GATE并联接程控信号。通道2 留给用户选用，其定义及连接方法见图8，用户可根据需要选择。
KJ3 KJ3 KJ3 
a. CTC0定时启动 b. CTC1定时启动 c. CTC2定时启动 
图8 定时触发启动选择
5.4.4 触发信号及中断信号方式选择：
KJ4用于选择A/D启动触发信号以及中断信号。使用中应该注意A/D启动触发信号和中断信号都必须是唯一的，不允许同时有多个触发和中断源。KJ4的定义见表7：
表7 KJ4 的定义
功 能 定 义 使 用 选 择
P1：8253通道1输出 
P2：8253通道2输入 
P3：外触发信号8253通道2与通道1级连： P1－P2 
8253通道2连接外部信号源：P2－P3
P4：定时触发中断
P5：定时触发信号 
P6：定时触发启动A/D使用8253定时产生中断： P4－P5 
使用8253定时启动A/D： P5－P6
P7：外触发中断 
P8：外触发信号
P9：外触发启动A/D外触发信号产生中断： P7－P8 
外触发信号启动A/D： P8－P9
P10：A/D转换结束中断 
P11：A/D转换结束信号
P12：NCA/D转换结束后产生中断： P10－P11 
A/D转换结束后不产生中断：P11－P12
5.4.5 中断源选择：
KJ5为中断选择插座。该插座可用来选择IORQ3、4、5、6、7中断源，中断源的选择见图9。
IORQ 3 4 5 6 7 IORQ3 4 5 6 7 IORQ 3 4 5 6 7
a.IRQ3中断 b.IRQ5中断 c.IRQ7中断
图9 中断源的选择
5.5 控制端口地址与有关数据格式：
5.5.1 各个控制端的操作地址与功能见表8：
表8端口地址与功能
端口操作地址 操作命令 功 能
基地址+0 写 写通道代码
基地址+0 读 启动A/D转换
基地址+1 写 写DO数据，写8253程控及中断允许代码
基地址+1 读 读DI数据
基地址+2 读 查询A/D转换状态，读高4位转换结果
基地址+3 读 读低8位转换结果，清除A/D中断标志
基地址+4 读/写 读/写8253计数器0通道数据
基地址+5 读/写 读/写8253计数器1通道数据
基地址+6 读/写 读/写8253计数器2通道数据
基地址+7 写 写入8253控制寄存器控制字
5.5.2 通道代码数据格式见表9：
表9 通道代码数据格式
通道号 通道代码 通道号 通道代码
1 0H 5 4H
2 1H 6 5H
3 2H 7 6H
4 3H 8 7H
5.5.3 8253程控信号及中断申请允许信号的定义及数据格式：
8253程控信号及中断申请允许信号的定义及数据格式见表10：
表108253程控信号及中断申请允许信号的定义及数据格式
端口地址 操作命令 D7D6D5D4 D3 D2 D1 D0 操 作 结 果
基地址+1 写 1XXX
0XXX D0(外通道代码)
D0(外通道代码) 8253 GATE允许8253 GATE禁止
基地址+1 写 X1XX
X0XX D0(外通道代码)
D0(外通道代码) 中断申请允许中断申请禁止
5.5.4 查询A/D转换状态数据格式：
查询A/D转换状态数据格式及意义见表11( 端口地址为基地址+2 ) ：
表11A/D转换状态数据格式 ( X表示任意 )
操作命令 D7 D6 D5 D4 D3 D2 D1 D0 A/D转换状态
读 1 × × × × × × × 正在转换
读 0 × × × × × × × 转换结束
5.5.5A/D转换结果数据格式：
A/D转换结果数据格式见表12：
表12A/D转换结果数据格式
端口地址 操作命令 D7 D6 D5 D4 D3 D2 D1 D0 意 义
初始地址+2 读 0 0 0 0 DB11 DB10 DB9 DB8 高4位数据
初始地址+3 读 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 低8位数据
注：读取低8位数据的另一附加作用是清除A/D转换结束中断标志，在每一个A/D转换程序段开始时，应通过空读低8位数据初始化A/D转换结束中断申请标志。
5.6 模入模出码制以及数据与模拟量的对应关系：
5.6.1 本接口卡在单极性方式工作时，即模入模出的模拟量为0～10V时，转换后的12位数码为二进制原码。此12位数码表示一个正数码，其数码与模拟电压值的对应关系为：
模拟电压值=数码(12位)×10( V )/4096 ( V )
即：1LSB=2.44mV
5.6.2 本接口卡在双极性方式工作时，转换后的12位数码为二进制偏移码。此时12位数码的最高位 ( DB11 ) 为符号位，“0”表示负，“1”表示正。此时数码与模拟电压值的对应关系为：
1. 模入信号为－5V～+5V时：
模拟电压值=数码(12位)×10( V )/4096－5 ( V )
即：1LSB=2.44mV
2. 模入信号为－10V～+10V时：
模拟电压值=数码(12位)×20( V )/4096－10 ( V )
即：1LSB=4.88mV
5.7 定时器定时触发信号的要求及使用说明：
本卡的A/D转换可以由本卡上的8253定时计数器自动定时触发进行，其定时触发脉冲波形及参数要求见图10。
其中：T > 10uS，C.T为定时触发信号，E.T为外触发信号。
图10 定时器脉冲或外触发信号波形图
由于A/D转换时定时触发启动信号的要求，我们推荐8253定时通道选用原则如下：
①当定时间隔小于65.535mS时，应选用一级定时通道来完成。
②当定时间隔大于65.535mS时，可选用两级定时通道串联使用，本卡在设计上已将8253定时/计数器的通道0和通道1接成级连方式，用户只需将KJ3选为2连接启动，并对通道0、通道1进行编程操作即可。
③当定时间隔更大时，如果需要可通过KJ4将通道1与通道2接成级连方式，并将KJ3选为3连接启动，同时对通道0、1、2进行编程操作。另外，在选用定时触发方式前，应根据定时间隔的要求按照上述通道选用原则选择 8253 的定时/计数通道，并将 KJ4设置好，然后参见8253编程要求 ( 说明书3.5.3节 )，对8253进行编程及装入分频系数，同时在适当的时间对8253程控端置位，8253定时通道即会产生启动A/D转换所需的定时负脉冲，A/D转换的状态可以通过查询或进行中断申请操作测知。
5.8 外触发信号E.T的要求：
本卡的模入部分可以在外触发方式下工作。每当E.T有一个低电平时，A/D就启动转换一次。使用该方式时，应注意外信号源E.T信号必须符合TTL电平标准，其波形也可参见图10。
5.9 中断工作方式：
本卡的A/D转换结束信号以及定时触发信号和外触发信号在正确设置 KJ4 跨接选择插座后可以采用中断方式通知 CPU 进行处理。改变KJ5的位置可以选用IRQ3至IRQ7中断。用户在使用中断方式时，应对主机系统的8259中断管理器进行初始化并编制中断处理程序。并在8259中断允许之前，先清除本卡的中断标志。当A/D转换结束或有一个定时触发信号以及有一个外触发信号时，本卡会向 8259 中断管理器发出一个高电平的中断申请，CPU接到中断请求后转向中断处理程序运行读数操作。当读取低8位转换结果时，会自动清除A/D转换中断标志。
5.10 调整与校准：
5.10.1 产品出厂前，本卡的模入部分已按照单极性0～10V 调整好，一般情况下用户不需进行调节，如果用户改变了输入量程或发现误差较大时，可按本节所述方法进行调整。调整时应开机预热 20 分钟以上后进行。
5.10.2 各电位器功能说明：
W1为A/D转换器双极性偏移调节。
W2为A/D转换器满度调节。
5.10.3 模入部分调整：
①A/D转换满度调整：在任一通道接入一接近正满度的电压信号，运行程序对该通道采样。调整W2使A/D转换读数值等于或接近外信号电压。
②A/D转换双极性偏移调整：在单极性方式时，W1可用于零点辅助调整。在双极性方式时，如果误差较大，可在外端口分别加上正负电压信号，调整W1使其对称。
驱动程序简介
PC-6000 系列演示程序及驱动程序是为PC-6000 系列多功能工控采集板配制的工作在中西文Windows 95/ 98/ NT环境下的一组驱动程序以及使用该驱动程序组建的一个演示程序，可以方便地使用户在中西文 Windows 环境下检测硬件的工作状态以及帮助软件开发人员在常用的 C\C++,Visual Basic,Delphi,Borland C++ Builder,Borland Pascal for windows 等开发环境中使用 PC-6000 系列工控采集板进行数据采集和过程控制等工作.驱动程序是一个标准动态链接库 (DLL文件)。它的输出函数可以被其它应用程序在运行时直接调用。用户的应用程序可以用任何一种可以使用 DLL 链接库的编程工具来编写。每种板卡依据其自身功能的不同具有不同的输出函数和参数定义。
驱动程序输出函数定义∶
所列函数的说明格式为 VC++6.0环境下PC6000.Dll库函数的原函数格式，无论使用哪一种开发工具，务必请注意数据格式的匹配及函数的返回类型，本说明中所使用的数据类型定义如下：
short ～16位带符号数
模拟量输入部分∶
* 函数：short APIENTRY AI6360Single(short nAdd,short nCha,short AIMode)
功能：非级联时，进行某一通道的模拟量数据采集(程序启动A/D方式)。
参数：nAdd 基地址
nCha 通道号：0 - 7
AIMode 输入方式：0 -- 原码值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
* 函数： short APIENTRY AI6360SingleLink(short nAdd,short nCha,short nCH,short AIMode)
功能： 进行级联时，某一级联板中某一通道的模拟量数据采集(程序启动A/D方式)。
参数： nAdd 基地址
nCha 级联板：0 - 7
nCH 选定级联板的通道号：0-15
AIMode 输入方式：0 -- 原码值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
* 函数： void APIENTRY AI6360AllLink(short nAdd,short nCha,short AIMode,short *p)
功能：采用级联方式时，某一级联板全部16通道的模拟量数据采集(程序启动A/D方式)。
参数：nAdd 基地址
nCha 级联板：0 - 7
AIMode 输入方式：0 -- 原码值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
p 指向16个通道的采集结果的起始地址
* 函数： void APIENTRY AI6360TimerAD0(short nAdd,short nCha,long nValue)
功能： 非级联时，用8253定时器的0通道定时启动某一通道，启动A/D转换的时间间隔在0-65.535ms(定时
启动A/D方式)。
参数： nAdd 基地址
nCha 通道号：0 – 7
nValue 8253定时器0通道预装入值(0-65535)。
注意： 8253定时器0通道的CLK端接至内部时钟(1MHz)。
* 函数： void APIENTRY AI6360TimerAD1(short nAdd,short nCha,long nValue0,long nValue1)
功能： 非级联时，用8253定时器的0,1通道进行级连后定时启动某一通道，启动A/D的时间间隔可大于 
65.535(ms)。
参数： nAdd 基地址
nCha 通道号：0 – 7
nValue08253定时器0通道预装入值(0-65535)。
nValue18253定时器1通道预装入值(0-65535)。
注意： 板卡将8253定时器0通道与1通道进行级连，8253定时器0通道的CLK
端接至内部时钟(1MHz)，0通道的OUT端接至1通道的CLK端。
说明：启动A/D的时间间隔的计算公式：
Q=1MHz / 定时器0通道分频值N / 定时器1通道分频值M
(其中N尽量小，太大会影响时间间隔精度，但最小不能为1)。
时间间隔和编程参数推荐表
时间间隔Q 定时器0通道分频值N 定时器1通道分频值M
100uS 0002H(2) 0032H(50)
1mS 0002H(2) 01F4H(500)
10mS 0002H(2) 1388H(5000)
100mS 0002H(2) C350H(50000)
1S 0014H(20) C350H(50000)
* 函数： void APIENTRY AI6360TimerAD2(short nAdd,short nCha,long nValue)
功能： 非级联时，用8253定时器的2通道定时启动某一通道，启动A/D转换的时间间隔由外部信号确定(定时
启动A/D方式)。
参数： nAdd 基地址
nCha 通道号：0 – 7
nValue 8253定时器2通道预装入值(0-65535)。
注意： 8253定时器2通道接外部信号。
* 函数： short APIENTRY AI6360TimerRead(short nAdd,short AIMode)
功能： 非级联时，进行某一通道的模拟量数据的读取(定时启动A/D方式)。
参数： nAdd 基地址
AIMode 输入方式： 0 -- 原码值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
注意： 若返回值为0，则由基地址错误或A/D未转换完造成。
数字量输入输出部分∶
* 函数： unsigned char APIENTRY DI6360Bit(short nAdd,short nBit)
功能： 采集某一位数字量输入信号的状态。
参数： nAdd 基地址
nBit 通道号：0-3
* 函数： unsigned char APIENTRY DI6360All(short nAdd)
功能： 采集全部通道(4路) 数字量输入信号的状态。
参数: nAdd 基地址
返回： 返回值为4个输入信号的状态。
* 函数： void APIENTRY DO6360Bit(short nAdd,short nBit,unsigned char nState)
功能： 进行某一个通道的数字量数据输出操作。
参数： nAdd 基地址。
nBit 通道号：0-3
nState1 表示将输出高电平，0 表示将输出低电平。
返回： 无返回值
* 函数： void APIENTRY DO6360All(short nAdd,unsigned char nGroup)
功能： 同时进行所有4个通道的数字量数据输出操作。
参数： nAdd 基地址
nGroup各位输出状态，nGroup的D0代表Bit0,D3代表Bit3。
返回： 无返回值
计数定时部分：
* 函数： void APIENTRY CT6360Start(short nAdd,long nPreLoad)
功能： 初始化PC6360，设置8253计数器芯片第2通道的工作模式及寄存器预装值。
参数： nAdd 基地址
nPreLoad 16位寄存器预装入值(0-65535)
返回： 无返回值
说明： 此函数将寄存器预装值装入寄存器中，此时计数器是否开始计数，还取决于 Gate 端的状态，通道2工
作于方式2。
* 函数： unsigned long APIENTRY CT6360Read(short nAdd)
功能： 此函数读取8253计数器的寄存器值。
参数： nAdd 基地址
返回： 返回寄存器的当前值。
说明： 此函数不影响计数器的继续计数工作。
注：如有需要使用 Windows 系列及 LabVIEW 驱动程序的用户可向该公司索取，请注明所使用的操作系统和开发软件。
编程举例
7.1 对通道0连续采样100次，程序启动和查询。本程序可用于A/D部分调校。（BASIC语言程序）
10 CLS ；清屏
20 ADD=&H300 ；板基地址设为0300H
30 B=INP(ADD+3) ；空读低8位，清除转换状态及中断标志
40 CH=0 ；对通道0采样
50 OUT (ADD),CH ；送通道代码
60 FORN=0TO100:NEXT ；延时，延时常数由机型决定
70 FORJ=1 TO100 ；设采样次数
80 A=INP(ADD) ；启动A/D，读出数值无关
90 IF INP(ADD+2)>=128THEN 90 ；查询A/D转换状态
100 H=INP(ADD+2) ；转换结束，读高4位结果
110 L=INP(ADD+3) ；读低8位结果
120 V=(H*256+L)×10000/4096 ；将结果转换为十进制数据
130 PRINTH,L,V；“mV” ；显示结果，用“mV”表示
140 NEXTJ ；循环100次
150 END
注：如果是双极性信号，则120句改为：
V= ( H×256+L ) ×10000/4096－5000
7.2 要求同7.1（C语言程序）：
#include "stdio.h" 
#include "dos.h" 
#include "conio.h" 
main()
{
int ch; /* 定义通道变量 */
float value[100]; /* 定义数组变量 */
int dl,dh,i,j,base; /* 定义过程变量 */
clrscr(); /* 清屏 */
base=0x100; /* 设板基地址=100H */
dl=inportb(base+3); /* 空读低8位，清除转换状态及中断标志
outportb(base+1,0); /* 置外通道为零 */
printf("Input channle number:"); /* 输入通道号 */
scanf("%d",&ch);
outportb(base,ch); /* 送通道代码 */
for(j=0;j<100;j++){ /* 设采样次数 */
for(i=0;i<10;i++); /* 延时，常数由机型决定 */
dl=inportb(base); /* 启动A/D，读出数 
/* 值无关 */
do{ /* 查询A/D转换状态 */
;
}while(inportb(base+2)>=128);
dh=inportb(base+2); /* 结束，读高4位结果*/
dl=inportb(base+3); /* 读低8位结果 */
value[j]=(dh*256+dl)*10.0/4096.0; /* 将结果转换为十进制数据 */
}
for(j=0;j<100;j++) /* 显示结果 */
printf("%f ",value[j]);
}
7.3 用通道0定时触发启动，定时间隔约为10mS，程序查询取数，采样1000组。（BASIC语言程序）
10 CLS ；清屏
20 ADD=&H300 ；设板基地址为0300H
30 DIMA1(1000) ；定义数组长度 
40 OUT (ADD+&H7),&H35 ；设8253通道0工作于方式2，十进位BCD计数
50 OUT (ADD+&H4),5 ；通道0分频系数为5
60 OUT (ADD+&H4),0 
70 OUT (ADD+&H7),&H75 ；设8253通道1工作于
80 OUT (ADD+&H5),00 ；方式2，十进位BCD计数
90 OUT (ADD+&H5),&H20 ；定时间隔为10mS
100 B=INP(ADD+3) ；空读低8位，清除转换状态及中断标志 
110 OUT(ADD+0),0 ；送通道代码
120 OUT(ADD+1),&H80 ；8253 GATE允许
130 FORT=1 TO1000 ；定义循环次数
135 IF INP(ADD+2)<128 THEN 135 ；等待启动信号
140 IF INP(ADD+2)>=128THEN140 ；等待转换结束
150 H=INP(ADD+2) ；取高4位结果
160 L=INP(ADD+3) ；取低8位结果
170 A1(T)=(H*256+L)*10000/4096-5000 ；处理后存入数组
180 NEXTT ；循环
190 OUT(ADD+1),0 ；关闭8253 GATE
.......... ；转数据处理
7.4 循环采集8个通道，程序启动和查询。（C语言程序）
#include "stdio.h"
#include "dos.h"
#include "conio.h"
main()
{
int ch; /* 定义通道变量*/
float value[8]; /* 定义数组变量*/
int dl,dh,i,base; /* 定义过程变量 */
clrscr(); /* 清屏 */
base=0x100; /* 设板基地址=100H */
dl=inportb(base+3); /* 空读低8位，清除转换状态及中断标志 */
outportb(base+1,0); /* 置外通道为零 */ 
for(ch=0;ch<=7;ch++){ /* 定义循环通道数 */
outportb(base,ch); /* 送通道代码 */
for(i=0;i<10;i++); /* 延时，常数由机型决定 */
dl=inportb(base); /* 启动A/D，读出数值无关 */
do{ /* 查询A/D转换状态 */
; 
}while(inportb(base+2)>=128);
dh=inportb(base+2);/* 转换结束，
/* 读高4位结果*/
dl=inportb(base+3);/* 读低8位结果 */
value[ch]=(dh*256+dl)*10.0/4096.0;/* 将结果转换为十进制数据 */
} /* 下一个通道 */
for(ch=0;ch<=7;ch++) /* 显示结果 */
printf("%f \n",value[ch]);
}
7.5 外接PS-010前端信号处理板，对PS-010板上16通道扫描一次，PS-010输出信号接本卡通道0，双极性信号。（BASIC语言程序）
10 CLS ；清屏
20 ADD=&H280 ；板基地址设为0280H
30 FORN=0TO15 ；对PS-010通道0～15扫描
40 OUT(ADD+0),0 ；本卡对通道1采样
50 OUT(ADD+1),N ；送PS-010通道号
60 FORT=0TO100:NEXT ；延时，延时常数由PS-010放大增益决定
70 A=INP(ADD+0) ；启动A/D转换
80 IF INP(ADD+2)>=128 THEN 80 ；等待转换结束
90 H=INP(ADD+2) ；读取高4位结果
100 L=INP(ADD+3) ；读取低8位结果
110 V=(H*256+L)*1000/4096-5000 
120 PRINT"ECH="N,V"mV" ；打印显示
130 NEXTN ；循环
140 END ；结束
7.6 读写数字量：（BASIC语言程序）
10 CLS ；清屏
20 ADD=&H300 ；板基地址设为0300H
30 DO=XX ；设数据输出为XX
40 OUT(ADD+1),DO ；写出并锁存
50 DI=INP(ADD+1) ；读入数字量状态
60 PRINTDI ；显示
70 END
7．7 在 Windows 95/98环境下，使用 MicroSoft Visual Basic 6.0 开发环境，采取调用驱动程序的输出函数的方法定时循环采集多个 A/D通道，并对 D/A、数字I/O进行操作和计数器进行操作。
注意： 在VB 6.0 中，数据类型 Integer 为 16 位带符号整数，Long 为32 位带符号整数。
首先创建一个窗口，名为 Form。设置一个定时器，名为Timer1。一个Label,一个Text1,一个Text3。
'模入部分
Private Declare Function AI6360Single Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal AIMode As Integer) As Integer
Private Declare Function AI6360SingleLink Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal nCH As Integer,ByVal AIMode As Integer) As Integer
Private Declare Sub AI6360AllLink Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal AIMode As Integer,ByRef p As Integer)
Private Declare Sub AI6360TimerAD0 Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal nValue As Long)
Private Declare Sub AI6360TimerAD1 Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal nValue0 As Long,ByVal nValue1 As Long)
Private Declare Sub AI6360TimerAD2 Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nCha As Integer,ByVal nValue As Long)
Private Declare Function AI6360TimerRead Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal AIMode As Integer) As Integer
'数字量
Private Declare Function DI6360Bit Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nBit As Integer) As Byte
Private Declare Function DI6360All Lib "pc6000.dll" (ByVal nAdd As Integer) As Byte
Private Declare Sub DO6360Bit Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nBit As Integer,ByVal nState As Byte)
Private Declare Sub DO6360All Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nGroup As Byte)
'计数器
Private Declare Sub CT6360Start Lib "pc6000.dll" (ByVal nAdd As Integer,ByVal nPreLoad As Long)
Private Declare Function CT6360Read Lib "pc6000.dll" (ByVal nAdd As Integer) As Long
Private Sub Form_Load()
Call CT6360Start(256,65535)
End Sub
Private Sub Timer1_Timer()
'单通道采集第0通道
Text1 = AI6360Single(256,0,1)
'I/O输出
Call DO6360All(256,DoOutValue)
If DoOutValue = 0 Then
AoOutValue = 255
Else
AoOutValue = 0 '改变数字量输出状态.
End If
'I/O输入
Text3 = DI6360All(256)
'计数器计数
Label = CT6360Read(256)
End Sub
附名词注释
单端输入方式各路输入信号共用一个参考电位，即各路输入信号共地，这是最常用的接线方式。使用单端输入方式时，地线比较稳定，抗干扰能力较强，建议用户尽可能使用此种方式。双端输入方式各路输入信号各自使用自己的参考电位，即各路输入信号不共地。如果输入信号来自不同的信号源，而这些信号源的参考电位(地线)略有差异，可考虑使用这种接线方式。使用双端输入方式时，输入信号易受干扰，
所以，应加强信号线的抗干扰处理，同时还应确保模拟地以及外接仪器机壳接地良好。而且特别注意的是，所有接入的信号，不论是高电位还是低电位，其电平相对于模拟地电位应不超过 +12V 及 -5V,以避免电压过高造成器件损坏。单极性信号输入信号相对于模拟地电位来讲，只偏向一侧，如输入电压为0～10v.双极性信号输入信号相对于模拟地电位来讲，可高可低，如输入电压为-5V ～+5V.码制模拟量信号转换为数字量后，形成一组由 0 开始的连续数字，每一个数字对应着一个特定的模拟量值，这种对应关系称为编码方法或码制。依据输入信号的不同分为单极性原码与双极性偏移码。单极性输入信号对应着单极性原码，双极性信号对应着双极性偏移码.单极性原码以 12 位A/D 为例，输入单极性信号 0～10V。转换后得到 0 ～ 4095 的数字量，数字量 0 对应的模拟量为 0V，数字量 4095 对应的模拟量为 10V，这种编码方法称为单极性原码，其数字量值与模拟电压值的对应关系可描述为：
模拟电压值=数码(12位)×10(V)/4096 ( V )
即：1LSB（1个数码位）=2.44mV双极性偏移码以 12 位A/D 为例，输入双极性信号 -5～+5V。转换后得到 0 ～ 4095 的数字量，数字量 0 对应的模拟量为 -5V，数字量 4095 对应的模拟量为 +5V，这种编码方法称为双极性偏移码，其数字量值与模拟电压值的对应关系可描述为：
模拟电压值=数码(12位)×10(V)/4096－5 ( V )
即：1LSB（1个数码位）=2.44mV
此时12位数码的最高位(DB11)为符号位，此位为0表示负，1表示正。偏移码与补码仅在符号位上定义不同，如果反向运算，可以先求出补码再将符号位取反就可得到偏移码。A/D转换速率表明A/D转换芯片的工作速度。如对 BB774 来讲，完成一次转换所需要的时间是 10 微秒，则它的转换速率为100 KHz。通过率指 A/D 采集卡对某一路信号连续采集时的最高采集速率。初始地址使用板卡时，需要对卡上的一组寄存器进行操作，这组寄存器占用数个连续的地址，一般将其中最低的地址值定为此卡的初始地址，这个地址值需要使用卡上的拨码开关来设置。