KeilC51程序调试过程Word文档格式.docx

上传人:b****6 文档编号:21195247 上传时间:2023-01-28 格式:DOCX 页数:10 大小:19.62KB
下载 相关 举报
KeilC51程序调试过程Word文档格式.docx_第1页
第1页 / 共10页
KeilC51程序调试过程Word文档格式.docx_第2页
第2页 / 共10页
KeilC51程序调试过程Word文档格式.docx_第3页
第3页 / 共10页
KeilC51程序调试过程Word文档格式.docx_第4页
第4页 / 共10页
KeilC51程序调试过程Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

KeilC51程序调试过程Word文档格式.docx

《KeilC51程序调试过程Word文档格式.docx》由会员分享,可在线阅读,更多相关《KeilC51程序调试过程Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

KeilC51程序调试过程Word文档格式.docx

选择Debug下边的

Start/Stop

DebugSession,这个选项能够翻开调试也能够封闭调试。

接下来看到的窗口就是调试窗口了:

下边详细谈谈有关子窗口的功能:

1、左边的ProjectWorkspace

Regs是片内内存的有关状况值;

Sys是系一致些累加器、计数器等。

Regs

很简单就不多说。

详细介绍一下Sys:

a累加器ACC,常常在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

b寄存器B,主要用于乘法和除法操作。

sp

sp_max

dptr数据指针DPTR。

PC$

states履行指令的数目。

sec履行指令的时间累计(单位:

秒)。

psw程序状态标记寄存器PSW,八位寄存器,用来寄存运算结果的一些特点量,若有无进位、借位等。

p奇偶标记P。

反应累加器ACC内容的奇偶性,假如ACC中的运算结果有偶数个1(如11001100B,此中有4个1),则P为0,不然,P=1。

f1

ov溢出标记位OV。

MCS-51反应带符号数的运算结果能否有溢出,有溢出时,此位为1,不然为0。

rs

f0

ac协助进位标记AC。

又称半进位标记,它反应了两个八位数运算低四位是

否有半进位,即低四位相加(或减)有否进位(或借位),若有则AC为1状态,

不然为0。

cy进位标记CY(PSW7)。

它表示运算能否有进位(或借位)。

假如操作结果在最高位有进位(加法)或许借位(减法),则该位为1,不然为0。

因为PSW寄存程序履行中的状态,故又叫程序状态字。

运算器中还有一个按位

(bit)进行逻辑运算的逻辑办理机(又称布尔办理机)。

依据指令履行的不一样,上述值会有相应的变化,程序员能够监测这些在单片机中看不到的值而达到调试的目的。

固然软件调试没法实现硬件调试那样的信号输出,可是软件调试也能够在软件窗口监测输出信号的高低电平,以及单片机有关端口的变化,实现模拟监测输出信号的目的。

上图所示,Port0,Port1,Port2,Port3就对应于单片机的四个P0,P1,P2,P3口,共32个针脚。

这是所有翻开后的成效。

有了输出,就应当有输入的设置:

选择Interrupt这个按钮能够翻开输入预设窗口,输入值窗口以下:

选择不一样的IntSource会有不一样的SelectedInterrupt的变化,经过选择与赋

值达到模拟输入的目的。

接下来是串口的设置:

出现设置串口的窗口:

监测窗口数据还有一个窗口:

点击:

将会出现,这个窗口能够监测从串口输出的ASCII代码。

最下边还有一个准时器的设置:

3个准时器与一个看门狗,设置准时器的数目与工程选择的单片机种类有关系,假如是8051就只有2个准时器,假如是选择8052就有3个准时器了。

准时器的设置很简单:

参照的数好多,这里临时省略介绍。

下边再介绍一下一些常用的调试按钮:

就是Reset,相当于单片机的复位按钮,按下后,所有的系统状态将变为初始状态。

这是全速运转,相当于单片机的通电履行。

这个是停止全速运转的按钮。

stepinto

逐语句;

进入并单步履行。

stepover

逐过程。

stepout

跳出。

履行到断点处。

能够在代码所在窗口的最左边右击按钮插入一个断点,以以下图所示:

有了这个功能,就能够控制监控要履行到某地点时系统的状态。

最后在介绍一个很适用的功能:

这个是DisassemblyWindows,按下后能够把C51Disassembly为相应的汇编

语言,假若有汇编语言知识的话,就能够对照C51程序与汇编程序了。

因为汇编语言的效率高好多,这也能够作为查察C51履行效率的一个方法。

上图中就能够看出,C51代码是怎样被解说为汇编的。

调试还有好多的功能,这里不过介绍了一小部分,希望能起到抛砖引玉的作用,更多的细节需要你自己去挖掘与学习。

KeilC51程序调试过程

