详解 KEIL C51 软件的使用·设置工程·编绎与连接程序

详解 KEIL C51 软件的使用·建立工程-CSDN博客

2.  设置工程

(1)在图 2-15 的画面中点击

会弹出如图 2-16 的对话框.其中有 10 个选择页.选择“Target” 项,也就是图 2-16 的画面.

图 2-16

        在图 2-16 中,箭头所指的是晶振的频率值,默认是所选单片机最高的可用频率值.该设置值与单 片机最终在电路运行中的程序代码是无关的,这只是供我们在软件调试时,显示程序执行的时间(关 下如何看时间,这个在后面节章中会详细讲解),一般设置为单片机运行的晶振值(实验板的晶振 值为 11.0592MHZ),正确的设置可以显示单片机的实际运行时间,但是如果你在调试程序时不是很 关心程序的运行时间,那你也可以不用理会它.

(2)在图 2-16 的画面中点击“Output”页,会弹出如图 2-17 的对话框.

图 2-17

        在图 2-17 的对话框中

        是生成烧写文件的选项,它的扩展名是“.hex”在默认的 情况下是未被选中的.因为我们稍后要将程序烧写到实验板中去,所以在这里选中该项.在默认情 况下这个“.hex”文件的存放路径与我们开始时建立项目工程的存放路径相同.只要将这个“.hex” 的文件烧写到单片机里面去,其运行的结果与你想象中的一致,那你的电子产品就开发成功了.

(3)在图 2-17 的画面中点击“Debug”页,会弹出如图 2-18 的对话框.

图 2-18

        Keil 提供了两种调试方式.一种是“软件模似仿真”;一种是“硬件仿真”.在软件模似仿真的模 式下完全不需要硬件的支持(如目标板,仿真器,开发板,实验板等),在这种模式下我们可以观 察单片机内部的运行情况,如运行时间,寄存器的状态,变量状态等.一般非常简单的程序你就可 以这样调试,但是如果较为复杂的程序,这样来调试就较为困难.

        还有一种就是硬件仿真,它是利用仿真器与 keil 连接起来,在硬件中看到真实的运行情况,但是 硬件仿真有一样是做不到的,那是看不到程序运行时间,这一点也只有软件仿真才能做到.

        若果是一个专业的电子工程师,在一个真正项目开发情况下,一般除了看程序运行时间外,其它多 般是用硬件仿真的,因为你写的程序是在真实的单片机中运行,而不是在 keil 软件中运行.在软 件仿真的情况下有好多实质性的问题是不能发现的.keil 软件的设置我们只需要了解这么多就可以 了,因为 keil 的绝大部分设置都是默认的,无需去设置.

3.  编绎与连接程序

        在图 2-15 中我们已经把程序装 keil 中,现在我们就来进行编绎与连接.在图 2-15 界面的左上角, 有三个按钮 .

现在分别来讲解一下它们不同的作用.

只用于编绎当前文件中的语法错误,不对文件进行链接.

编译链接按钮,用于对当前工程进行链接,如果当前工程已修改,keil 会对该文件进行编 绎.然后再链接以产生目标代码.

重新编译按钮,每点击一次均会再编绎链接一次,不管程序是否有改动,保证生产的目标 代码是最新的!

停止按钮,只要点击了上面三个的任意一个,停止按钮才会生效.

以上的那些按钮都可以有“project”菜单中找到.

在我们刚才建立的那个工程当中,按上面分析的那三个按钮意思,我们就按

个按钮吧!在 “Build”窗口出现了一段如图 2-19 的编绎信息.

图 2-19

图 3-20

        在图 2-19 的信息中,大家有没有留意到出现在图 2-20 的那些信息语句啊!它的大概意思是: “创建了 hex 文件来自 test 这个工程,在 test 这个工程中有 0 个错误和 0 个警告”.但是大 家要知道,要想产生 hex 文件,我们一定要在图 3-17 的对话框中设置.大家不防试一下,如 果在图 3-17 的“Output”选项页中不把

选中的,会是怎么样的呢!还有,如 果程序中有语法错误,也可以在“Build”窗口中显示出来.现在我们就来做一个试验.我们 刻意地把“P0=0x00;”这句程序语句改为“Po=0x00;”,就是把数字的“0”改为英文字母的 “o”,按一下编绎按钮,就会出现图 2-21 的信息.

图 2-21

        它的大概意思是“test.c 这个文件中的‘Po’为未明确的标识符,目标代码不能创建”,只要你用 鼠标双击一下该行错误的信息,在“test.c”文件中就会出现一个蓝色的箭头,说明该行出现错误. 但是如果文件中某程序语句后面少一个“;”号,双击图 2-21 中的错误信息栏,箭头会指向缺少 “;”号的程序句的下一行,以上的两种错误在编写程序中也是经常出现的,希望大家注意.

4.  调试程序

        在编写程序的时候一般会出错两种错误,一种为程序的语法错误,而另一种是程序逻辑错误, 当完成到出现图 2-20 信息栏的时候,只是说明你编写的程序没有语法错误,但是至于程序当中的 逻辑错误是不能发现的,那就得靠我们对程序的反复调试来找出错误所在.调试是项目开发中一个 非常重要的环节.下面我们重点来学习如何调试吧!当通过之前所讲的各个步骤出现图 2-20 的信 息栏之后,点击

按钮当前的界面会发生变化,如图 2-22 所示.

图 2-22

图 2-23

        图 2-23 为 keil 的调试工具按钮,意思从左到右为,复位,全速运行,暂停,单步执行, 过程单 步执行,执行完当前子程序,运行到当前行,下一状态,打开跟踪,观察跟踪,反汇编窗口,观察 窗口,代码作用范围分析,1#串行窗口,内存窗口,性能分析,工具按钮.

        特别注意:所为的软件仿真是在没有真实硬件支持的前况下进行程序的调试,不过软件的模似仿真 与真实的硬件仿真是不完全相同的,其中最明显的就是时序,最为具体的表现就是程序的执行时间 与所使用的计算机的配置性能有较大的关系,配置性能越高,执行的速度越快.

        首先我们来区分单步执行与全速运行有什么不同,这绝对不能混淆的.第 1:全速执行是指一 行程序执行完以后紧接着执行下一行程序,中间是不会停止的,在这样的情况下程序执行的速度非 常之快,即可以看到整一个程序执行的最终效果是正确还是错误的,但是如果程序当中出现了逻辑 性错误,我们就很难判断到底是那条程序语句出错.第 2:单步执行是指每次执行一条程序语句, 执行完该条程序语句之后就会停止下来,等待命令再执行下一条程序语句,在这时我们就可以通过 观察结果与程序员的逻辑思维是否相一致,如果不一致我们就分析错误到底出现在那里.下面我们 利用实验板来试验图 2-23 中几个主要的按钮功能.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/146950.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据Doris(二十二):数据查看导入

文章目录 数据查看导入 数据查看导入 Broker load 导入方式由于是异步的,所以用户必须将创建导入的 Label 记录,并且在查看导入命令中使用 Label 来查看导入结果。查看导入命令在所有导入方式中是通用的,具体语法可执行 HELP SHOW LOAD 查看。 show load order by create…

IEEE--DSConv: Efficient Convolution Operator 论文翻译

论文地址:https://arxiv.org/pdf/1901.01928v1.pdf 目录 摘要 1 介绍 2 相关工作 3 DSConv层 4 量化过程 5 分布偏移 6 优化推断 7 训练 8 结果 8.1 ImageNet 8.2 内存和计算负载 8.3 转移性 9 结论 摘要 我们引入了一种卷积层的变体,称为DSConv&…

【LLM】0x00 大模型简介

0x00 大模型简介 个人问题学习笔记大模型简介LLM 的能力:LLM 的特点: LangChain 简介LangChain 核心组件 小结参考资料 个人问题 1、大模型是什么? 2、ChatGPT 在大模型里是什么? 3、大模型怎么用? 带着问题去学习&a…

【分布式】CAP理论详解

一、CAP理论概述 在分布式系统中,CAP是指一组原则,它们描述了在网络分区(Partition)时,分布式系统能够提供的保证。CAP代表Consistency(一致性)、Availability(可用性)和…

【Java 进阶篇】JQuery 案例:全选全不选,为选择添彩

在前端的舞台上,用户交互是一场精彩的表演,而全选全不选的功能则是其中一段引人入胜的剧情。通过巧妙运用 JQuery,我们可以为用户提供便捷的全选和全不选操作,让页面更富交互性。本篇博客将深入探讨 JQuery 中全选全不选的实现原理…

<MySQL> 查询数据进阶操作 -- 聚合查询

目录 一、聚合查询概述 二、聚合函数查询 2.1 常用函数 2.2 使用函数演示 2.3 聚合函数参数为*或列名的查询区别 2.4 字符串不能参与数学运算 2.5 具有误导性的结果集 三、分组查询 group by 四、分组后条件表达式查询 五、MySQL 中各个关键字的执行顺序 一、聚合查询…

