AVR仿真调试软件的使用
AVR Studio是AVR系列单片机的源程序级调试器,它可以在Windows95/98或Windows NT上使用,图形界面十分直观(见图1)。它可以对AVR系列单片机进行C语言和汇编语言源程序级调试。该软件除了支持硬件调试器外,还可以使用软件模拟调试,这里我们介绍的就是它的软件模拟调试功能。

1. 软件界面及调试功能的介绍
软件界面
(1) 源程序窗口(AVR242.ASM)
当你打开一个程序时,这个窗口会自动出现,它是调试器的主窗口,这里显示的是正在调试的程序的源代码,你可以在这里看到程序的运行情况。当你在这个窗口中点击鼠标右键时会出现一个菜单,在这个菜单上你可以来完成控制程序的运行、设置断点、做标记等功能,并且所设置的断点和标记都会在源程序窗口的最左边显示出来。
(2) 寄存器窗口(Registers)
这里显示AVR单片机的内部寄存器的数值。当程序停止运行时,你可以在这个窗口中用鼠标双击某个寄存器来修改这个寄存器的值。
(3) 存储器窗口(Memory)
这里显示AVR单片机的内部存储器。你可以在这个窗口上面的下拉式选择框中选择显示AVR单片机的程序存储区、内部RAM区(I/O)、EEPROM区。你也可以点击窗口上的快捷按钮来选择是否显示存储区的ASCII码和选择显示的数值位数(8位或16位),而且可以双击某个地址上的数值来修改它。
(4) 处理器窗口(Processer)
这个窗口中显示的是程序运行时的一些重要的信息:指令指针的地址、堆栈的状态、程序执行的周期计数、程序执行的时间、X/Y/Z寄存器的数值、AVR单片机的时钟频率、状态寄存器的值、看门狗的状态。
(5) I/O窗口
这里显示的有CPU控制寄存器的状态、外部中断的状态、计数器和定时器的状态、看门狗控制寄存器的状态、EEPROM控制寄存器的状态、I/O端口的状态、模拟比较器的状态。对每一项都显示其名字、数值和地址。对显示的数值可以选择按二进制格式、十进制格式、十六进制格式或单选框格式来显示。你可以在显示的数值上双击鼠标来修改它,其中在单选框格式你可以方便地修改每一位的值。当你在每一项上单击鼠标右键时,会弹出一个菜单,你可以在这个菜单上选择显示的属性。
(6) 监视窗口(Watch)
这里显示的是被监视的变量的情况(变量的名字、类型、数值,变量的地址)。你可以点击工具条上的Add Watch按钮(一个眼镜的符号)或者在这个窗口上点击鼠标右键,然后选择Add Watch来添加监视的变量。这样在程序运行中,只要被监视的变量有变化都会在这个窗口中直观地显示出来。
菜 单
文件菜单:
这里可以完成对文件的操作,包含打开文件、关闭文件等功能。
编辑菜单:
完成一些基本的编辑功能。
工程菜单:
完成新建工程、打开工程、保存工程、关闭工程等功能。
调试菜单:
这个菜单十分重要,它完成对程序的调试功能。包含复位单片机、执行程序、中断程序、跟踪进入、单步执行、单步退出、运行到光标、多步执行、自动执行和设置调试参数。
断点菜单:
这里完成增加断点、删除断点等功能。
跟踪和触发菜单:
这个菜单对于软件模拟调试是不可用的。
监视菜单:
这里可以增加监视的变量、删除监视的变量等功能。
参数菜单:
这里可以设置调试器的参数、设置记录I/O端口的值、设置输入I/O端口信号。
显示菜单:
这里可以选择打开各个功能窗口。
主要调试功能
(1) 调试:
主要的调试功能都在调试(Debug)菜单下,这里控制了程序的执行方式,并且每一个功能都设置有热键,可用其更方便地进行调试。下面简单介绍各个调试功能:
复位单片机(Reset):
这个功能可用引起程序复位,复位后和真正的单片机复位相同,程序将停止到第一条指令上,等待用户的下一个调试指令。
执行程序(Go):
这个功能开始全速执行程序,除非遇到断点或用户终止,否则程序将一直执行下去。
中断程序(Break):
当程序在执行时,这个功能将停止执行程序。
跟踪进入(Trace into):
这个功能每次执行一条指令。
单步执行(Step Over):
这个功能每次执行一条指令,但如果遇到子程序调用,它会直接执行完这个子程序。
单步退出(Step Out):
如果当前程序已经执行到了一个子程序中,这个功能将引起把这个子程序执行完后停止。
运行到光标(Run to Curser):
执行这个功能,程序会运行到光标所指的指令处后停止。
多步执行(Multi Step) :
这个功能每次执行多条指令。每次执行的指令数在设置调试参数中设置。
自动执行(Auto Step):
比较慢速地执行程序,你可在源程序窗口看到程序的执行情况。执行的速度可在设置调试参数中设置。
(2) 断点:
灵活设置断点可用更加方便地完成调试,当你在某条指令上设置断点后,程序执行到这条指令时就会停止,这时你可用来查看程序执行的结果,比如各寄存器的值、内部RAM的值、I/O口的状态等等。设置断点有多种方式:在源代码窗口的某条指令上点击鼠标右键,在弹出的菜单上选择设置断点;在断点菜单中选择设置断点。当你不需要某个断点时,你也可以使用同样的方式来取消断点。
(3) 记录I/O端口:
这个功能可允许你记录I/O端口的活动情况,这将帮助你分析程序的运行情况。当你在参数菜单上点击设置记录I/O端口的值(Simulator Port)时就会打开记录I/O端口功能的对话框,在这里你可用选择记录某个I/O端口,I/O端口的活动情况将记录到一个文件中,你需要设置这个文件的路径和名字。
(4) 输入I/O端口信号:
如果你需要在调试时对某个I/O口输入一个连续的信号,就需要利用I/O口输入设置文件(*.STI),这项功能的使用方法基本上同记录I/O端口。STI文件的格式也和记录I/O端口生成的文件格式相同。例如:
0∶00
010∶FF
056∶50
0121
以上说明当程序执行到000周期时对端口输入00,执行到010周期时对端口输入FF,执行到056周期时对端口输入50,执行到121周期时对端口输入1A。
2. AVR Studio的一般调试方法
写好程序后,首先我们要使用MPASM程序来编译程序,在编辑器没有检查出任何错误时就会生成烧写用的HEX文件、OBJ文件。然后就可以使用AVR Studio打开该OBJ文件进行调试了。
打开文件后,AVR Studio会自动打开源程序并显示在源程序窗口中,这时你可以使用显示菜单或快捷按钮来打开调试时要用到的各个功能窗口,比如处理器窗口、寄存器窗口、I/O窗口等。然后你可以在参数菜单(Options)中的设置模拟调试参数(Simulator Options)中设置模拟调试的单片机型号、单片机使用的时钟频率。
现在,你就可使用我们前面介绍的调试功能来进行程序的调试了。该软件可到http://ediy.yeah.net下载。
更正:上期本文的图1中R9(4k7)电阻的一端原接的VDD(上拉)应改为接GND(下拉)。
电子DIY工作室