什么是C51數(shù)據(jù)類型擴充定義
數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標識、表示和允許值的數(shù)據(jù)單元,在一定語境下,通常用于構(gòu)建一個語義正確、獨立且無歧義的特定概念語義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若干具有相關(guān)性的數(shù)據(jù)元按一定的次序組成一個整體結(jié)構(gòu)即為數(shù)據(jù)模型。
數(shù)據(jù)元一般由對象類、特性和表示3部分組成:
(1)對象類(Object Class)。是現(xiàn)實世界或抽象概念中事物的集合,有清楚的邊界和含義,并且特性和其行為遵循同樣的規(guī)則而能夠加以標識。
(2)特性(Property)。是對象類的所有個體所共有的某種性質(zhì),是對象有別于其他成員的依據(jù)。
(3)表示(Representation)。是值域、數(shù)據(jù)類型、表示方式的組合,必要時也包括計量單位、字符集等信息。對象類是我們所要研究、收集和存儲相關(guān)數(shù)據(jù)的實體,例如人員、設(shè)施、裝備、組織、環(huán)境、物資等。特性是人們用來區(qū)分、識別事物的一種手段,例如人員的姓名、性別、身高、體重、職務(wù),坦克的型號、口徑、高度、長度、有效射程等。表示是數(shù)據(jù)元被表達的方式的一種描述。表示的各種組成成分中,任何一個部分發(fā)生變化都將產(chǎn)生不同的表示,例如人員的身高用“厘米”或用“米”作為計量單位,就是人員身高特性的兩種不同的表示。數(shù)據(jù)元的表示可以用一些具有表示含義的術(shù)語作標記,例如名稱、代碼、金額、數(shù)量、日期、百分比等。
數(shù)據(jù)元基本模型中,對象類對應(yīng)于數(shù)據(jù)模型中的實體、特性和表示對應(yīng)于數(shù)據(jù)模型中的屬性。
單片機內(nèi)部有很多的特殊功能寄存器,每個寄存器在單片機內(nèi)部都分配有唯一的地址,一般我們會根據(jù)寄存器功能的不同給寄存器賦予各自的名稱,當我們需要在程序中操作這些特殊功能寄存器時,必須要在程序的最前面將這些名稱加以聲明,聲明的過程實際就是將這個寄存器在內(nèi)存中的地址編號賦給這個名稱,這樣編譯器在以后的程序中才可認知這些名稱所對應(yīng)的寄存器。對于大多數(shù)初學者來講,這些寄存器的聲明已經(jīng)完全被包含在51單片機的特殊功能寄存器聲明頭文件“reg51.h”中了,初學者若不想深入了解,完全可以暫不操作它。
sfr—特殊功能寄存器的數(shù)據(jù)聲明,聲明一個8位的寄存器。
sfrl6—16位特殊功能寄存器的數(shù)據(jù)聲明。
sbit—特殊功能位聲明,也就是聲明某一個特殊功能寄存器中的某一位。
bit一位變量聲明,當定義一個位變量時可使用此符號。
例如:sfr SCON=0x98;
SCON是單片機的串行口控制寄存器,這個寄存器在單片機內(nèi)存中的地址為0x980這樣聲明后,我們在以后要操作這個控制寄存器時,就可以直接對SCON進行操作,這時編譯器也會明白,我們實際要操作的是單片機內(nèi)部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單片機特殊功能寄存器和位寄存器的,這兩個頭文件中大部分內(nèi)容是一樣的,52單片機比51單片機多一個定時器T2,因此,reg52.h中也就比reg51.h中多幾行定義T2寄存器的內(nèi)容。
math.h是定義常用數(shù)學運算的,比如求絕對值、求方根、求正弦和余弦等,該頭文件中包含有各種數(shù)學運算函數(shù),當我們需要使用時可以直接調(diào)用它的內(nèi)部函數(shù)。
當我們對特殊功能寄存器有了基本的了解后,大家就可以自己動手來寫具有自己風格的頭文件了。例如,在TX-1C單片機學習板上,我們用的是STC公司的51內(nèi)核單片機,該單片機內(nèi)部除了一般51單片機所具有的功能外,還有一些特殊功能,當我們要使用這些特殊功能時,就要對它進行另外的操作,此時就需要我們自己定義這些特殊功能寄存器的名稱,我們可以根據(jù)芯片說明文檔上所注明的各個寄存器地址來定義它們,關(guān)于這方面的擴展,我們會在以后的實際應(yīng)用中再次提到。