详解 KEIL C51 软件的使用·建立工程
单片机要运行,就必须将程序代码下载到程序存储器内部,但是在写进单片机之前要先将你写 的程序转换成*.hex 或*.bin 的文件.不同系列的单片机都有不同的软件对其进行编绎,而 keil Cx51 是德国开发的一个专为 51 系列单片机提供的软件开发平台,基本上现在的所有 51 系列内核的单片 机都是使用 keil 来调试和编绎,在上面编写好程序后,将其编绎成*.hex 的十六进制烧写文件.然 后再烧写到单片机系统中去。
Keil Cx51 软件使用
下面以 keil Cx51 V7.04 版本为例,介绍如何使用 keil 的集成开发环境.
建立工程
一:双击桌面
启动 keil 如图 2-1 所示.
图 2-1
二:新建一个工程
(1)点击“Project”菜单,选择下拉菜单的“New Project”,会弹出如图 2-2 的窗口,在文件名 一栏中填入你的想要的工程文件名,文件名是任由你决定的,但是一般是取带有特定意义的为文件 名,这样比较容易管理和理解.在这里就取“text”,意为测试的意思.
图 2-2
然后点击保存.文件的扩展名为*.uv2,这是 keil 项目文件扩展名,以后我们直接双 击打开这个文件就可以了.
(2)点击保存之后会弹出如图 2-4 的窗口,要求选择芯片的型号,在这里我们选择“Atmel”内面 的 AT89S52 如图 2-5 所示.
图 2-4
图 2-5
(3)完成上一步之后点击确认.有可能会出现图 2-6 的对话框,其意思是把标准 8051 的启动代码复 制到本工程中去,你只需要“N(否)”就可以了.
图 2-6
(4)完成以上步骤之后我们就可以见到的 keil 界面如图 2-7
图 2-7
(5)我们现在来编写第一个程序.点击“File”的下拉菜单中选择“New”的选项如图 3-8 所示.
图 3-8
(6)这时光标会在新建的“Text1”这个文本框中闪烁.其实现在已经可以编写程序了,但是笔者建 义大家还是先将这个空白文件保存好之后再来编写.点击“File”的下拉菜单中的“Save As”此 时会弹出图 2-9 的对话框.在文件名中填入你想要的文件名,但是文件名最好是具有一定的代表意 义,这样比较容易管理和理解.这里特别要注意的就是,如果我们用 C 语言来写程序的话,那么文 件的扩展名一定要为.c,但是如果我们用的是汇编语言来写程序,那么文件的扩展名一定要为.asm, 由于我们现在用 C 语言来编写程序,所以这里就取“test.c”,单击“保存”.原来的那个“Text1” 的文件已经变成了我们刚才的那个“test.c”文件.见图 2-10 黑色箭头所指.
当你按上面的程序步骤完成之后,还是看见“Text1”没有变这“test.c”文件,那只是你的 keil 没有刷新,你把它最小化,然后再还原就可以了.
图 2-9
图 2-10
(7)完成上一步之后,回到了图 2-10 的编辑界面,单击“Target”前面的“+”号,然后在“Source Group 1”上右击一下,选中“Add Files to Group ,Source Group 1”就会弹出图 2-11 的对话框, 选择我们刚才建立的那个“test.c”的文件.
图 2-11
(8)选择完之后,我们已经发现那刚才在图 2-10 右边的“Source Group 1”下面多了一个“test.c”, 如图 2-12 所示.
图 2-12
(9)将文件加入“Source Group 1”之后,增加文件的对话框并没有消失.这时其对话框还在等待 添加其它的文件,如果你再单击“Add”,就会出现图 2-13 的对话框,其意思是提示用户所选的文 件已经在列表中.这时点击“确定”返回到增加对话框,然后点击“Close”返回主界面.再在 “Source Group 1”前面的“+”号中点击一下,你就会见到“test.c”这个文件已在工程当中.
图 2-13
到这里一个完整的项目工程就建立完成了,下面让我们来学习如何调试程序.
#include<reg52.h>//包含所用单片机对应的头文件
void delay_ms (unsigned int time)//延时 1 毫秒程序,n 是形式参数
{ unsigned int i,j; for (i=time;i>0;i--)//i 不断减 1,一直到 i>0 条件不成立为止for (j=112;j>0;j--)//j 不断减 1,一直到 j>0 条件不成立为止 {;}
}
void main (void){ while (1){ P1=0x00;// 点亮 P1 端口 delay_ms (500);//把实际参数 500 传给 n,延时 500 毫秒,也就是 0.5 秒 P1=0xff;// 息灭 P1 端口 delay_ms (500);//把实际参数 500 传给 n,延时 500 毫秒,也就是 0.5 秒 }
}
上面是一个简单的 C 语言程序(程序附光盘中),只要将该程序的代码烧写到图 2-14 的电路中去, 实验板就会实现“亮,延时 500 毫秒,灭,延时 500 毫秒”这样不断循环闪烁.2-14 是实验板的流 水灯的电路.对于上面的程序,如果我们是一个初学者,可能还有好多问题是不明白的,是吗?在 这里我们暂时不用去管它,在以后节章中我们会详细去研究它,在这里只是让大家有一个初步的认 识.
图 2-14
把程序装入 keil 之后的画面如图 2-15.
图 2-15
更多:
详解 KEIL C51 软件的使用·设置工程·编绎与连接程序-CSDN博客
相关文章:

详解 KEIL C51 软件的使用·建立工程
单片机要运行,就必须将程序代码下载到程序存储器内部,但是在写进单片机之前要先将你写 的程序转换成*.hex 或*.bin 的文件.不同系列的单片机都有不同的软件对其进行编绎,而 keil Cx51 是德国开发的一个专为 51 系列单片机提供的软件开发平台,基本上现在的所有 51 系列内核的单片…...

2023年03月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 已知一个列表lst = [2,3,4,5,6],lst.append(20),print(lst)的结果是?( )(2分) A.[10,2,3,4,5,6,20] B.[20,2,10,3,4,5,6] C.[2,3,4,5,6,20] D.[2,3,4,5,6,10,20] 答案:C 第2…...
nginx 代理服务时遇到的问题
一 nginx代理多个服务,且服务之间需要相互通信 多个服务运行在docker容器中,nginx同样在docker容器中 比如前端服务需要请求后端服务,用户请求服务器80或者443 ,nginx代理请求到前端服务,前端服务业务请求到后端服务…...
利用共享台球室小程序系统提升用户体验
随着移动互联网的普及,越来越多的用户倾向于使用手机应用来解决生活中的问题。共享台球室作为一个结合了传统与现代元素的项目,也需要借助移动小程序的力量来提升用户体验。本文将探讨如何利用共享台球室小程序系统提升用户体验。 一、提供便捷的服务 …...

U-Mail海外邮件中继帮您解决企业邮件退信难题
过去一年,国内外形势严峻复杂,但中国外贸顶住压力、爬坡过坎,进出口规模冲破40万亿元大关,高达42万亿元人民币,中国连续6年位居货物贸易第一大国。随着我国疫情防控措进入新阶段,“拼经济”正在成为各地的一…...

ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)
在临床病理诊断中, 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。 免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。 一般而言,抗原含量越多,分布密度越高,阳性结果显色…...

