概述
文章目录
- 一、51 单片机工程模板创建
- 1.新建工程
- 2.选择CPU型号
- 3.给工程添加文件
- 4.配置魔术棒选项卡
- 5.修改编程区字体大小
- 二、reg52.h 头文件介绍
- 1.头文件作用
- 2.头文件内容
一、51 单片机工程模板创建
本节介绍使用KEIL C51软件来创建51单片机工程模板。
1.新建工程
首先在电脑任意位置新建一个文件夹,命名为“51 单片机工程模板创建”。
打开 KEIL C51
软件,新建一个工程,工程名根据喜好命名,但是要注意使用英文,如果使用中文名可能会出现一些奇怪的错误,这里我们命名为template
,直接保存在刚才创建的“51 单片机工程模板创建”文件夹下。具体步骤如下:
2.选择CPU型号
这个根据开发板使用的 CPU 具体的型号来选择,我们开发板使用的是STC89C52 或 STC89C516 芯片。在 KEIL C51 软件内找不到这种型号的单片机,因为 51 内核单片机具有通用性,所以在这里可以任选一款 89C52 就行,Keil 软件的关键是程序代码的编写,而非用户选择什么硬件,在这里我们选择 Ateml 的89C52 来说明。具体操作如下:
点击 OK 键后,弹出如下对话框:
该对话框内容是提示我们是否要将 8051 启动文件添加到工程中,这里我们选择“否”,原因是 KEIL C51 内已经帮我们完成了启动,所以只需要编写应用程序即可。选择“否”后界面如下:
3.给工程添加文件
选择 File/New..
.或者使用工具栏的图标
来新建一个文件后点击保存,系统会自动定位到我们工程目录,只需要在文件名栏输入新建的文件名即可,一个 51 单片机工程必须含有且仅有一个 main 函数,因此将新建的文件命名为 main.c
(当然也可以根据个人习惯自定义命名,但必须是英文),点击保存。具体操作步骤如下:
然后将新建的 main.c
文件添加到工程中,选择工程组“Source Group 1”
, 鼠标右键选择“Add Files to Group ‘Source Group 1’
,然后选择对应的 xxx.c
文件,点击 Add
键后在点击 Close
关闭。这时工程中就显示已加入的文件。具体操作如下:
4.配置魔术棒选项卡
这一步的配置工作非常重要,很多人自己编写程序编译后发现找不到 .HEX 文件,或者使用我们 51 仿真器的时候出现仿真失败,这些问题都是在这个地方没有配置好导致的。
- 选择魔术棒工具的 Output 选项卡,勾选红色框 3,即程序编译成功后会产生 HEX 文件。具体操作如下:
- 51 仿真器配置
要使用 51 仿真器在线调试程序,需要在 KEIL 软件内进行相应的配置。具体的配置如下:
根据上图从 1 到 10 步骤设置完成之后就可以进行在线仿真调试了。
最后点击 OK 按钮即可。然后双击工程组中的 main.c 文件, 我们输入如下内容:
#include "reg52.h"
void main()
{
while (1)
{
}
}
编译后结果 0 错误 0 警告,表明我们创建的 51 单片机工程完全正确。如下:
上图红色标记 1 中三个按钮都可以对代码编译,但其功能不同:
- 第一个:它是编译当前界面所在的一个 C 文件,并没有生成可执行文件。
- 第二个:联合编译整个工程,发生修改的文件重新编译,并生成可执行文件。
- 第三个:联合编译整个工程,所有文件都重新编译,并生成可执行文件。
从上面说明可以看出,一般情况下,我们不使用第三个编译按钮,第二个最常用。因为第三个每次都把所有的文件都重新编译,需要消耗大量的时间。 当工程比较小的时候,感觉不到,但是工程较大的时候就不行了。
5.修改编程区字体大小
有朋友可能会觉得,KEIL C51 默认提供的字体比较小,看起来非常不舒服。下面我们就来介绍如何在 KEIL C51 软件内修改编程区字体大小问题。
- 首先在 KEIL C51 软件的工具栏中内找到一个“小扳手”,如下所示:
- 然后点击它,弹出如下设置界面,按照设置界面的红色标号顺序进入
- 点击标号 5 按钮时用于选择设置当前字体大小等信息的,选择适合自己的字体大小即可,然后点击 OK,设置完成。如下所示:
最后设置完成后,编程区内的字体就会发生改变。
二、reg52.h 头文件介绍
1.头文件作用
在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。在代码中加入头文件有两种书写方法,分别为#include <reg52.h>
和#include "reg52.h"
,包含头文件时都不需要在后面加分号。两种写法的区别如下:
- 当使用
<>
包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个头文件,也就是KEILC51/C51/INC
这个文件夹下,如果这个文件夹没有引用的头文件,编译器将会报错。 - 当使用
""
包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。
2.头文件内容
打开该头文件查看其内容,将鼠标移动到 reg52.h
上,单击右键,选择“Open document <reg52.h>”
,即可打开该头文件,如下:
以后若需打开工程中的其他头文件,也可采用这种方式,或者将工程编译后,通过右边工程组“+”下拉找到对应头文件,双击打开。如下:
头文件内容如下:
/*--------------------------------------------------------------------------
REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
#endif
从上面代码中可以看到,该头文件中定义了 52 系列单片机内部所有的功能寄存器,用到了前面讲到的 sfr
和 sbit
这两个关键字,sfr P0=0x80;
语句的意义是,把单片机内部地址 0x80 处的这个寄存器重新起名叫 P0
,以后我们在程序中可直接操作 P0
,就相当于直接对单片机内部的 0x80
地址处的寄存器进行操作。通俗点讲就是通过 sfr
这个关键字,让 Keil
编译器在单片机与人之间搭建一条可以进行沟通的桥梁,我们操作的是 P0
口,而单片机本身并不知道什么是 P0
口,但是它知道它内部地址 0x80
是什么东西。说道这我想大家应该明白了,以后凡是编写 51 内核单片机程序时,我们在源代码的第一行就可以直接包含该头文件。
在上面我们还看到,sbit CY=PSW^7;
语句的意思是,将 PSW
这个寄存器的最高位重新命名为 CY
,以后我们要单独操作 PSW
寄存器的最高位时,便可直接操作 CY
,其他雷同。
最后
以上就是寒冷月光为你收集整理的51单片机 | 单片机工程模板创建的全部内容,希望文章能够帮你解决51单片机 | 单片机工程模板创建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复