详解 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 中几个主要的按钮功能.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp运行到安卓模拟器一直在“同步手机端程序文件完成“界面解决办法

如果你是用的模拟器是android studio创建的模拟器,那么你需要新创建一个android11 x86架构的模拟器: 创建完成后,启动模拟器: 然后在hbuilder中重新运行到这个模拟器就可以了: 运行结果: 如果你是用安…

代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和

LeetCode T1143 最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 题目思路: 动规五部曲分析 1.确定dp数组的含义 这里dp数组的含义是结尾分别为i-1,j-1的text1和text2的最长公共子序列长度 至于为什么是i-1,j-1我之前已经说过了,这里再…

网络运维Day16

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

CSS特效010:文字颜色渐变的流光效果

查看专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS相关的库、…

爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)

🚀 作者:阿辉不一般 🚀 你说呢:生活本来沉闷,但跑起来就有风 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请…

揭秘Vue中的nextTick:异步更新队列背后的技术原理大揭秘!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、N…

Git 修改历史 commit message

一. 修改最新的 commit log 修改最近一次commit message, 直接使用命令 git commit --amend 就可以完成修改二. 修改历史 commit log 查看日志(按 q 退出) git log --oneline # 查看5步的log。 git log --oneline -5选择要修改的commit 信息 # 要修改的 commit log…

微服务的注册发现和微服务架构下的负载均衡

文章目录 微服务注册模型服务注册与发现怎么保证高可用【1. 服务端崩溃检测】【2. 客户端容错】【3. 注册中心选型】 微服务架构下的负载均衡【1.轮询与加权轮询】【2.随机与加权随机】【3.哈希与一致性哈希】【4.最少连接数】【5.最少活跃数】【6.最快响应时间】【总结】 负载…

微服务简单理解与快速搭建

分布式和微服务 含义 微服务架构 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服…

ARM day4

LED灯亮灭控制 .text .global _start _start: 1ldr r0,0x50000a28ldr r1,[r0]orr r1,r1,#(0x3<<4)str r1,[r0] 2ldr r0,0x50006000ldr r1,[r0]bic r1,r1,#(0x3<<20)orr r1,r1,#(0x1<<20)bic r1,r1,#(0x3<<16)orr r1,r1,#(0x1<<16)str r1,[r0]…

Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求

版本说明 当前版本号[20231114]。 版本修改说明20231114初版 目录 文章目录 版本说明目录HTTP协议1、网址1.1 网址的概念1.2 URL的组成1.3 知识要点 2、HTTP协议的介绍2.1 HTTP协议的概念及作用2.2 HTTP协议的概念及作用2.3 浏览器访问Web服务器的过程 3、HTTP请求报文3.1 H…

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

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

hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)

1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令&#xff1a; ssh-keygen -t rsa3. 发送到需要免密机器&#xff1a; # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功

【JavaEE】Servlet API 详解(HttpServletRequest类)

二、HttpServletRequest Tomcat 通过 Socket API 读取 HTTP 请求(字符串), 并且按照 HTTP 协议的格式把字符串解析成 HttpServletRequest 对象&#xff08;内容和HTTP请求报文一样&#xff09; 1.1 HttpServletRequest核心方法 1.2 方法演示 WebServlet("/showRequest&…

IOS上架流程

准备 开发者账号完工的项目 上架步骤 一、创建App ID二、创建证书请求文件 &#xff08;CSR文件&#xff09;三、创建发布证书 &#xff08;CER&#xff09;四、创建Provisioning Profiles配置文件 &#xff08;PP文件&#xff09;五、在App Store创建应用六、打包上架 一、…

【python自动化】Playwright基础教程(七)Keyboard键盘

【python自动化】Playwright基础教程(七)Keyboard键盘 playwright模拟键盘操作 键盘事件提供了用于管理虚拟键盘的API&#xff0c;高级API是keyboard.type()&#xff0c;它使用的是原始字符再页面上生成对应的keydown 、 keypress / input 和 keyup 事件。 模拟真实键盘操作进行…

搜索引擎项目

认识搜索引擎 1、有一个主页、有搜索框。在搜索框中输入的内容 称为“查询词” 2、还有搜索结果页&#xff0c;包含了若干条搜索结果 3、针对每一个搜索结果&#xff0c;都会包含查询词或者查询词的一部分或者和查询词具有一定的相关性 4、每个搜索结果包含好几个部分&…

深入解析 Azure 机器学习平台:架构与组成部分

Azure机器学习平台是Microsoft Azure提供的一种云上机器学习服务&#xff0c;为开发者和数据科学家提供了一个全面且易于使用的环境来创建、训练、部署和管理机器学习模型。本文将对Azure机器学习平台的基本架构和组成部分进行深入解析&#xff0c;帮助读者全面了解该平台的工作…

NOIP 2017 宝藏----Java题解

目录 NOIP 2017 宝藏 题目描述 输入描述: 输出描述: 输入 输出 说明 输入 输出 说明 备注: 代码实现&#xff1a; NOIP 2017 宝藏 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO For…

解决删除QT后Qt VS Tools中Qt Options中未删除的错误

在Qt VS Tools的Qt Options已经配置好Qt Versions后如果删除QT程序之后会出现Default Qt/Win version任然存在&#xff0c;这是如果再添加一个话就不能出现重名了&#xff0c;如果新建一个其他名字的话其实在vs中还是不能正常运行qt&#xff0c;会出现点击ui文件vs会无故重启或…