吐血整理![特殊字符]Keil 软件从入门到精通,开发环境搭建超详细教程[特殊字符]
希望这篇文章能助您快速搭建起开发环境。要是在操作过程中遇到问题,别担心,在评论区留言或者私信我,我会手把手帮您解决~同时,现在关注我,即可免费领取价值万元的嵌入式学习资料以及 STC 单片机开发板资料哦!机不可失,赶紧点击关注,开启您的学习之旅吧!🚀声明:本文的内容大致来源于STC官方文档!
吐血整理!🚀Keil 软件从入门到精通,开发环境搭建超详细教程🎯
在单片机开发过程中,编译、仿真开发环境的建立至关重要。今天,就来详细讲讲如何使用 Keil 软件搭建STC单片机开发环境,内容超全,快收藏!
一、安装 Keil 软件
(一)安装 C51 编译环境
首先,我们要登陆 Keil 官网,下载最新的 C51 安装包。
下载链接:https://www.keil.com/download/product/
信息随便填写,点确定后进入下载页面进行下载。下载完成后,双击安装包开始安装:
点击 “Next”:

勾选 “I agree to all the terms of the preceding License Agreement”,然后点击 “Next”:

选择安装目录,点击 “Next”:

填写个人信息,然后点击 “Next”:

安装完成,点击 “Finish” 结束:

(二)如何同时安装 Keil 的 C51、C251 和 MDK
旧版本:旧版本的 Keil 软件的安装目录默认是 C:\Keil,C51、C251 和 MDK 分别会被安装在 C:\Keil 目录下的 C51、C251 和 ARM 目录中,如下图所示。

新版本:新版本的 Keil 软件的安装目录默认是 C:\Keil_v5,C51、C251 和 MDK 分别会被安装在 C:\Keil_v5 目录下的 C51、C251 和 ARM 目录中,如下图所示。

无论是新版本还是旧版本,C51、C251 和 MDK 是安装在不同的目录,并不会有冲突。软件的和谐也是 3 个软件分别进行的,之前已经安装完成并设置好的软件,并不会因为后续有安装新的软件而改变。所以安装时只需要按照默认方式安装即可,Keil 软件会自动处理好。
二、添加型号和头文件到 Keil
使用 Keil 之前需要先安装 STC 的仿真驱动。STC 的仿真驱动的安装步骤如下:
首先打开 STC 的 ISP 下载软件,然后在软件右边功能区的 “Keil 仿真设置” 页面中点击 “添加型号和头文件到 Keil 中 添加 STC 仿真器驱动到 Keil 中” 按钮:

按下后会出现如下画面:

将目录定位到 Keil 软件的安装目录,然后确定。安装成功后会弹出如下的提示框:

即表示驱动正确安装了。
头文件默认复制到 Keil 安装目录下的 “C251\INC\STC” 目录中,在 C 代码中使用 “#include <STC32G.H>” 或者 “#include “STC32G.H”” 进行包含均可正确使用。
(一)STC 单片机程序中头文件的使用方法
c 语言中 include 用法:#include 命令是预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置。有两种方式可以指定插入头文件:
#include <文件名.h>
#include “文件名.h”
使用尖括号 < > 和双引号 " " 的区别在于头文件的搜索路径不同:
使用尖括号 < >,编译器会到系统路径下查找头文件;
使用双引号 " ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。
路径设置方式
方式 1:通过 keil 设置界面,添加包含文件的路径:

添加后,调用时直接使用 #include “文件名.h” 就可以将需要的文件包含进来,编译器会自动到以上路径下面寻找所包含的文件。这种情况下,使用双引号 " " 包含头文件,编译器首先在当前目录下查找头文件,如果没有找到,编译器会到 keil 设置路径查找,还没有的话再到系统路径下查找。(注:系统路径是编译器安装位置存放头文件的目录)
方式 2:在包含文件名前添加绝对路径,例如:
#include "E:\xxxx\xxxx\文件名.h"
#include "E:/xxxx/xxxx/文件名.h"
方式 3:在包含文件名前添加相对路径,例如:
#include "..\comm\文件名.h"
#include "../comm/文件名.h"
其中 “…” 是指上一级目录,以上路径是指包含文件在当前目录的上一级目录的 comm 目录下面。
汇编语言中 include 用法:与 c 语言类似,将 “#” 换成 “$”,用小括号 () 包含文件:
\$include (../../comm/STC8H.INC)
以上指令表示要包含的文件 STC8H.INC,在当前目录的上一级目录的上一级目录的 comm 目录下面。
三、新建项目与项目设置
(一)设置项目路径和项目名称
打开 Keil 软件,并点击 “Project” 菜单中的 “New uVision Project …” 项:

将目录定位在准备好的项目文件夹中,并输入项目名称(例如:Demo):

(二)选择目标单片机型号(STC8H8K64U)
在弹出的 “Select a CPU Data Base File” 窗口中选择 “STC MCU Database”:

在 “Select Device for Target …” 窗口中选择正确的目标单片机型号(例如:STC8H8K64U):

