基于Proteus的AVR单片机C语言程序设计与仿真
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 AVR Studio集成开发软件的使用

AVR Studio是Atmel AVR系列的软件仿真器,它由Atmel公司开发并免费提供给用户,用户可以在Atmel公司的官方网络(http://www.atmel.Com)上自由下载。下面以CodeVisionAVR中已经创建的“新建项目”为例,讲述源程序在AVR Studio中的调试与仿真等内容。

1.AVR Studio软件的安装

AVR Studio软件的安装可按以下步骤进行。

(1)双击安装文件setup.exe文件,将弹出如图1-42所示的欢迎信息框,单击“Next”按钮继续。

图1-42 欢迎信息框

(2)在弹出的软件授权许可界面中选择“I accept the terms of the license agreement”(我接收许可协议的条款),然后再单击“Next”按钮,如图1-43所示。

图1-43 授权许可

(3)在弹出的对话框中(如图1-44所示),单击“Change”按钮以更改安装路径或直接单击“Next”按钮按照默认路径进行安装,直到安装结束为止。

图1-44 选择安装路径

2.将CodeVisionAVR中的源程序导入AVR Studio中

在CodeVisionAVR中将源程序编译好后,若想将源程序导入AVR Studio中,需要按以下步骤进行相关操作。

(1)在CodeVisionAVR IDE中,执行菜单命令“Tools”→“Debugger”或单击工具栏上的图标,将出现如图1-45所示的欢迎对话框。

图1-45 欢迎对话框

在图1-45中,若单击“New Project”按钮,将创建Atmel AVR Assembler(汇编语言)或AVR GCC(C/C++语言)项目。单击“Open”按钮,则可打开已存在的项目。

(2)在图1-45中单击“Open”按钮,将弹出“Open Project or Object File”对话框,在此对话框的查找范围栏中找到在CodeVisionAVR中已创建并需要打开的项目,如图1-46所示。

图1-46 打开在CodeVisionAVR中已创建的项目

(3)找到项目后,在图1-46中单击“打开”按钮,将弹出“Save AVR Studio Project File”对话框,询问用户在AVR Studio中保存项目的名称。用户可以更改项目名,也可直接单击“保存”按钮以使用默认的项目名。

(4)在“Save AVR Studio Project File”对话框,单击“保存”按钮后,将弹出如图1-47所示的对话框。在此对话框中选择AVR Simulator和ATmega16。这一步主要是为调试程序用的,也可以暂时不选,等到调试程序时,再通过Debug菜单下的AVR Simulator Options命令来选择。选择完毕后,单击“Finish”按钮,将进入AVR Studio集成工作环境界面。

图1-47 调试平台和器件选择对话框

3.AVR Studio编辑环境及仿真参数的设置

1)AVR Studio的编辑环境 AVR Studio集成工作环境界面如图1-48所示,它包括菜单栏、工具栏、工作台窗口、源程序编辑窗口、I/O观察窗口、信息窗口和系统状态条等部分。

图1-48 AVR Studio集成工作环境界面

AVR Studio的菜单栏与标准的Windows程序中的菜单栏基本相同,包括File(文件)、Project(项目)、Build(编译)、Edit(编辑)、View(视图)、Tools(工具)、Debug(调试)、Window(窗口)和Help(帮助)这几个部分。

AVR Studio的工具栏存储了一些常用命令,如新建、打开、断点设置等。

AVR Studio的工作台窗口用于显示项目文件信息。

AVR Studio的源程序编辑窗口用于编辑源代码,对于某些编程高手而言,在此也可以嵌入汇编源代码。

AVR Studio的I/O观察窗口用于查看各个I/O寄存器的值、I/O状态信息等。

AVR Studio的信息窗口用于显示一些状态信息。

AVR Studio的系统状态条用于显示AVR Studio软件工作的模式,如选用了ATmega16芯片在仿真模式下工作,这些信息就会在系统状态中显示出来。

2)AVR Studio仿真参数的设置在进行仿真前,有可能还需要进行相关参数的设置,如更改AVR单片机型号、更改单片机的晶振频率等。在AVR Studio中执行菜单命令“Debug”→“AVR Simulator Options”,将弹出“Simulator Options”对话框。

“Simulator Options”对话框中有两个选项卡:Device selection和Stimuli and logging。

Device selection选项卡如图1-49所示,在Device下拉列表中,用户可选择所需的单片机型号,在此选择ATmega16;在Frequency下拉列表中可选择AVR单片机使用的晶振频率,在此选择8MHz;在Boot loader中可引导加载程序的设置,选中Enable Boot reset复选框时表示允许启动复位,在其下拉列表中可选择启动复位地址。

图1-49 芯片参数的设置

Stimuli and logging选项卡如图1-50所示,在此可设置外部激励或者记录端口的相关信息。在Port下拉列表中可选择外部激励端口或记录端口;在Function中可选择外部激励端口(Stimuli)或选择记录端口(Logging)。

图1-50 激活/记录端口的设置

设置为外部激励(Stimuli)时,必须是该端口为输入状态时有效,且还需指出激励文件位置,即在File中打开激励文件。激励文件中的值将在指定的周期被放在指定端口的PIN寄存器中,激励文件的格式与端口记录格式相同。

设置为记录端口(Logging)时,必须是该端口为输出状态时有效,且还需在File中选择一个文件用于放置记录数据。文件中的内容是端口寄存器的内容。如果一个周期中端口寄存器的内容没有改变,就没有输出产生。记录文件在每次程序复位时被删除,在每次程序装入AVR Studio时,记录都将被人工激活。