了解STM32看门狗定时器的工作原理和原则
STM32 系列微控制器的看门狗定时器 (Watchdog Timer,WWDG) 是一种重要的硬件资源,用于检测系统的异常状态,并在发生异常时执行特定的操作,以确保系统能够正常运行。在本文中,我将详细介绍 STM32 看门狗定时器的工作原理…...

【2014年数据结构真题】
41. (13分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。 给定一棵二叉树T,采用二叉链表存储,结点结构如下: 其中叶结点的weight域保存该结点的非负权值。 设root为指向T的根结点的指针, 请设计求T 的WPL…...

PostgreSQL基本操作
目录 1.源码安装PostgreSQL 1.1.前置条件(root下操作) 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…...

hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)
1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令: ssh-keygen -t rsa3. 发送到需要免密机器: # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功...

Django 的国际化与本地化详解
概要 随着全球化的发展,为 Web 应用提供多语言支持变得日益重要。Django 作为一个功能强大的 Web 框架,提供了一套完整的国际化(i18n)和本地化(l10n)工具,使得开发多语言应用变得简单。本文将详…...

Java19新增特性
前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17、Java18 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特…...

[文件读取]metinfo_6.0.0 任意文件读取漏洞复现
1.1漏洞描述 漏洞编号--漏洞类型文件读取漏洞等级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐漏洞环境windows漏洞名称MetInfo 6.0.0 任意文件读取漏洞 MetInfo 是一套使用PHP 和MySQL 开发的内容管理系统。MetInfo 6.0.0 版本中的 /app/system/include/module/old_thumb.class.php 文件存在任意文件…...
[量化投资-学习笔记015]Python+TDengine从零开始搭建量化分析平台-量化知识点汇总
之前的章节介绍了多个技术分析指标,以下进行一个简单的总结。 看过之前章节的同学就可以不用打开了。 技术指标 MAEMAMACDCCIATRKDJ MA 最基础的技术指标,对一段周期内的收盘价进行简单平均,是一切指标的基础。 def calc_ma(period,ma):ma_…...

VSCode 好用的插件分享
文章目录 Introlistcode runner 【在文本编辑器中编辑好各类语言的源代码,然后一键运行】gitlens - 【git提交信息即时查看,类似IDEA中的 show annotation】还有更多,会日常补充。 Intro 大四毕业前,我只有一台dell latitude 455…...
C++虚基类详解
多继承(Multiple Inheritance) 是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。…...

Mac M2/M3 芯片环境配置以及常用软件安装-前端
最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。 一、环境配置 1. 安装 Homebrew 安装 Homebrew【Mac 安装 Homebrew】 通过国内镜像安装会比较快 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Ho…...

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

前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(四)
你可以的,去飞吧! 同步代码和异步代码 回调函数地狱和 Promise 链式调用 回调函数地狱 缔造“回调地狱”↓ 制造里层回调错误,却在最外层接收错误→无法捕获 axios源码抛出异常(未捕获) <!DOCTYPE html> <ht…...

TechSmith Camtasia 2024破解版功能介绍及使用教程
在现在的网络互联网时代,越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频,也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音,做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...