首页 百科知识 环境下的程序在线调试

环境下的程序在线调试

时间:2023-10-27 百科知识 版权反馈
【摘要】:如果需要使用仿真器和实验箱进行在线调试程序,在建立好项目文件后,需要对项目进行一些仿真环境的软件设置,接着我们将对设置选项的功能进行分析.单击【Project】菜单,在下拉菜单中单击【Options for Target‘Target 1’】,可得到目标属性设置界面.在弹出的对话框中,有以下一些选项卡,我们将对这些选项的功能逐一进行介绍.【Use On-chip ROM(0x0-0XFFF)】:此

二、Keil C环境下的程序在线调试

如果需要使用仿真器和实验箱进行在线调试程序,在建立好项目文件后,需要对项目进行一些仿真环境的软件设置,接着我们将对设置选项的功能进行分析.单击【Project】菜单,在下拉菜单中单击【Options for Target‘Target 1’】,可得到目标属性设置界面.在弹出的对话框中,有以下一些选项卡,我们将对这些选项的功能逐一进行介绍.

(一)Target选项卡如图7-11所示

img103

图7-11 Target选项卡

【Xtal(MHZ)】:此选项用来设置单片机的工作频率,默认是24.0MHz.

【Use On-chip ROM(0x0-0XFFF)】:此选项表示程序将使用片内的Flash ROM.如果所用的单片机芯片具有片内ROM,EA接高电平,则选中这个选项,将使用片内ROM,如果单片机的EA接低电平,使用外部ROM,则不选中该项.

【Off-chip Code memory】:表示片外ROM的起始地址和大小,如果没有外接程序存储器,那么不需要填任何数据.

【Off-chip Xdata memory】:此选项中填充外接Xdata外部数据存储器的起始地址和大小,一般的应用是62256字节.

【Code Banking】:此选项表示使用Code Banking技术.Keil C可支持程序代码超过64KB的情况,最大可以有2MB的程序代码.如果代码超过64KB,那么就要使用Code Banking技术,以支持更多的程序空间.Code Banking支持自动的Bank切换,这在建立一个大型系统时是必需的.例如:在单片机里实现汉字字库,实现汉字输入法,都要用到该技术.

【Memory Model】:单击Memory Model后面的下拉箭头,会有3个选项,如图7-12所示.

img104

图7-12 Memory Model选项

【Small】:变量存储在内部RAM里.

【Compact】:变量存储在外部RAM里,使用8位间接寻址.

【Large】:变量存储在外部RAM里,使用16位间接寻址.

一般情况下使用Small模式来存储变量,此时单片机优先将变量存储在内部RAM里,如果内部RAM空间不够,才会存至外部RAM中.Compact的方式要通过程序来指定页的高位地址,编程比较复杂,如果外部RAM很少,只有256字节,那么对该256字节的读取就比较快.如果超过256字节,而且需要不断地进行切换,就比较麻烦,Compact模式适用于比较少的外部RAM的情况.Large模式是指变量会优先分配到外部RAM里.需要注意的是,3种存储方式都支持内部256字节和外部64KB的RAM.因为变量存储在内部RAM中的运算速度比存储在外部RAM中要快得多,因此,大部分的应用都是选择Small模式.

【Code Rom Size】:单击Code Rom Size后面的下拉箭头,有如图7-13所示的3个选项.

img105

图7-13 Code Rom Size选项

【Small:program 2Kor less】:适用于AT89C2051这些芯片,2051只有2KB的代码空间,所以跳转地址只有2KB,编译的时候会使用ACALL AJMP这些短跳指令,而不会使用LCALL,LJMP此类指令.如果代码地址跳转超过2KB,那么会出错.

【Compact:2Kfunctiongs,64Kprogram】:表示每个子函数的代码大小不得超过2K,而整个项目可以有64K的代码空间.也就是说在main()函数中可以使用LCALL,LJMP等长调用和长跳转指令,但在子程序里只能使用ACALL,AJMP指令.只有确定每个子程序不会超过2KB,才可以使用Compact方式.

【Large:64KB program】:表示程序或子函数的代码都可以达到64KB,使用code bank还可以进一步扩大.通常都选用该方式,选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small方式.

【Operating】:单击Operating后面的下拉箭头,会有3个选项,如图7-14所示.