232.用栈实现队列(LeetCode)

思路 思路:利用两个栈实现队列先进先出的特性,先将元素导入一个栈内 模拟出队时,则将所有元素导入另一个栈内,此时元素顺序被反转过来,只需要取栈顶数据即可 那我们就可以将两个栈的功能分开,一个专门入pus…

多机器人群体的任务状态与机器人状态同步设计思路

背景技术 近年来,随着科学技术的发展需要,机器人技术不断进步。面临任务的日益复杂化,单机器人在很多环境下已经无法满足生产要求,于是国内外科研工作者对多机器人技术投入了大量关注,提出了利用多机器人协作来代替单机…

Karmada更高效地实现故障转移

随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问…

【Python】上市公司数据进行经典OLS回归实操

一、题目二、数据合并、清洗、描述性统计1、数据获取2、数据合并3、选择董监高薪酬作为解释变量的理论逻辑分析 三、多元回归模型的参数估计、结果展示与分析1、描述性统计分析2、剔除金融类上市公司3、对所有变量进行1%缩尾处理4、0-1标准化,所有解释变量5、绘制热…

网络运维Day16

文章目录 Docker简介什么是容器命名空间: Docker 的优缺点 Docker安装Docker镜像管理什么是镜像镜像管理 Docker容器管理运行容器容器启动、停止、重启拷贝文件进入容器容器与应用 DockerfileDockerfile 语法案例 总结 Docker简介 什么是容器 容器是用来装东西的&a…

磁带标签设计:Tape Label Studio 2023.11.0.7 Crack

Tape Label Studio(磁带标签设计) 为标签创建颜色样式。修改标签中使用的每种颜色,包括背景、条形码、边框、文本和字符颜色。自定义边框样式以适合您正在使用的标签。从实心、虚线或虚线边框中进行选择。轻松调整宽度和宽度。Tape Label St…

【网络奇缘】- 计算机网络|网络类型|性能指标

🌈个人主页: Aileen_0v0🔥系列专栏: 一见倾心,再见倾城 --- 计算机网络~💫个人格言:"没有罗马,那就自己创造罗马~" 目录 计算机网络分类 1.根据范围分类 ​编辑 2.按使用者分​编辑 3.按交换技术分 ​编辑4.按拓扑结构分 ​…

react中间件的理解

一、是什么? 中间件(Middleware)在计算机中,是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络应用上的各个部分或不同的应用,能…

Netty Review - 从BIO到NIO的进化推演

文章目录 BIODEMO 1DEMO 2小结论单线程BIO的缺陷BIO如何处理并发多线程BIO服务器的弊端 NIONIO要解决的问题模拟NIO方案一: (等待连接时和等待数据时不阻塞)方案二(缓存Socket,轮询数据是否准备好)方案二存…

225.用队列实现栈(LeetCode)

思路 思路:用两个队列实现栈后进先出的特性 ,两个队列为空时,先将数据都导向其中一个队列。 当要模拟出栈时,将前面的元素都导入另一个空队列,再将最后一个元素移出队列 实现 实现: 因为C语言没有库可以…

网络运维Day17

文章目录 什么是数据库MySQL介绍实验环境准备构建MySQL服务连接数据库修改root密码 数据库基础常用的SQL命令分类SQL命令使用规则MySQL基本操作创建库创建表查看表结构 记录管理命令 数据类型数值类型 数据类型日期时间类型时间函数案例枚举类型 约束条件案例修改表结构添加新字…

C++实现ransac

目录 一、ransac算法原理 1.1、算法概念 1.2、图解 二、c实现ransac 2.1、设置随机样本和离群点 2.2、随机抽取样本 2.3、内点计算 2.4、更新参数 2.2、完整代码 一、ransac算法原理 1.1、算法概念 随机抽样一致性 (RANSAC) 是一种迭代方法,用于根据一组包…

【Java 进阶篇】JQuery DOM操作:CRUD操作的前端魔法

在前端开发的舞台上,CRUD(Create, Read, Update, Delete)操作是一种极为重要的技能,它涉及对页面元素的增删改查。而JQuery,这位前端开发的魔法师,为我们提供了便捷而强大的方法,使得CRUD操作变…

IP地址如何实现定位功能?

网络犯罪、保护网络安全的重要手段。近日,一则新闻引起了广大网友的关注:IP也能实现定位功能,这是如何做到的呢?本文将对此进行深入解析。 首先,我们需要了解什么是IP地址定位。IP地址定位是通过IP地址确定网络用户所在…