4.使用AVR Studio进行程序的调试及软件的仿真

在AVR Studio中进行模拟仿真时,其调试算法、程序流程等方面与硬件仿真机没有多大区别。对于I/O端口、定时器、UART、中断响应等,在AVR Studio中也可进行模块仿真。但是由于硬件仿真机没有提供程序运行时间等方面的参数调试,所以AVR Studio在调试程序、计算一段程序运行所花的时间等方面比硬件仿真更加方便。

1)程序的调试在AVR Studio的Debug调试菜单栏中可选择开始调试、停止调试、运行、暂停、复位、设置断点、单步执行等操作。

(1)开始调试(Start Debugging):若源程序在CodeVisionAVR IDE中,通过执行菜单命令“Tools”→“Debugger”将其导入到AVR Studio,那么在AVR Studio中的程序将处于开始调试状态。

如果源程序是在AVR Studio中直接编写的,那么在AVR Studio中先执行菜单命令“Build”将其编译,若编译程序没有错误,再执行菜单命令“Debug”→“Start Debugging”或在工具栏中单击图标,还可以按快捷键Ctrl+Shift+Alt+F5,此时源程序进入开始调试状态。

在开始调试状态下,将连接调试平台,装载目标文件并执行复位操作,而所有的调试控制命令处于有效状态。通常,在调试模式下不能编辑程序。

(2)停止调试(Stop Debugging):如果源程序进入了调试状态时,在AVR Studio中执行菜单命令“Debug”→“Stop Debugging”或在工具栏中单击图标,还可以按快捷键Ctrl+Shift+F5,将停止调试过程,并断开与调试平台的连接,进入源程序的编辑模式。

(3)运行(RUN):如果源程序进入了调试状态时,在AVR Studio中执行菜单命令“Debug”→“RUN”或在工具栏中单击图标,还可以按快捷键F5,将启动(或重新启动)程序,使源程序一直运行到被用户停止或遇到一个断点为止。

(4)暂停(Break):如果源程序进入了调试运行状态时,在AVR Studio中执行菜单命令“Debug”→“Break”或在工具栏中单击图标,还可以按快捷键Ctrl+F5,将停止程序的运行。当源程序停止时,所有窗口中的信息都将更新。

(5)复位(Reset):如果源程序进入了调试状态时,在AVR Studio中执行菜单命令“Debug”→“Reset”或在工具栏中单击图标,还可以按快捷键Shift+F5,将使源程序复位。当程序正在运行时,执行此命令则程序停止运行。

(6)设置断点(Toggle Breakpoint):如果源程序进入了调试状态时,在代码前可以设置断点。首先在需要设置断点的代码前单击鼠标,然后执行菜单命令“Debug”→“Toggle Breakpoint”或在工具栏中单击图标,还可以按快捷键F9,由此就可将该行源代码设置为断点。

(7)单步执行(Step Into):单步执行仅执行一条指令。如果源程序进入了调试状态时,在AVR Studio中执行菜单命令“Debug”→“Step Into”或在工具栏中单击图标,还可以按快捷键F11,源程序的一条指令会被执行。

(8)单步运行到断点(Step Over):单步运行到断点仅执行一条指令,但是如果这条指令包含或调用了一个函数/子程序时,则该函数/子程序也会同时执行。如果在过程中遇到用户设置的断点,则程序运行将被挂起。如果源程序进入调试状态时,在AVR Studio中执行菜单命令“Debug”→“Step Over”或在工具栏中单击图标,还可以按快捷键F10,源程序的一条指令会被执行。

(9)跳出(Step Out):跳出命令会使程序一直运行,直到当前函数结束为止。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数),执行菜单命令“Debug”→“Step Out”或在工具栏中单击图标,或按快捷键Shift+F11时,程序将继续运行,直到遇到一个断点或被用户停止为止。

(10)运行到光标处(Run To Cursor):如果源程序进入了调试状态时,在AVR Studio中执行菜单命令“Debug”→“Run To Cursor”或在工具栏中单击图标,或按下快捷键Ctrl+F10时,将使程序运行到源代码编辑窗口中光标处停止。此时如果遇到用户的断点,程序的运行将不会被挂起。如果程序运行永远达不到光标指示处的语句,程序将一直继续运行,直到被用户停止为止。当此命令结束后,所有窗口中的信息将更新。由于这种方式依赖于光标放置的位置,所以它只能在C语言窗口方式时才能使用。

(11)自动运行(Auto Step):自动运行能够重复执行指令。如果源程序进入调试状态时,在AVR Studio中执行菜单命令“Debug”→“Auto Step”或在工具栏中单击图标,或按下快捷键Ctrl+F10时,程序的运行将一直持续单步运行,直到遇到一个用户设置的断点或被用户停止为止。

2)软件仿真源程序在调试运行过程中,通过相应的窗口,可以观察各个寄存器的值,从而分析程序是否达到设计要求。

若需观察已导入AVR Studio的“新建项目”源程序的运行状况,可首先在I/O观察窗口中单击“PORTC”(因为源程序使用了PORTC端口),然后执行自动运行命令,由此可以看到Processor窗口中的Cycle Counter和Stop Watch中的数据不断更新,而I/O观察窗口中PORTC端口的状态值(Value)将每隔1s发生一次变化,其运行仿真如图1-51所示。若想终止运行,执行菜单命令“Debug”→“Reset”即可。

图1-51 “新建项目”的运行仿真图