Keil C51使用详解(8)

2019-09-01 13:08

中hello.c。

(2) 用cd改换project目录至hello目录。 (3) 在setup_target一项目选8051。 (4) 在setup_C51中输出DB OE。 (5) 在setup_project输入project名hello。 (6) 在setup_save保存Ishell.CFG文件。

(7) 编辑一个Link文件hello.lin中有“hell.obj”一行。

(8) 由光标落在files菜单中的Hello.c上,单击“translate”,如无语法错,再击“link”,则Hex文件生成。

(9) 单击Simulate如在8051.CDF中选Simulate为dScope则进入dScope调试直接“Go”,看serial窗口输出为“Hello.world”。

(10) 如程序有误修改源代码后不必再translate或link了,只要一步Amake即可。 若project中包括不止一个文件,在DOS的Ishell中不能用Translate编译,而应建立bat文件,直接在命令窗编译,然后link连接。

如还需用Translate则只能多个文件分别编译,然后连接。

第七章 Keil C51的代码效率

C51程序编译生成汇编代码的效率,是由许多因素共同决定的,对于Keil C51,主要受以下两种因素影响: 第一节 存储模式的影响

存储模式决定了缺省变量的存储空间,而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。

例如:一个整形变量i,如放于内存18H、19H空间,则++i的操作编译成四条语句: INC 0x19 MOV A,0x19 JNZ 0x272D INC 0x18

36

0x272D:

而如果放于外存空间0000H、0001H则++i的操作编译成九条语句: MOV DPTR,0001 MOVX A,@ DPTR INC A

MOVX @ DPTR,A JNz #5

MOV OPTR,#0000 MOVX A,@DPTR INC A

MOVX @ DPTR,A

就汇编之后的语句而言,对外部存储器的操作较内部存储器操作代码率要低得多,生成的语句为内存的两倍以上,而程序中有大量的这种操作,可见存储模式对代码率的响了。

因此程序设计的原则是

1、存储模式从small-Compact-large依次选择,实在是变量太多,才选large模式。 2、即使选择了large模式,对一些常用的局部的或者可放于内存中的变量,最好放于内存中,以尽量提高程序的代码率。 第二节 程序结构的影响

程序的结构单元包括模块、函数等等。同样的功能,如果结构越复杂,其所涉及的操作、变量、功能模块函数等就越多,较之结构性好,代码简单的程序其代码率自然就低得多。

此外程序的运行控制语句,也是影响代码率的关键因素,例如:switch -case语句,许多编译器都把它们译得非常复杂,Keil C51也不例外,相对较为简易的Switch-case语句,编译成跳转指令形式,代码率较高,但对较为复杂的Switch-Case,则要调用一个系统库函数?C?ICASE进行处理,非常复杂。

37

再如if( ),while( ),等语句也是代码相对较低的语句,但编译以后比switch-case要高得多。

因此建议设计者尽量少用switch-case之类语句来控制程序结构,以提高代码率。 除以上两点外,其它因素也会对代码率产生影响,例如: 是否用寄存器传递参数 即NOAREGS选项是否有 是否包括调试信息:即DEBUG选项

是否包括扩展的调试信息:即BJECTEXTEND

第八章 dScope for Windows使用详解

第一节 概述

1. 主窗口(Mainframe Window)

可设置其它各种调试窗口,设置断点、观察点,修改地址空间,加载文件等等; 2. 调试窗口(DEBUG Window)

支持用户程序的各种显示方式,可连续运行,单步运行用户程序,并可在线 汇编; 3. 命令窗口(Command Window) 支持命令行的输入;

4. 观察窗口(Watch Window) 可设置所要观察的变量、表达式等; 5. 寄存器窗口(Registe Window)

显示内部寄存器的内容,程序运行次数等; 6. 串口窗口(Serical Windows) 显示串口接收和发送的数据; 7. 性能分析窗口

显示所要观察的各程序段占用CPU的空间; 8. 内存窗口(Memory Window) 显示所选择的内存中的数据;

9. 符号浏览窗口(Symbol Browser Window)

38

显示各种符号名称,包括专有符号,用户自定义符号(函数名、变量、标号)等; 10. 调用线窗口(Call-Stack Window) 动态显示当前执行的程序段的函数调用关系; 11. 代码覆盖窗口

提供当前模块内各程序段中被执行代码的比率;。 12. 外围设备窗口(peripherals)

可显示I/O口,定时器,中断,串口等外围设备状态; 第二节 dScope for Windows基本操作 1. 指定初始化文件

在uVision的Option菜单dScope Debugger中指定dScope的初始化文件,用的RUN启动dScope将自动加载此初始化文件,自动执行其中命令; 下面是一个例子,可以看出调入一个调试代码的过程。Ds51.ini: load 8051.dll load test slog>>test.log xtal=11.0592

define button \ws RevCounter ws rm.r g,main PA RESET PA serial PA timer0 2. 观察变量 方法1:命令行

WS expression [, numberbase ] [ LINE ]

39

uVision其中numberbase为显示数制,10对应10进制,16对应16进制,缺省为16进制。LINE为单行显示,缺省为多行显示。

方法2:setup->Watchpoints,在对话框中输入变量 3. 显示RAM的值 d i(x,d):起始地址,终止地址 d 变量名 4. 观察堆栈

View->Call-stack->Show invocation,可以跟踪调用过程; 5. 中断处理程序调试

在装入8051.dll后,在dScope的主菜单中将增加Peripherial,其有4个字菜单: I/0 port:Pi端口状态 Interrupt:中断设置 Timer:定时器中断状态 Serial:串口中断状态

设置相应的中断请求标志位即可产生中断。 6. 性能分析(Performance Analyzer:PA)

PA用来分析一段代码执行占用CPU的百分比。定义:

命令行 PA func_name

第三节 dScope for Windows命令文件的编制

dScope除了用命令行的方式进行调试以外,还可将各种调试命令汇集于一个调试文件中,然后调用该文件,就可达到自动测试用户源代码的目的。dScope的命令文件支持C/PL/M的格式,因而编制调试命令文件与编制C语言程序有些类似。 1. 地址空间及地址空间类型 (1) 地址空间分段

dScope提供的最大可用空间为16M,实际上我们只用以下三段:

40


Keil C51使用详解(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二乙二醇单丁醚生产技术及市场行情研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: