您的位置 首页 电源

51单片机头文件reg51.h详解

我们在用c语言编程时往往第一行就是头文件,51单片机为reg51h或reg52h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM

咱们在用c言语编程时往往榜首行便是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里边内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就十分多,尽管如此,对一些初度触摸单片机的朋友来说,51的头文件仍是搞不太清楚,今日详细来阐明一下。

1)“文件包含”处理概念

所谓“文件包含”是指在一个文件内将别的一个文件的内容悉数包含进来。由于被包含的文件中的一些界说和指令运用的频率很高,简直每个程序中都或许要用到,为了进步编程功率,削减编程人员的重得劳作,将这些界说和指令独自组成一个文件,如reg51.h,然后用#include包含进来就能够了,这个就适当于工业上的规范零件,拿来直接用就能够了。
2)寄存器地址及位地址声明的原因
reg51.h里边主要是一些特别功用寄存器的地址声明,对能够位寻址的,还包含一些位地址的声明,假如如sfr P1=0x80;sfr IE=0xA8;sbit EA=0xAF等。

sfr P1 = 0x90这句话表明:P1口所对应的特别功用寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表明EA这一位的地址为0xAF。
留意这儿呈现了一个运用很频频的sfr和sbit。

sfr表明特别功用寄存器的意思,它并非规范C言语的关键字,而是Keil为能直接拜访80C51中的SFR而供给了一个新的关键词,其用法是:sfr特别功用寄存器名=地址值(留意关于头文件里“特别功用寄存器名”,用户实际上也能够修正的,如P1=0x80,也可改为A1=0x80,但sfr 和地址值则不能更改,否者会编译犯错。)
sbit表明位的意思,它也对错规范C言语的关键字,编写程序时如需操作寄存器的某一位(可位寻址的寄存器才干用)时,需界说一个位变量,此刻就要要到sbit,如sbit deng=P1^0,sbit EA= 0xAF;需求留意的是,位界说时有些特别,用法有三种:

榜首种办法:sbit位变量名=寄存器位地址值

第二种办法:sbit位变量名=SFR称号^寄存器位值(0-7)

第三种办法:sbit位变量名=SFR地址值^寄存器位值

如:

sbit IT0=0x88(1)阐明:0x88是IT0的位地址值

sbit deng=P1^2(2)阐明:其间P1有必要先用sfr界说好

sbit EA=0xA8^7(3)阐明:0xA8便是IE寄存器的地址值
以上三种界说办法需留意的是 IT0 deng EA可由用户随意界说,但有必要满意C言语对变量名的界说规矩。除些外其它的则有必要依照上面的格局写,如“称号^变量位地址值”中“^”,它是由keil软件的规则的,不能写成其它的,只能这样能才编译经过。
以上是对寄存器地址和位地址的界说和声明作了解说,咱们需求牢牢记住:只要对寄存器及相关位进行声明地址后,咱们才干对其进行赋相关的值,keil软件才干编译经过。至于说为什么,这或许一句话两句话也说不清楚。
3)内存、SFR、位、地址等的浅显解说

前面讲到了寄存器地址和位地址(条件能位寻址)声明的意图是为告知C编译器相应寄存器及其位在内存中的地址,这样咱们对寄存器及一些位赋的变量和数值才干正确保存,然后才干供CPU正确的调用,完结相应的功用。
上段文字呈现了寄存器(SFR)、位,地址、内存等,单片机学习进程中还会呈现ROM、RAM等名词,或许咱们觉得不是很好了解,这儿能够浅显的解说一下,如下面三个图所示。
咱们把内存比作宾馆,ROM、RAM、SFR适当于宾馆里详细的有三种不同功用楼层(详细这个宾馆多少层即多少ROM、RAM、SFR,视各个宾馆或许每种单片机而不同),每层8个房间适当于8位,每个房间要么住男人要么住女性适当于每位要么放入数字1要么放入数字0,keil编译器就适当于宾馆的工作人员,旅客去住旅馆适当写程序的进程,住宾馆的人有必要事前要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才干把你带到你的房间里去(这儿假定这个宾馆能够由旅客自己决定住哪个房间)。即:只要对寄存器及相关位进行声明地址后,咱们才干对其进行赋相关的值,keil软件才干编译经过。

4)REG51.H头文件原文及解说
翻开reg51.h能够看到这样的一些内容(此文件一般在C:KEILC51INC下,INC文件夹根目录里有不少头文件,而且里边还有很多以公司分类的文件夹,里边也都是相关产品的头文件。假如咱们要运用自己写的头文件,运用的时分只需把对应头文件拷贝到INC文件夹里就能够了。)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/317355.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部