单片机c51头文件的解释

发布者:advancement4最新更新时间:2024-08-19 来源: cnblogs关键字:单片机  c51  头文件 手机看文章 扫描二维码
随时随地手机看文章

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

打开 reg51.h 可以看到这样的一些内容:
  此文件一般在 C:KEILC51INC 下 ,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包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。

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 软件才能编译通过。


关键字:单片机  c51  头文件 引用地址:单片机c51头文件的解释

上一篇:单片机keil C中的data、bdata、idata、xdata、hdata、pdata、code解释
下一篇:51单片机数据传送指令

推荐阅读最新更新时间:2024-11-09 12:30

GD32 MCU内部温度传感器如何使用,以及适合哪种应用场景?
GD32 MCU全系列产品均内置温度传感器,内部温度传感器可以用于测量器件周围温度及变化,传感器的输出电压连接到ADC的第16通道,可被ADC转换成数字量。 温度传感器输出电压随温度线性变化,由于生产过程中的多样化,温度变化曲线的偏移在不同的芯片上会存在不同,但斜率基本一致,因而内部温度传感器更适合测量温度变化,即相对温度,而不太适合测量绝对温度。如果需要测量绝对温度,且对温度的精度要求并不是很高的情况下,可以使用外置温度传感器来校准不同芯片出厂的偏移误差,这样就可以用于环境温度的测量。 下面为大家介绍内置温度传感器参数以及如何使用。 内置温度传感器参数如下图所示,其中TL为温度线性误差,Avg_Slope为斜率,V25为
[单片机]
GD32 <font color='red'>MCU</font>内部温度传感器如何使用,以及适合哪种应用场景?
51单片机小白零基础教程——数码管的静态显示,以及数码管拓展程序
一、数码管的显示原理 数码管:是一种可以显示数字和其他信息的电子设备,可以看成是多个二极管的组成。 数码管有单位数码管、双位数码管、四位数码管,我们开发板上的数码管为2个四位数码管。 数码管显示原理:通过点亮内部的发光二极管来发光 引脚:又被称为管脚,从集成电路内部电路引出与外围电路的接线,所有的引脚构成了这块芯片的接口 单位数码管的引脚有10个,内部一共有8个小的发光二级管,还有2个引脚是公共端,其实只有一个公共端,但是生产厂家为了封装统一,把这2个引脚连接在了一起。 数码管根据其公共端所接的阳极和阴极的不同,分为了共阴极数码管和共阳极数码管。 共阳极接法:几个二极管的阳极接在一起,接到VCC(高电平),
[单片机]
51<font color='red'>单片机</font>小白零基础教程——数码管的静态显示,以及数码管拓展程序
51单片机学习笔记———13.1DS1302实时时钟原理部分
DS1302实时时钟 芯片原理图: 引脚图: 需要注意的是,VCC1跟VCC2都外接了电容,只是容量不一样,同常备用电源VCC2的电容值是VCC1电容值的100倍,这也不难理解,如果断电,VCC2将能够提供较长一段时间的电力。 VCC1(主电源)-----------过滤滤波作用 VCC2(备用电源)--------断电时放电提供电力 X1与X2引脚接上晶振以获取实时时间 各种不同的引脚有着不一样的作用,我们在这里只介绍了一些特殊引脚,如有所需,请自行查阅官方数据手册。 DS1302内部有8个寄存器,分别掌管着秒,分,时,天,星期,月,年还有一个写入保护。 我们将依次介绍,首先看原理图: 寄存器0: “B
[单片机]
51<font color='red'>单片机</font>学习笔记———13.1DS1302实时时钟原理部分
STM32 单片机开发中的 RTOS应用分析
 很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。   要从裸机的思维转变到 RTOS(Real Time Operating System)的思维,其实需要一个过程,而且开始的一段时间会很痛苦。但过一段时间理解了一些内容,能写一些Demo之后,你会发现其实RTOS也不难。   现在 FreeRTOS 在CubeMX工具中可以直接配置并使用,相当方便。   为什么需要 RTOS   为什么我们需要RTOS?就像最开始学C编程时,老师告诉我们,指针很重要,那时你肯定有一个大的疑问,指针到底有什么好
[单片机]
51单片机学习:外部中断0实验
实验名称:外部中断0实验 接线说明: 实验现象:下载程序后,当按下K3键可控制D1指示灯亮灭 注意事项:将红外接收传感器取下,防止对P3.2口干扰 ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; //定义独立按键K3控制脚 sbit KEY3=P3^2; /**********
[单片机]
华大电子MCU-CIU32F011x3、CIU32F031x5嵌入式闪存
5. 嵌入式闪存(FLASH) 5.1. 模块介绍 华大电子MCU CIU32F011x3、CIU32F031x5 集成了嵌入式 FLASH 控制模块,该模块控制 FLASH 的擦除、编程以及读取数据。上电时会从 FLASH 中读取相关数据进行校验以及初始化配置,保证芯片程序在正确且安全的情况下运行。 5.2. 功能特点 • 支持高达 64K 主闪存空间的 FLASH • 存储器结构 – 主闪存空间 64K 字节 – 副闪存空间 4.5K 字节 • 指出对闪存空间的擦写、编程和读操作 • 支持对闪存空间访问限制和擦写保护 • 支持低功耗模式 5.3. 功能说明 5.3.1. 闪存结构 闪存空间由 32 位宽
[单片机]
华大电子<font color='red'>MCU</font>-CIU32F011x3、CIU32F031x5嵌入式闪存
如何使用AVR微控制器ATmega16连接霍尔传感器
霍尔传感器的工作原理是基于1869年Edwin Hall提出的霍尔效应。提出的声明说:“霍尔效应是在电导体上产生电压差(霍尔电压),横向于导体中的电流和垂直于电流的外加磁场。“ 那么,什么可以是最简单的声明形式,以更好的方式理解它?在本本中,将通过实际示例逐步说明。霍尔传感器将与Atmega16微控制器连接,一个LED将用于显示磁铁将被带到霍尔传感器附近时的效果。 什么是霍尔效应? 霍尔效应与磁场中的移动电荷有关。要以实用的方式理解,请将电池连接到导体,如下图(a)所示。电流(i)将开始从导体流过电池的正极到负极。 电子流(e-)将与电流的方向相反,即从电池的负极端子通过导体到电池的正极端子。在我们测量导体之间的电
[单片机]
如何使用AVR<font color='red'>微控制器</font>ATmega16连接霍尔传感器
如何选择合适的MCU
什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。 STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。下面我们以最近最为火爆的两个
[单片机]
如何选择合适的<font color='red'>MCU</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved