NAT9914芯片开始工作之前需要对其进行初始化,这部分代码作为主程序中初始化程序的一部分运行,包括设置ICR寄存器、选择时钟信号频率、设置GPIB延迟时问T1、定义通信结束字符EOS、设置GPIB设备地址(规定地址必须在O~30之间,如果写入更大的地址。则设备仍看作30)。初始化完成后将NAT9914接通GPIB总线。初始化流程如图2所示。
GPIB控制部分的代码以中断方式运行,当NAT9914触发89C51芯片的外部中断时,单片机中止正常工作,将现场数据压入堆栈保护,并调用外部中断处理函数,响应NAT9914芯片的中断申请,其中断处理程序流程如图3所示。引起NAT9914向单片机发出中断信号的事件主要有四种:发送数据事件、接收数据事件、接收GET命令事件和接收DCAS命令事件。中断频繁时会影响主程序运行效率,但考虑到所设计的转换器功能单一,主程序基本处于空转状态,四种事件的处理都在中断程序中完成,因此,对主程序运行影响不大。GPIB接收数据和发送数据流程如图4和图5所示。
每次GPIB接口数据接收中,NAT9914接收到第一个字节数据后,即置位寄存器ISR0中的BI位。触发单片机外部中断,单片机进入外部中断处理程序后,读取ISR0寄存器,判断NAT9914触发中断的原因是接收数据事件后,调用接收数据子程序的执行,开始接收来自GPIB仪器的数据。
在主程序中,NAT9914发送完第一个字节数据后.即置位寄存器ISR0中的BO位,触发单片机外部中断。单片机进入外部中断处理程序后,根据BO位判断事件类型为发送数据事件,则调用GPIB数据发送程序,将缓冲区中剩余的数据依次发送到GPIB总线上。
3 运行情况及结果
本文设计的RS232一GPIB控制器已成功用于计算机和泰克TDS210型示波器的GPIB总线连接中。图6是计算机超级终端显示界面的部分截图,其中COMMAND:》为计算机键盘SCPI命令输入提示符,GPIB:》为GPIB连接设备的反馈信息输出提示符,表示后面的信息来自GPIB设备(即泰克TDS210型示波器)。
首先输入的是查询命令.该类命令以‘?’结尾,当示波器收到查询命令后,会立即反馈相关查询信息。ID?命令,查询该示波器的品牌和型号信息,示波器回复相关信息显示在超级终端上;CH1?命令,查询示波器l号通道的设置信息;DATA?命令,查询示波器当前使用通道信息以及采样点数等信息。