当前位置: 首页 > news >正文

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

相关文章:

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

详解 KEIL C51 软件的使用建立工程-CSDN博客 2. 设置工程 (1)在图 2-15 的画面中点击 会弹出如图 2-16 的对话框.其中有 10 个选择页.选择“Target” 项,也就是图 2-16 的画面. 图 2-16 在图 2-16 中,箭头所指的是晶振的频率值,默认是所选单片机最高的可用频率值.该设置值与单…...

小程序实现语音识别功能

不废话&#xff0c;直接上代码 <template><view><u-popupround"16" :show"recordShow" :close-on-click-overlay"false":safe-area-inset-bottom"false"close"close"open"open"><view clas…...

判断两层对象中是否有空的value值

1、方法 hasEmptyValue(obj) {for (var key in obj) {if (obj.hasOwnProperty(key)) {var value obj[key];// 检查第一层属性值是否为空if (value null || value undefined || value ) {return true;}// 检查第二层属性值是否为空if (typeof value object) {for (var inn…...

【SQLite】环境安装

SQLite - C/C SQLite简介 SQLite 是一种轻量级的嵌入式数据库引擎&#xff0c;它在程序中直接访问数据库文件而不需要独立的数据库服务器。以下是一些关于 SQLite 的简介信息&#xff1a; 嵌入式数据库引擎&#xff1a; SQLite 是一种嵌入式数据库引擎&#xff0c;这意味着它…...

【QT】飞机大战

0 项目简介 飞机大战是我们大家所熟知的一款小游戏&#xff0c;本教程就是教大家如何制作一款自己的飞机大战 首先我们看一下效果图 玩家控制一架小飞机&#xff0c;然后自动发射子弹&#xff0c;如果子弹打到了飞下来的敌机&#xff0c;则射杀敌机&#xff0c;并且有爆炸的特…...

linux最全基础入门命令(简单明了建议收藏)

Linux是一种开源的操作系统&#xff0c;它有许多强大的命令行工具&#xff0c;可以让用户对系统进行各种操作和管理。本文将介绍一些Linux最常见最全的命令&#xff0c;以及它们的用法和示例。 目录 ls:用于列出目录中的文件和子目录cd:用于切换当前工作目录pwd:于显示当前工作…...

dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)

1. 如果你同时有dgl dglcu-XX.XX 那么&#xff0c;应该只会运行dgl &#xff08;DGL的CPU版本&#xff09;&#xff0c;因此&#xff0c;你需要把dgl(CPU)版本给卸载了 但是我只卸载CPU版本还不够&#xff0c;我GPU 版本的dglcu依旧不好使&#xff0c;因此吧GPU版本的也得卸载…...

回文数和复利的威力(C#)

题目&#xff1a;回文数 回⽂数指正序&#xff08;从左到右&#xff09;和倒序&#xff08;从右到左&#xff09;读都是⼀样的整数。 输⼊⼀个数&#xff0c;判断是否是回⽂数 样例输⼊ 2397 输出no 样例输⼊ 2992 样例输出yes 输⼊的整数⼤于0&#xff0c;⼩于1000000。如…...

【Java】面向对象程序设计 课程笔记 Java核心类

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;Java &#x1f4ac;希望你看完之后&#xff0c;能对你有所帮助&#xff0…...

16个值得推荐的.NET ORM框架

什么是ORM? ORM 是 Object Relational Mapping 的缩写&#xff0c;译为“对象关系映射”&#xff0c;是一种程序设计技术&#xff0c;用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题&#xff0c;ORM的作用是在关系型…...

Git 进阶使用

一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中&#xff0c;它通常用于管理和操作版本控制系统&#xff08;如Git、SVN等&#xff09;以及代码开发环境&#xff08;如IDE&#xff09;。与…...

【微软技术栈】C#.NET 泛型数学

本文内.NET 7 为基类库引入了新的数学相关泛型接口。 提供这些接口意味着可以将泛型类型或方法的类型参数约束为“类似于数字”。 此外&#xff0c;C# 11 及更高版本允许定义 static virtual 接口成员。 由于必须将运算符声明为 static&#xff0c;因此这一新的 C# 功能可用于在…...

【nlp】1.1文本处理的基本方法

文本处理的基本方法 1 什么是分词2 什么是命名实体识别3 什么是词性标准1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形…...

流量分析(信息安全铁人三项赛分区赛2-5.18)

题目描述 目录 题目描述 黑客的IP是多少 服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 服务器拿到的webshell的网址(请输入url解码后的网址) 服务器1.99的主机名 网站根目录的绝对路径(注意最后加斜杠) 黑客上传的第一个文件名称是什么 黑客进行内网扫描&am…...

云服务器如何选?腾讯云2核2G3M云服务器88元一年!

作为一名程序员&#xff0c;在选择云服务器时&#xff0c;我们需要关注几个要点&#xff1a;网络稳定性、价格以及云服务商的规模。这些要素将直接影响到我们的使用体验和成本效益。接下来&#xff0c;我将为大家推荐一款性价比较高的轻应用云服务器。 腾讯云双11活动 腾讯云…...

【Hello Go】初识Go语言

初识Go语言 Go语言介绍Go语言是什么Go语言优势Go语言能用来做什么 Go语言环境安装第一个GO语言程序运行Go语言程序 Go语言介绍 Go语言是什么 go语言是是Google开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言. 静态类型&#xff1a;在静态类型…...

计算机视觉:人脸识别与检测

目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术&#xff0c;具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图…...

【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等

LLaMA 2.0是 Meta AI 的开创性作品&#xff0c;作为首批高性能开源预训练语言模型之一闯入了 AI 场景。值得注意的是&#xff0c;LLaMA-13B 的性能优于巨大的 GPT-3(175B)&#xff0c;尽管其尺寸只是其一小部分。您无疑听说过 LLaMA 令人印象深刻的性能&#xff0c;但您是否想知…...

ctyunos 与 openeuler

ctyunos-2.0.1-220311-aarch64-dvd ctyunos-2.0.1-220329-everything-aarch64-dvd glibc python3 对应openEuler 20.03 LTS SP1...

跟着GPT学设计模式之工厂模式

工厂模式&#xff08;Factory Design Pattern&#xff09;分为三种更加细分的类型&#xff1a;简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中&#xff0c;简单工厂、工厂方法原理比较简单&#xff0c;在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点&#xf…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...