吐血整理!🚀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官方文档!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