用KeilC51编写程序时,常常需要调试,假如不是常常用这个软件的话,

很简单忘掉这些调试步骤,此刻举一个例子“考证延缓函数delay()使其延缓的时间为500ms”说明。

源程序写完后,就能够调试了,依据图1所示,先进行第一步和第二步操作,使界面切换到图2的状态,能够看到在文本编写窗口中,有一个黄色箭头指向

13行的地点,说明程序从这个地点开始履行。

左上角有一些跟调试有关的按钮,

如“全速履行”、“单步进入”⋯⋯。

关于这个例子,目的是考证delay()函数的延缓时间,使其大概为500ms。

依据以下方法能够达到这个目的:

图1编译界面

图2调试界面

点击“单步跳出”按钮(或功能键F10),黄色箭头从第13行往下移一行

(14),再单击“单步跳出”,则箭头移到15行那处,表示程序从第13行履行到第15行(注:

这类方式是一步一步履行程序。

假如要同时履行几行,比方从

第13行一下子履行到15行,能够作以下操作:

先用鼠标在第15行的地点处点击两下会出现一个图2所示的红色图标;

而后点击“全速履行”按钮,则黄色的

箭头会从第13行迅速移到15行。

即:

这两行同时被履行)。

此时左边寄存器窗口中的sec有一个数值,表示程序履行的时间,即delay()函数的延缓时间。

假如延缓时间不是500ms,可改变delay()函数中x,y的数值,再点击

图1的第二步所对应的按钮切换到图1所示的编译界面,点击“从头结构所有对象文件”编译程序,而后再切换到图2的界面上来进行调试。

重复上边的步骤,直到左边寄存器窗口中的sec(单位秒)数值大概为0.50s,即可说明delay()延缓时间为500ms。

(注:

这类方法比较麻烦,并且延缓时间不会很精准,假如要精准延缓的话可采纳准时器的方式。

KeilC调试事例--优化致使的问题

以下是一个简单的KeilC中的小程序:

#include<

reg52.h>

voidmain()

{

unsignedchari,j;

i=0xf0;

j=0x0f;

P0=i;

P1=j;

while

(1);

}

编译OK后,进入Debugsession,按F11单步履行,发现"

i=0xf0"

和"

j=0x0f"

这两句没有履行。

以以下图:

好多初学者百思不得其解,其实,这是因为KeilC自己的8级优化致使的。

解决的方法有两种:

1、降底优化级别,以以下图,可降至级别2。

2、在局部变量i,j定义前加上Volatile,严禁KeilC优化这两个变量。

以下:

volatileunsignedchari,j;

调试OK!

KEIL-C调试点滴

问:

用KEIL写

C代码,做完此后的调试工作应当怎样展开?

只有

PC机,没有任何的

硬件设施。

2楼good02xaut(good)答复:

用自带的编译功能而后查错误。

写完代码后,F7编译,Alt+F5调试,F10单步

运转。

能够查察寄存器的值以及RAM的内容。

还能够改变P1~P3口的输入。

KEIL

就是一个开发仿真一体的。

4楼zhou_huanxi(阿周)答复:

Keil

C自己就是编译与仿真一体的。

当不要外面数据时很方便,能够使用

C自带的软件调试器(软件仿真

器),有单步运转,设置断点等功能。

当要外面输入时(比方用准时器作计数器用),有两种办理方法:

(1)做产品时最好是用硬件仿真器调试。

(2)学习时可用以下方法:

KeilC供给了几个调试输入用的窗口,可用

它们来模拟输入;

调试函数由自己依据需要按特定的格式来编写,再按KEILC

的要求调入即可。

下边给出用准时器作外面事件计数时模拟外面输入的调试函数

C调用的步骤以下:

并写出

步骤一:

编写以下信号函数:

single

voidt0_singal(void)

while

(1)

PORT3|=0x10;

//pullINT0(P3.4)highagain

PORT3&

=~0x10;

//pullINT0(P3.4)lowPORT3|=0x10;

//pullINT0(P3.4)high

andgenerate

again

interrupt

twatch(CLOCK);

//waitfor1

second

步骤二:

DEBUG状态下选择:

DEBUG》“FunctionEditor(OpenIniFile)"

此中的“翻开”窗口封闭;

保存“Function

这时,将弹出两个新屏幕,将Editor窗口;

步骤三:

在FunctionEditor窗口中输入上边的函数:

singlevoidt0_singal(void)

步骤四:

保存(注意:

扩展名为.ini

),编译该程序,成功后封闭

Function

Editor

窗口;

步骤五:

履行用户程序(一定连续履行);

步骤六:

在屏幕左下脚的命令窗口中,键入t0_singl()后(一定回车),KeilC即可向P3.4络绎不绝地供给脉冲信号。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1