四、程序调试窗口

四、程序调试窗口

μVision2软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows)、观察窗口(Watch&Call Stack Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)和串行窗口(Serial Window)等。进入调试模式后,可以通过“View”菜单下的相应命令打开或关闭这些窗口。图8-12是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。进入调试程序后,输出窗口自动切换到Command页。该页用于输入调试命令和输出调试信息。

图8-12 调试窗口(命令窗口、存储器窗口、观察窗口)

1.存储器窗口

存储器窗口如图8-13所示,在该窗口中可以显示系统中各内存中的值,通过在Address后的编辑框内输入“字母:数字”即可显示相应内存值,其中:字母部分表示四类存储器(C、D、I、X)空间,C代表代码存储空间,D代表直接寻址的片内存储空间,I代表间接寻址的片内存储空间,X代表扩展的外部RAM空间;数字代表要查看的地址。例如,输入D:0即可观察到地址0开始的片内RAM单元值,键入C:0即可显示从地址0开始的ROM单元中的值,即查看程序的二进制代码。窗口分为“Memory#1”~“Memory#4”四栏,每栏可指定不同的地址空间。

图8-13 存储器窗口

该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等。改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择,如图8-14所示。在此快捷菜单中改变存储器内容按不同方式显示:可以采用十进制(Decimal)显示、按无符号(Unsigned)或有符号(Signed)的字符类型(Char)、整型(Int)或长整型(Long)、Ascii码、浮点型(Float)、双精度型(Double)等方式显示。

图8-14 存储器窗口的右键菜单

Unsigned和Signed则分别代表无符号形式和有符号形式,具体从哪一个单元开始的连续单元则与设置有关,例如输入1∶0,那么00 H和01 H单元的内容将会组成一个整型数,而如果输入1∶1,则01H和02H单元的内容全组成一个整型数。Unsigned和Signed后分别有三个选项:Char、Int、Long,分别代表以单字节方式显示、将相邻双字节组成整型数方式显示、将相邻四字节组成长整型方式显示,有关数据格式与C语言规定相同,请参考C语言教材书籍,默认以无符号单字节方式显示。

Modify Memory at X:xx用于更改鼠标处的内存单元值,选中该项即出现如图8-15所示的对话框,可以在对话框内输入要修改的内容。

图8-15 存储器单元数值的修改

2.工程窗口寄存器页

图8-16是工程窗口寄存器页的内容,寄存器页包括了当前的工作寄存器组和系统寄存器组,系统寄存器组有一些是实际存在的寄存器如A、B、DPTR、SP、PSW等,有一些是实际中并不存在或虽然存在却不能对其操作的如PC、Status等。每当程序中执行到对某寄存器的操作时,该寄存器会以反色(蓝底白字)显示,用鼠标单击,然后按下F2键,即可修改此值。

图8-16 寄存器窗口

3.观察窗口

观察窗口是很重要的一个窗口,工程窗口中仅可以观察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要观察其他的寄存器的值或者在高级语言编程时需要直接观察变量,就要借助于观察窗口了,观察窗口如图8-12所示。

4.外围接口

为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况,μVision2提供了一些外围接口对话框,通过“Peripherals”菜单选择,该菜单的下拉菜单内容与建立项目时所选的CPU有关,如果是选择的AT89S51这一类“标准”的51内核,那么将会有Interrupt(中断)、I/O Ports(并行I/O口)、Serial(串行口)、Timer(定时/计数器)这四个外围设备菜单。打开这些对话框,列出了外围设备的当前使用情况、各标志位的情况等,在这些对话框中可以直观地观察和更改各外围设备的运行情况。

单击“Peripherals->I/O-Ports->Timer0”,出现如图8-17所示定时/计数器0的外围接口界面,可以直接选择“Mode”组中的下拉列表,以确定定时/计数工作方式、设定定时初值等。点击选中TR0,Status右侧的Stop就变成了Run,如果全速运行程序,此时TH0,TL0后的值也快速地开始变化(同样要求Periodic Window Updata处于选中状态),直观地显示定时/计数器的工作情况。

图8-17 定时外围窗口

图8-18 串行口外围窗口

单击“Peripherals->Serial”即出现图8-18串行口外围接口界面。窗口中“Mode”栏用于选择串行口的工作方式,单击其中的箭头很容易选择8位移位寄存器、8位/9位可变波特率UART等不同工作方式。选定工作方式后相应特殊工作寄存器SCON和SBUF的控制字也显示在窗口中。通过对特殊控制位SM2、REN、TB8、RB8、TI和RI复选框的置位和复位操作,很容易实现对8051单片机内部串行口的仿真。“Baudrate”栏用于显示串行口的工作波特率,SMOD位置位时将波特率加倍。“IRQ”栏用于显示串行口的发送和接收中断标志。