(三)添加源代码文件到项目
如下图所示,在 “Source Group 1” 所在的图标点击鼠标右键,并选择右键菜单中的 “Add Files to Group ’ Source Group 1’…”:

选择已编辑完成的代码文件加入到项目中:

(四)设置项目 1(设置 “Memory Model”)
如下图所示,在 “Target1” 所在的图标点击鼠标右键,并选择 “Options for Target ’ Target 1’…”:

弹出的 “Options for Target ’ Target 1’” 窗口中选择 “Target” 选项页,在 “Memory Model” 的下拉选项中可选择 “Small” 模式或者 “Large” 模式。在 Keil 软件中的 “Memory Model” 有如下 3 个选择:

各种模式对比如下表:
| Memory Model | 默认变量类型(数据存储器) | 存储器大小 | 地址范围 |
|---|---|---|---|
| Small 模式 | data | 128 字节 | D:00 ~ D:7F |
| Compact 模式 | pdata | 256 字节 | X:0000 ~ X:00FF |
| Large 模式 | xdata | 64K 字节(理论值) | X:0000 ~ X:FFFF |
为了达到比较高的效率,一般建议选择 “Small” 模式,当编译器出现 “error C249: ‘DATA’: SEGMENT TOO LARGE” 错误时,则需要手动将部分比较大的数组通过 “xdata” 强制分配到 XDATA 区域(例如:char xdata buffer [256];)。
(五)设置项目 3(“Code Rom Size” 选择 Large)
在 “Code Rom Size” 的下拉选项中选择 “Large: …” 模式。8051 的代码大小模式,在 Keil 环境下有如下图所示的 3 种模式:

各种模式对比如下表:
| Code Rom Size | 跳转 / 调用指令 | 单个函数 / 模块 / 文件的代码大小 | 总代码大小 |
|---|---|---|---|
| Small 模式 | AJMP/ACALL | 2K | 2k |
| Compact 模式 | 内部模块代码使用 AJMP/ACALL外部模块代码使用 LJMP/LCALL | 2k | 64K |
| Large 模式 | LCALL/LJMP | 64K | 64K |
(六)设置项目 5(HEX 文件格式设置)
“Options for Target ’ Target 1’” 窗口中选择 “Output” 选项页,勾选其中的 “Create HEX File” 选项:

完成上面的设置后,鼠标单击如下图所示的编译按钮,如果代码没有错误,即可生成 HEX 文件。
四、如何在 Keil C51 中对变量、表格数据、函数指定绝对地址
(一)Keil C51 中,变量如何指定绝对地址
语法如下:
数据类型 [存储类型] 变量名称 _at_ 绝对地址;
在 data 区域指定绝对地址变量的范例:
int data var_data_abs _at_ 0x50;
在 xdata 区域指定绝对地址变量的范例:
int xdata var_xdata_abs _at_ 0x30;
在 data 区域指定绝对地址变量的范例:
char xdata arr_xdata_abs[256] _at_ 0x1000;
编译完成后地址分配如下图:

(二)Keil C51 中,表格数据如何指定绝对地址
C51 中无法直接在程序中指定表格数据的绝对地址,需要通过如下方法实现:
首先在程序中定义表格数据,编译成功后,获取表格的链接符号(如下图为 “?CO?DEMO”)。

接下来在项目设置项中打开 “BL51 Locate” 设置页面。
在 code 一栏中按照:链接名称 (链接地址) 的格式,输入绝对地址。如下图,将表格数据指定到代码区的 0x1000 的绝对地址。

设置完成后,再次编译,表格数据即可被链接到指定的绝对地址,如下图:

(三)Keil C51 中,函数如何指定绝对地址
C51 中无法直接在程序中指定函数的绝对地址,需要通过如下方法实现:
首先在程序编写完成函数代码,编译成功后,获取函数的链接符号(如下图为 “?PR?TEST?DEMO”):
接下来在项目设置项中打开 “BL51 Locate” 设置页面。
在 code 一栏中按照:链接名称 (链接地址) 的格式,输入绝对地址。如下图,将函数指定到代码区的 0x2000 的绝对地址。

设置完成后,再次编译,函数即可被链接到指定的绝对地址,如下图:

五、Keil 软件中获取帮助的简单方法
Keil 软件提供了很完整的帮助文件,对于一般的软件使用和编程问题,直接使用 Keil 软件的帮助基本都可以得到解决。如下图:

若需要了解项目设置中的相关设置的,可按下图所示的方法获取帮助


另外,也可在帮助窗口中直接输入想了解的内如。比如需要了解如何在程序中设置特殊的编译指示,可按下图所示,在搜索框输入“#pragma”即可

如果需要更详细的帮助详细,可登录 Keil 官网进行查询
四:结尾总结
希望这篇文章能助您快速搭建起开发环境。要是在操作过程中遇到问题,别担心,在评论区留言或者私信我,我会手把手帮您解决~同时,现在关注我,即可免费领取价值万元的嵌入式学习资料以及 STC 单片机开发板资料哦!机不可失,赶紧点击关注,开启您的学习之旅吧!🚀
声明:本文的内容大致来源于STC官方文档!
更多推荐



所有评论(0)