单片机集成开发环境Keil5的使用

实验1 单片机集成开发环境Keil5的使用

实验目的

1、学会下载、安装Keil μVision集成开发环境;

2、了解Keil μVision软件开发流程;

3、学会使用Keil μVision集成开发环境进行软件开发,包括程序的编辑、编译、连接、生成目标代码。

4、学会使用Keil μVision集成开发环境进行程序的调试。

基础知识

keil介绍

Keil软件是目前最流行开发MCS-51系列单片 机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil即可看出。Keil提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通 过一个集成开发环境(uVision)将这些部份组合在一起。

Debug和Release区别

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

编译系统

具体去看《深入理解计算机系统》P3

Created with Raphaël 2.2.0 *.c 源程序 *.i 修改了的源程序 *.s 汇编程序 *.o 可重定位目标程序 *.exe可执行目标程序

实验内容

一.新建工程

mark

mark

2.为当前项目选择CPU,选择STC15W4K32S4

mark

3.选择”是“

mark

4.添加文件

6

mark

二.工程的详细设置

程建立好以后,如果还要对工程进行进一步的设置,点击左边 Project 窗口的 Target 1,然后使用菜单“Project->Option for target ‘target1’” 即出现对工程设置的对话框,也可以直接使用默认值。

target对话框
mark
  • Xtal后面的数值是晶振频率值,默认值是所选目标 CPU 的最高可用频率值,在仿真的时候要让工作频率和实际频率一致。

  • Memory Model 用于设置RAM使用情况,有三个选择项,Small是所有变量都在单片机的内部 RAM 中;Compact 是可以使用一页外部扩展 RAM,而 Larget则是可以使用全部外部的扩展 RAM。

  • Code Model 用于设置 ROM 空间的使用,同样也有三个选择项,即 Small 模式,只用低于 2K 的程序空间;Compact 模式,单个函数的代码量不能超过 2K,整个程序可以使用 64K 程序空间;Larget模式,可用全部64K空间。

  • Use on-chip ROM 选择项,确认是否仅使用片内 ROM(注意:选中该项并不会影响最终生成的目标代码量)

  • Operating项是操作系统选择,Keil 提供了两种操作系统:Rtx tiny 和 Rtx full,关于操作系统是另外一个 很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:None(不使用任何 操作系统)

output对话框

mark

  • Creat Hex file 用于生成可执行代码文件(可以用编程器写入单片机芯片的 HEX 格式文件,文件的扩展名 为.HEX)

  • 选中 Debug information 将会产生调试信息,这些信 息用于调试,如果需要对程序进行调试,应当选中该项

  • Name of Executable 用 于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改

三.编译和连接

下图是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译。mark

  • 选择菜单 Project->Build target(即第2个),对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;

  • 如果选择 Rebuild All target files(即第3个) 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,

  • Translate … .(即第1个)项则仅 对该文件进行编译,不进行连接。

关于工程和target关系看这 传送门1

一个工程下可以有多个target,如果只编译当前选中的target即mark,那么就选第2个

如果要把所有的target都重新编译过,就按第3个。

第1个按钮,就是只编译不连接,那么exe文件就不会改变。

四.Debug

在对工程成功地进行汇编、连接以后,按 Ctrl+F5 或者使用菜单 Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真 CPU 用来模拟执行程序以模拟调试 功能。

Debug常用命令

mark

从左到右依次是复位、全速执行,停止(用在全速时),单步执行,过程单步,跳出当前函数,跳到下一个断点出处。

  • **全速执行:**是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。

    只有遇到断点才会停下来,否则会一直会循环main

  • **单步执行:**是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。

  • **过程单步:**是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。

  • Step Out of Current Function(单步执行到该函数外):使用该命令 后,即全速执行完调试光标所在的子程序或子函数并指向主程序中的下一行程序(这里是 JMP LOOP 行)

Debug常用窗口
1.存储器窗口Memory

通过在 Address 后的编缉框内输入“字 母:数字”即可显示相应内存值,其中字母可以是 C、D、I、X,分别代表代码存储空间、 直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部 RAM 空间,数字代表想 要查看的地址。

2.工程窗口寄存器页Registers

寄存器页包括了当前的工作寄存器组和系统寄存器,系统寄存器组有一些是实际存在的寄存器如 A、B、DPTR、SP、PSW 等,有一些是实际中 并不存在或虽然存在却不能对其操作的如PC、Status等

3.观察窗口

观察特定变量的变化

4.分析窗口 (logic window)

这个是用来当示波器看的,可以看某个引脚的波形

Debug实际操作

1.使用堆栈窗口看所有变量的变化

debug界面如下,通过看右下角堆栈窗口内值的变化知道变量都是什么值。

而可以按F11,单步执行停下来观察。

mark

调试代码如下

void fu(int* a)
{
	int pp=3;
	*a=pp;
}
void main()
{
	int a,b,k;
	bit c,d;
	a=2;
	b=40;
	
	c=3;  //观察它值是为3还是1.

	c=a<b && a>b;
	d=0;
	d=a<b || a>b;
	
	fu(&a);
	for(k=1;k<=10;++k)b=k;

}

运行到以下行时

a=2; 可以看到a=0x0002

b=40; b变成0x0028

c=3; c变成0x0001,而不是0x0003,因为他是bit

d=a<b || a>b; 这时d由0变1

而跳到函数里时,是这样子的

mark

2.在观察窗口(watch)里看特定变量的值

注意观察窗口里的变量只能在特定的函数里有效

因此如果这一次debug里的a如果在下一个debug里再用,而不是删除再新增,这时它的类型会错乱。比如int类型的a,再使用就变成uchar了

好用的原因是在这里可以让变量显示为十进制数

如果是函数里的局部变量加到观察窗口里去,在下一次的debug里就会自动消失

局部变量在硬件仿真的时候不能添加到watch

好用的原因是在这里可以让变量显示为十进制数

mark

3,利用断点

全步运行会直到断点才停下来,如果没有设置断点会一直循环main

mark

4.使用logic window

在使用前要把寄存器添加进去,从watch窗口中,

详细可以看这里 传送门2

利用断点

全步运行会直到断点才停下来,如果没有设置断点会一直循环main

[外链图片转存中…(img-nb1a3SY3-1586058520478)]

4.使用logic window

在使用前要把寄存器添加进去,从watch窗口中,

详细可以看这里 传送门2

mark

  • 8
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是Mally呀!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值