img106

图7-14 Operating选项

【None】:表示不使用操作系统.

【RTX-51Tiny Real-Time OS】:表示使用Tiny操作系统.

【RTX-51Full Real-Time OS】:表示使用Full操作系统.

Tiny是一个多任务操作系统,使用定时器0做任务切换.在11.0592MHz时,切换任务的速度为30ms.如果有10个任务同时运行,那么切换时间为300ms.不支持中断系统的任务切换,也没有优先级,因为切换时间太长,其实时性较差.多任务情况下(比如5个),轮循一次需要150ms,即150ms才处理一个任务,这连键盘扫描这些事情都实现不了,更不要说串口接收、外部中断了.同时切换需要大概1000个机器周期,对CPU的浪费很大,对内部RAM的占用也很严重.实际上用到多任务操作系统的情况很少.

Keil C51Full Real-Time OS是比Tiny要好一些的系统(但需要用户使用外部RAM),支持中断方式的多任务和任务优先级,但是Keil C51里不提供该运行库,要另外购买.

这里选择None.

(二)设置Output选项卡

注意“Output”标签页中的“Create HEX File”选项必需选中,可使程序在编译后产生HEX代码,最终我们需要把HEX代码下载到AT89S51单片机中运行.

img107

图7-15 设置Output卡

【Select Folder for Objects】:单击该按钮可以选择编译后目标文件的存储目录,如果按默认设置,将存储在项目文件的目录里.

【Name of Executable】:设置目标文件的名字,缺省情况下将和项目的名字一样.目标文件可以生成库或者obj、HEX的格式.

【Create Executable】:如果要生成OMF以及HEX文件,一般选中Debug Information和Browse Information.选中这两项,才有调试所需的详细信息,比如要调试C语言程序,如果不选中,调试时将无法看到高级语言写的程序.

【Create HEX File】:要生成HEX文件,一定要选中该选项,HEX文件是供下载器下载到单片机中的程序代码,默认情况下是不选中的.

【Create Library】:选中该项时将生成lib库文件.根据需要决定是否要生成库文件,一般应用是不生成库文件的.

“After Make”栏中有以下几个设置.

【Beep when complete】:编译完成之后发出“咚”的声音.

【Start Debugging】:在软件仿真或硬件仿真时马上启动调试,根据需要来设置,一般是不选中.

【Run User Program#1,Run User Program#2】:这个选项可以设置编译完之后所要运行的其他应用程序(比如有些用户自己编写了烧写芯片的程序,编译完便执行该程序,将HEX文件写入芯片),或者调用外部的仿真器程序,可根据自己的需要进行设置.

(三)设置Listing选项卡(如图7-16所示)

img108

图7-16 设置Listing选项卡

Keil C51在编译之后除生成目标文件之外,还生成*.lst、*.m51文件.这两个文件告诉程序员程序中所用的idata、data、bit、xdata、code、RAM、ROM、stack等的相关信息,以及程序所需的代码空间.

单击“Select Folder for Listings”按钮后,在出现的对话框中可以选择生成的列表文件的存放目录,默认情况下为项目文件所在的目录.

选中“Assembly Code”将生成汇编代码,它可以使得C语言代码在编译之后产生对应的汇编实现的代码,这将给程序员带来很大的方便.

(四)设置Debug选项卡(如图7-17所示)

img109

图7-17 设置Debug选项卡

在Debug选项卡中,有两种仿真形式可供选择:一种是纯软件的“Use Simulator”仿真形式,另一种为使用Monitor-51目标仿真器的形式,需要选择“Use:Keil Monitor-51Driver”选项,可以根据实际实验条件进行选择.

【Load Application at Start】:选择这项之后,Keil会自动装载程序代码.

【Go till main】:如果选中此项,在调试C语言程序时PC会自动运行到主程序main处.

设置好以上这些调试环境后,接着进行程序编译,单击工具栏中的img110按钮,或者选择菜单【Project】中的子菜单【Rebuild all target files】选项,将开始编译过程.如果编译成功,开发环境中会显示编译成功的信息,如图7-18所示.

img111

图7-18 编译成功信息

编译完毕之后,选择【Debug】菜单下的【Start/Stop Debug Session】子菜单或者单击工具栏中的img112按钮,则可进入仿真过程.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