程序编译通过后,只是说明源程序没有语法错误,至于源程序中存在的其他错误,往往还需要通过反复的仿真调试才能发现。仿真即是对目标样机进行排错、调试和检查,一般分为硬件仿真和软件仿真两种。仿真调试完成后,如果无误,就可以将程序下载到单片机中进行实际运行。
对源程序进行仿真与下载,需要借助相关软件,这里仍选用IAR AVR软件。下面主要介绍软件仿真,硬件仿真不作介绍。
在IAR AVR软件中,内建了一个仿真CPU,可用来模拟执行程序。该仿真CPU功能强大,可以在没有用户目标板和硬件仿真器的情况下进行程序的模拟调试,这就是软件仿真。
软件仿真不需要硬件,简单易行。不过,软件仿真毕竟只是模拟,与真实的硬件执行程序还是有区别的,其中最明显的就是时序。软件仿真是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。
如果没有制作实验板,也没有仿真芯片或仿真器,可以采用软件仿真的方法进行模拟,具体方法如下:
① 选择主菜单栏中的Project,在下拉菜单中选择Debug,如图 2-46 所示。
② 选择Debug后,可进入软件模拟仿真界面,如图 2-47 所示。
③ 选择View→Register后,出现如图 2-48 所示的界面。
图 2-46 选择Debug
图 2-47 进入调试状态
图 2-48 选择Register出现的界面
④ 在图 2-48 右侧Register工作区中,单击CPU Register旁的箭头,下拉菜单中选择PORTA。将PORTA、DDRA、PINA展开,如图 2-49 所示。
图 2-49 选择A端口
⑤ 此时,使用Step Over逐过程方式进行调试(快捷键为F10),如图 2-50 所示。
图 2-50 选择Step Over或按F10 键
⑥ 按下F10 键后,可发现PORTA口的各寄存器会发生变化,DDRB全部为OxFF,说明方向寄存器的设置为输出方式。而随着继续按动F10,PORTA0~PORTA7 将有一个为低电平,并不断循环。说明PORTA外接的 8 只LED灯会逐个点亮或熄灭,模拟流水灯流动的情况。如图 2-51 所示。
图 2-51 模拟流水灯
仿真调试通过后,选择Debug,Stop Debugging退出仿真界面。