什么是C51数据类型扩充定义
扫描二维码
随时随地手机看文章
数据元(Data Element),也称为数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元,在一定语境下,通常用于构建一个语义正确、独立且无歧义的特定概念语义的信息单元。数据元可以理解为数据的基本单元,将若干具有相关性的数据元按一定的次序组成一个整体结构即为数据模型。
数据元一般由对象类、特性和表示3部分组成:
(1)对象类(Object Class)。是现实世界或抽象概念中事物的集合,有清楚的边界和含义,并且特性和其行为遵循同样的规则而能够加以标识。
(2)特性(Property)。是对象类的所有个体所共有的某种性质,是对象有别于其他成员的依据。
(3)表示(Representation)。是值域、数据类型、表示方式的组合,必要时也包括计量单位、字符集等信息。对象类是我们所要研究、收集和存储相关数据的实体,例如人员、设施、装备、组织、环境、物资等。特性是人们用来区分、识别事物的一种手段,例如人员的姓名、性别、身高、体重、职务,坦克的型号、口径、高度、长度、有效射程等。表示是数据元被表达的方式的一种描述。表示的各种组成成分中,任何一个部分发生变化都将产生不同的表示,例如人员的身高用“厘米”或用“米”作为计量单位,就是人员身高特性的两种不同的表示。数据元的表示可以用一些具有表示含义的术语作标记,例如名称、代码、金额、数量、日期、百分比等。
数据元基本模型中,对象类对应于数据模型中的实体、特性和表示对应于数据模型中的属性。
单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。对于大多数初学者来讲,这些寄存器的声明已经完全被包含在51单片机的特殊功能寄存器声明头文件“reg51.h”中了,初学者若不想深入了解,完全可以暂不操作它。
sfr—特殊功能寄存器的数据声明,声明一个8位的寄存器。
sfrl6—16位特殊功能寄存器的数据声明。
sbit—特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。
bit一位变量声明,当定义一个位变量时可使用此符号。
例如:sfr SCON=0x98;
SCON是单片机的串行口控制寄存器,这个寄存器在单片机内存中的地址为0x980这样声明后,我们在以后要操作这个控制寄存器时,就可以直接对SCON进行操作,这时编译器也会明白,我们实际要操作的是单片机内部0x98地址处的这个寄存器,而SCON仅仅是这个地址的一个代号或是名称而已,当然,我们也可以定义成其他的名称。
例如:sfr16T2=0xCC;
声明一个16位的特殊功能寄存器,它的起始地址为OxCC。
例如:sbit TI=SCON^1;
SCON是一个8位寄存器,SCON^1表示这个8位寄存器的次低位,最低位是SCON^0;SCON^7表示这个寄存器的最高位。该语句的功能就是将SCON寄存器的次低位声明为TI,以后若要对SCON寄存器的次低位操作,则可直接操作TI。
C51中常用的头文件
通常有reg51.h,reg52.h,math.h,ctype.h,stdio.h,stdlib.h,absacc.h,intrins.h。
但常用的却只有reg51.h或reg52.h,math.h。
reg51.h和reg52.h是定义51单片机或52单片机特殊功能寄存器和位寄存器的,这两个头文件中大部分内容是一样的,52单片机比51单片机多一个定时器T2,因此,reg52.h中也就比reg51.h中多几行定义T2寄存器的内容。
math.h是定义常用数学运算的,比如求绝对值、求方根、求正弦和余弦等,该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。
当我们对特殊功能寄存器有了基本的了解后,大家就可以自己动手来写具有自己风格的头文件了。例如,在TX-1C单片机学习板上,我们用的是STC公司的51内核单片机,该单片机内部除了一般51单片机所具有的功能外,还有一些特殊功能,当我们要使用这些特殊功能时,就要对它进行另外的操作,此时就需要我们自己定义这些特殊功能寄存器的名称,我们可以根据芯片说明文档上所注明的各个寄存器地址来定义它们,关于这方面的扩展,我们会在以后的实际应用中再次提到。