文章目录

  • 一、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 仿真器的时候出现仿真失败,这些问题都是在这个地方没有配置好导致的。

  1. 选择魔术棒工具的 Output 选项卡,勾选红色框 3,即程序编译成功后会产生 HEX 文件。具体操作如下:
  2. 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 软件内修改编程区字体大小问题。

  1. 首先在 KEIL C51 软件的工具栏中内找到一个“小扳手”,如下所示:
  2. 然后点击它,弹出如下设置界面,按照设置界面的红色标号顺序进入
  3. 点击标号 5 按钮时用于选择设置当前字体大小等信息的,选择适合自己的字体大小即可,然后点击 OK,设置完成。如下所示:

    最后设置完成后,编程区内的字体就会发生改变。

二、reg52.h 头文件介绍

1.头文件作用

  在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。在代码中加入头文件有两种书写方法,分别为#include <reg52.h>#include "reg52.h",包含头文件时都不需要在后面加分号。两种写法的区别如下:

  • 当使用<>包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个头文件,也就是 KEILC51/C51/INC 这个文件夹下,如果这个文件夹没有引用的头文件,编译器将会报错。
  • 当使用""包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。

2.头文件内容

  打开该头文件查看其内容,将鼠标移动到 reg52.h 上,单击右键,选择“Open document <reg52.h>”,即可打开该头文件,如下:

以后若需打开工程中的其他头文件,也可采用这种方式,或者将工程编译后,通过右边工程组“+”下拉找到对应头文件,双击打开。如下:

头文件内容如下:

/*--------------------------------------------------------------------------
REG52.HHeader 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 系列单片机内部所有的功能寄存器,用到了前面讲到的 sfrsbit 这两个关键字,sfr P0=0x80;语句的意义是,把单片机内部地址 0x80 处的这个寄存器重新起名叫 P0,以后我们在程序中可直接操作 P0,就相当于直接对单片机内部的 0x80 地址处的寄存器进行操作。通俗点讲就是通过 sfr 这个关键字,让 Keil 编译器在单片机与人之间搭建一条可以进行沟通的桥梁,我们操作的是 P0 口,而单片机本身并不知道什么是 P0 口,但是它知道它内部地址 0x80 是什么东西。说道这我想大家应该明白了,以后凡是编写 51 内核单片机程序时,我们在源代码的第一行就可以直接包含该头文件。
  在上面我们还看到,sbit CY=PSW^7;语句的意思是,将 PSW 这个寄存器的最高位重新命名为 CY,以后我们要单独操作 PSW 寄存器的最高位时,便可直接操作 CY,其他雷同。

51单片机 | 单片机工程模板创建相关推荐

  1. 51单片机除c语言 中断嵌套,关于51系列单片机中断嵌套 - 关于单片机中断嵌套总结...

    关于51系列单片机中断嵌套 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到 ...

  2. uIP TCP/IP协议栈在51系列单片机上的应用

    uIP 协议栈是一种免费的可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统.本文分析了uIP协议栈的结构和应用接口,并讨论了如何将其应用到51系列单片机上. 关键字: ...

  3. 51系列单片机采用脉冲宽度调制(PWM)

    介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是 通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的 ...

  4. 关于51/STC单片机中断优先级的调整

    来源: 单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html 目录 内容简述 理论 中断源类型 IP寄 ...

  5. 实物1操作:stc8a单片机和普通51/52单片机的异同以及下载步骤(点亮一盏LED为例)

    1.stc8a系列单片机,比普通的51/52单片机运行速度快: stc8a单片机是1T单片机,普通的51/52单片机,比如stc89c82RC等单片机是12T单片机. 1T和12T单片机是什么意思呢? ...

  6. STM32Keil工程模板创建(详细配图)

    STM32F103基于库函数的工程模板创建 一.Keil软件安装 1.下载keil(MDK版) 2.安装支持包 3.下载对应固件库文件 二.工程模板创建 1.创建文件夹 2.复制固件库相关文件 三.k ...

  7. 如何学习单片机——单片机学习的感悟——以简单的外设蜂鸣器为例介绍单片机学习方法

       本文主要介绍如何学习单片机,分享一下我学单片机的一些感悟,以常见简单的外设蜂鸣器为例介绍单片机学习方法.     大家有没有遇到这种情况,单片机学着学着就迷茫了,或者说学过的东西,过段时间就忘了 ...

  8. 可移植bit-field与driverlib兼容的C2000控制器工程模板创建及SysConfig配置

    可移植bit-field与driverlib兼容的C2000控制器工程模板创建及sysconfig配置 前言 步骤 创建工程 库函数支撑文件拷贝 寄存器支撑文件拷贝 SysConfig配置 总结 20 ...

  9. 蓝桥杯51单片机学习——proteus8关于51工程文件的创建

    1.新建工程 2.选择路径 3.要设计电路,选隐含的模式 4.选择是否创建PCB板 一般不创建pcb 5.因为要进行仿真,选择固件模式 因为学习51单片机,所以选择AT89C5151控制器: 结合ke ...

最新文章

  1. SQL server2008 无法启动调试存储过程
  2. myeclipse安装、导入一个项目、解决2个程序错误、解决运行错误、运行项目
  3. nodejs——URL 基础API
  4. python100以内自然数之和_python教程:利用while求100内的整数和
  5. 中科院信工所经验_保研经验分享:实力+经验+运气=保研成功
  6. java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
  7. 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
  8. linux java bin 安装_linux下安装后缀为bin的Java JDK
  9. python变量_Python变量
  10. 日志平台查询异常,没有打印异常信息
  11. php debugdumpparams,PHP PDOStatement::debugDumpParams讲解
  12. 抖音群口令emoji表情转换群ID
  13. 如何将PDF转换成xls格式的表格
  14. 仿TT语音,语音游戏陪玩APP源码,社交属性强大
  15. 方维直播最新版服务端网站搭建3.1--1
  16. 国际贸易术语解释通则(DDU 未完税交货(……指定目的港))
  17. 液晶显示屏的分辨率详解?
  18. 静态库与动态库之间的区别
  19. Bugku Misc 清凉一夏 wp
  20. 蜜友工作室来博客园开博了

热门文章

  1. 本地客户端(自己的电脑)连接远程Oracle数据库(服务器端),客户端安装步骤
  2. Regional 做题记录 (50/50)
  3. 京东数据中心主要基础设施系统(一)
  4. 网络安全实验室|网络信息安全(基础关)
  5. PTA团体程序设计天梯赛-练习集
  6. selenium学习之安全微伴自动完成
  7. Windows 7关闭睡眠(休眠)模式和删除休眠文件
  8. 描述物理海洋学--第八章学习笔记
  9. 《Python编程 从入门到实践》简单读书笔记
  10. 打孔纸带计算机运行原理