在对话框消息函数中处理Socket接收信息的地方添加代码(Socket例程中是在此处处理接收数据的)。按自定义协议将接收到的
仿真设备的数据存入相应的缓存,或对I2C器件的输出引脚进行操作。SPeriiDLL修改后的对话框如图4所示。

(4)用VB编制仿真软件
从www.zlgmcu.com下载ZLG7290的例程和数据手册。选择一个VB(Visual Basic)的点到点的Socket聊天程序进行修改。增加一个“Form”,并在上面添加ZLG7290要用到的8个数码管控件(自制)、64个按钮控件和1个定时器,如图5所示。建立ZLG7290程序模块,自定义一个ZLG7290的数据类型,并用此类型定义数据变量Reg7290用于保存数据。

修改Socket控件的DataArrival事件的代码。当接收的数据为ZLG7290的地址时,数据交由ZLG7290程序模块处理。数据处理部分根据ZLG7290数据手册和通信协议编写,如果是向某地址写数据,则写到Reg7290的相应位置;如果写到命令地址,则直即执行相应动作程序。
对按键事件进行处理,根据接键保存相应值到Reg7290的按键寄存器,并通过Socket发出按键数据和按键中断输出引脚动作。

在定时器事件中调用刷新数
码管数据的程序。仿真软件的Socket部分显示窗如图6所示。
(5)仿真
按照AGSI的说明文件apnt_154.pdf设置Keil C51调试器,调试器打开ZLG7290例程和I2C接口;运行VB下编制的仿真软件;用Socket连接;全速运行ZLG7290例程。数码管显示如图5所示。
运行时,ZLG7290的例程中不停地向I2C总线查询按键和发送显示数据。在这样的情况下,仿真软件各项仿真功能工作正常,表明这种仿真方法是可行的。
(6)说明
在实例中只有一种接口,如果接口种类增加,则只需在VB仿真软件端增加Socket控件。如果不想用VB开发仿真软件,那么也可以选择其他语言。
5 结论
实践证明,本文的仿真方法是可行的,但需要单片机调试器提供软件接口。如果各种单片机调试器都有接口,那么仿真部件就可以得到充分利用。