单片机c51头文件的解释

简介: #include 是 c51(用于单片机开发的一种c语言)的头文件。  类似于头文件 AT89X51.h。  这两个头文件基本是一样的,只是在使用时对位的定义不一样,  at89x51.h 文件中对 P1.1的操作是写成 P1_1;   reg51.h 文件中的操作则写成 P1^1。

#include <reg51.h>是 c51(用于单片机开发的一种c语言)的头文件。
  类似于头文件 AT89X51.h。
  这两个头文件基本是一样的,只是在使用时对位的定义不一样,
  at89x51.h 文件中对 P1.1的操作是写成 P1_1;
  reg51.h 文件中的操作则写成 P1^1。

打开 reg51.h 可以看到这样的一些内容:
  此文件一般在 C:\KEIL\C51\INC 下 ,INC 文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。
  如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到 INC 文件夹里就可以了。

  sfr 并非标准C语言的关键字,而是 Keil 为能直接访问 80C51 中的 SFR 而提供了一个新的关键词,其用法是:sfrt 变量名=地址值。
  符号 P1_0 来表示 P1.0 引脚。
  在C语言里,如果直接写 P1.0,C编译器并不能识别,而且 P1.0 也不是一个合法的语言变量名,所以得给它另起一个名字,这里起的名为 P1_0, 可是 P1_0 是不是就是 P1.0呢?
  你这么认为,C 编译器可不这么认为,所以必须给它们建立联系,这里使用了 Keil C 的关键字 sbit 来定义,

sbit 的用法有三种:
  第一种方法:sbit 位变量名=地址值
  第二种方法:sbit 位变量名=SFR 名称^变量位地址值
  第三种方法:sbit 位变量名=SFR 地址值^变量位地址值

如定义 PSW 中的 OV 可以用以下三种方法:
  sbit OV=0xd2 (1)说明:0xd2 是 OV 的位地址值
  sbit OV=PSW^2 (2)说明:其中 PSW 必须先用 sfr 定义好
  sbit OV=0xD0^2 (3)说明:0xD0 就是 PSW 的地址值
因此这里用 sfr P1_0=P1^0;就是定义用符号 P1_0 来表示 P1.0 引脚,如果你愿意也可以起 P10 一类的名字,只要下面程序中也随之更改就行了。

1)“文件包含”处理概念
  所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如 reg51.h 然后用#include<reg51.h>包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。

2)寄存器地址及位地址声明的原因
  reg51.h 里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如 sfr P1=0x80; sfr IE=0xA8; sbit EA=0xAF 等。
  sfr P1 = 0x90 这句话表示:P1 口所对应的特殊功能寄存器,P1在内存中的地址为0x90。
  sbit EA=0xAF 这句话表示:EA 这一位的地址为 0xAF。
  程序状态寄存器 Program Status WORD=PSW (程序状态信息)

3)内存、SFR、位、地址等的通俗解释
  前面讲到了寄存器地址和位地址(前提能位寻址)声明的目的是为告诉 C 编译器相应寄存器及其位在内存中的地址,这样我们对寄存器及一些位赋的变量和数值才能正确保存, 然后才能供 CPU 正确的调用,完成相应的功能。上段文字出现了寄存器(SFR)、位、地址、内存等,单片机学习过程中还会出现ROM、RAM 等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下。
  我们把内存比作宾馆,ROM、RAM、SFR 相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少 ROM、RAM、SFR,视各个宾馆或者每种单片机而不同),每层 8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil 编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。
  即:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil 软件才能编译通过。

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
数据格式
用C51单片机制作LED流水的灯
用C51单片机制作LED流水的灯
|
监控 数据处理 开发工具
单片机的C51基础知识介绍2
三、单片机的开发流程和工具 单片机的开发流程通常包括以下几个步骤: 硬件设计:根据应用需求,设计和选择合适的外部电路和接口电路,包括时钟电路、输入输出电路、存储器等。 软件开发:根据应用需求,使用相应的开发工具和编程语言进行软件开发,如C语言、汇编语言等。开发人员需要编写相应的代码,实现系统的功能和控制。 编译和烧录:将开发好的软件代码进行编译和链接,生成可执行的机器代码。然后将机器代码通过编程器烧录到单片机的存储器中。 调试和测试:将烧录好的单片机进行调试和测试,验证系统的功能和性能是否符合要求。可以通过调试工具和示波器等设备进行调试和测试。 单片机的开发工具和软件包括: 开发板
244 0
|
存储 移动开发
80C51单片机----数据传送类指令
80C51单片机----数据传送类指令
988 2
|
存储 移动开发 程序员
80C51单片机的七种寻址方式
80C51单片机的七种寻址方式
781 1
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
416 0
|
数据安全/隐私保护
单片机课程设计——基于C51电子密码锁(源代码)
单片机课程设计——基于C51电子密码锁(源代码)
3-3 51单片机头文件区分以及模板文件创建
3-3 51单片机头文件区分以及模板文件创建
140 0
|
数据安全/隐私保护
C51单片机实现矩阵键盘密码锁
C51单片机实现矩阵键盘密码锁
|
存储 编译器 开发工具
单片机的C51基础知识介绍1
C51是指Intel公司推出的一款8位单片机,它的全称是Intel MCS-51系列单片机,也被称为8051系列单片机。C51系列单片机是一种非常经典和常用的单片机,具有广泛的应用领域和丰富的资源支持。下面将介绍C51单片机的基础知识。 一、C51单片机的特点和优势 1. 8位架构:C51单片机采用8位架构,即每个数据位的宽度为8位,能够处理8位的数据,适用于大部分嵌入式应用。 2. 高度集成:C51单片机具有高度集成的特点,包括CPU、存储器、输入输出端口、定时器、串口等功能模块,能够满足大多数应用的需求。 3. 低功耗设计:C51单片机采用低功耗设计,能够在低电压和低功耗的环境下正常工作,
1035 0
|
存储 C语言 内存技术
单片机原理与应用以及C51编程技术——data,idata,xdata,pdata,code
单片机原理与应用以及C51编程技术——data,idata,xdata,pdata,code
680 0