学习单片机之初,我们最先遇到的问题往往是不知道怎样把程序生成hex文件。常用的Keil demo版使用起来设置比较复杂,并且有2K代码的限制。笔者向大家介绍一款dais开发环境软件。该软件为全中文界面,可以实现编译、 硬件仿真、 软件仿真一体化,并且程序支持汇编/C混合调试,中文注释,全兼容于Windows 98/2000/XP操作系统。经过笔者一段时间的使用,深感使用简易,值得向广大初学单片机的朋友推荐。DAIS的软件仿真功能强大,初学者利用它来进行编译软件生成hex文件学习和软件仿真,修改一些小程序很实用。
下载DAIS后,点击安装目录下的SETUP, 一路回车, 即可安装成功,在桌面上生成图标如图1所示。

双击运行,出现连接对话框(见图2),此时若已连接仿真器,点击“确定”即可。该仿真器默认的波特率为9600,串口号则根据计算机的实际情况选择。一般情况下是串口1。

在这里需要注意的是,没有仿真器的情况下,点击“取消”,我们可以利用该软件编译生成HEX文件,并进行软件仿真。本文主要介绍它的软件仿真和编译功能。
编译功能
打开软件后,点新建文件,在窗口中输入源程序,然后把该程序另存为后缀名为ASM的文件。假定我们把它存为E:\PROG\999.ASM,如果E盘没有PROG目录,应首先建立一个,也可以把它存在C盘或者D盘。汇编是底层操作,需要注意的是,不要使用中文的文件夹,更不能把文件名取为中文名字。例如你把文件存在D:\程序\流水灯.ASM就不行。同时文件的名称不要超过8个英文字符。另外也不要把系统的盘符设置为“系统盘”、“软件盘”、“游戏盘”之类的中文盘符。
点击“保存”后,再点菜单的工程“新建”。在这里, 我们仍然把工程的名称取为999。这时将弹出工程的对话框,如图3所示,此时它是一个新的工程,我们需要为它增加一个项目文件, 即刚刚保存的999.ASM,点击“增加”后再点击 “确定”即可。

好了, 准备工作完成了,点击菜单/编译/文件编译/连接/装载,或者点击图4上方图标中的红色感叹号,如没有异常,将出现图4下方所示的对话框。这里需要补充一点,汇编语言对语法要求比较严格,如果编译不成功,请仔细检查程序本身有没有语法错误。当然这种情况下,dais会提示你,是第几行出现错误。 此时在我们的E:\PROG目录下即生成了图5所示的8个文件,其中的999.ASM是汇编的源程序, 999.HEX就是我们所需要的目标代码。我们可以用编程器将这个文件写进单片机中,程序就可以运行了。


仿真功能
如果以上操作中已经连接了DAIS-8052M仿真器,把仿真头插入目标板,直接点图标栏目的绿色小箭头,即可连续运行。其他单步运行、 复位、寄存器窗口、储存器窗口等大家自己体会一下。
现在笔者介绍在没有仿真器的情况下,如何完成51单片机的部分仿真工作。对于初学者来说, 用该功能来熟悉8051单片机的指令系统非常直观,比如用来学习单片机的加减法。
以下面的一个简单的小例子“25H+36H” 来说明该功能。
我们可以首先输入下面的程序:
MOV R0,#25H;将立即数25送寄
存器R0
MOV A,#36H;将立即数36送累加
ADD A,R0;a与r0相加
NOP;空操作
MOV P1,A;将累加器A的值送P1
口
END;结束
把程序按照前面介绍的方法编译,打开视图\寄存器窗口并单步运行,可以直观地看到ACC、P1、R0三个寄存器在执行每一步之后的变化,最后的结果如图6所示。
我们可以看到ACC的值为5BH,这个就是25H+36H的结果了。P1口的值也是5BH,这是MOV P1,A(把A送往P1口)的结果。 同时我们也可以观察到R0的值是25H,这是由于程序中我们把25H送入R0 的结果。
同样,我们来实验单片机的减法指令,计算“36H-25H”的值。把上面的程序第3行改为“SUBB A,R0”,其余的部分相同,编译后打开寄存器窗口并单步运行,可以观察到P1口和ACC的值都变成了11H ,这就是36H-25H 的值了,见图7。
参照以上方法我们可以利用这个软件来熟悉8051单片机的其他指令, 体会各个寄存器之间的变化,这对于初学单片机的朋友很有帮助。
当然,dais仿真器本身还有很多非常实用的功能, 请读者自己去体会。对DAIS软件感兴趣的朋友可以到www.8951.com下载。
文/石学军