前言
本教程将向大家介绍如何使用KEIL C51 软件以及如何创建51 单片机工程。通过本教程的学习,让大家创建属于自己的51 单片机工程模板,为后面学习51 单片机编程做好铺垫。
一、51 单片机工程模板创建
1.新建工程
首先在电脑任意位置新建一个文件夹,命名为“51 单片机工程模板创建”。
打开KEIL C51 软件,新建一个工程,工程名根据喜好命名,但是要注意使用英文,如果使用中文名可能会出现一些奇怪的错误,这里我们命名为template,直接保存在刚才创建的“51 单片机工程模板创建”文件夹下。具体
步骤如下:
2.选择CPU 型号
这个根据开发板使用的CPU 具体的型号来选择,我们开发板使用的是STC89C52 或STC89C516 芯片。在KEIL C51 软件内找不到这种型号的单片机,因为51 内核单片机具有通用性,所以在这里可以任选一款89C52 就行,Keil 软件的关键是程序代码的编写,而非用户选择什么硬件,在这里我们选择Ateml 的89C52 来说明。具体操作如下:
该对话框内容是提示我们是否要将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 仿真器且你的仿真器安装好驱动并且连接了电脑和板子,那么就可以开始配置。如果使用我们公司的51 仿真器的朋友,相关驱动的安装请查看“1--用户必看4--普中51 仿真器使用说明”教程。
最后点击OK 按钮即可。然后双击工程组中的main.c 文件, 我们输入如下内容:
上图红色标记1 中三个按钮都可以对代码编译,但其功能不同:
第一个:它是编译当前界面所在的一个C 文件。
第二个:联合编译整个工程,发生修改的文件重新编译,并生成可执行文件。
第三个:联合编译整个工程,所有文件都重新编译,并生成可执行文件。
从上面说明可以看出,一般情况下,我们不使用第三个编译按钮,第二个最常用。因为第三个每次都把所有的文件都重新编译,需要消耗大量的时间。当工程比较小的时候,感觉不到,但是工程较大的时候就不行了。
二、reg52.h 头文件介绍
1.头文件作用
在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。在代码中加入头文件有两种书写方法,分别为#include 和#include"reg52.h",包含头文件时都不需要在后面加分号。两种写法的区别如下:
①当使用<>包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个头文件,也就是KEILC51/C51/INC 这个文件夹下,如果这个文件夹没有引用的头文件,编译器将会报错。
②当使用""包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。
2.头文件内容
打开该头文件查看其内容,将鼠标移动到reg52.h 上,单击右键,选择“Open document ”,即可打开该头文件,如下:
以后若需打开工程中的其他头文件,也可采用这种方式,或者将工程编译后,通过右边工程组“+”下拉找到对应头文件,双击打开。如下:
从头文件代码中可以看到,该头文件中定义了52 系列单片机内部所有的功能寄存器,用到了前面讲到的sfr 和sbit 这两个关键字,“sfr P0=0x80;”语句的意义是,把单片机内部地址0x80 处的这个寄存器重新起名叫P0,以后我们在程序中可直接操作P0,就相当于直接对单片机内部的0x80 地址处的寄存器进行操作。通俗点讲就是通过sfr 这个关键字,让Keil 编译器在单片机与人之间搭建一条可以进行沟通的桥梁,我们操作的是P0 口,而单片机本身并不知道什么是P0 口,但是它知道它内部地址0x80 是什么东西。说道这我想大家应该明白了,以后凡是编写51 内核单片机程序时,我们再源代码的第一行就可以直接包含该头文件。在上面我们还看到,“sbit CY=PSW^7;”语句的意思是,将PSW 这个寄存器的最高位重新命名为CY,以后我们要单独操作PSW 寄存器的最高位时,便可直接操作CY,其他雷同