PIC單片機(jī)C語言程序設(shè)計(2)
五、C語言的標(biāo)識符和關(guān)鍵字
一個完整的PIC單片機(jī)C語言程序,通常由包含文件(即頭文件1,變量定義、變量說明、函數(shù)定義、函數(shù)體和注釋等六部分等組成。
1.C語言的標(biāo)識符
所謂標(biāo)識符,實際上是一些由程序編寫者自定義的名稱,類似于PIC單片機(jī)匯編語言中給寄存器(RAM)的命名。C語言中所用到的變量名、函數(shù)名、數(shù)組名、文件名等都是由標(biāo)識符組成的。
標(biāo)識符是由一串字母(常指英語字母)、數(shù)字和下線符(或稱下劃線)組成的字符串。標(biāo)識符的第一個字符必須是字母或下線符。按照慣例,以下線符開頭的標(biāo)識符是系統(tǒng)程序?qū)S玫?,程序員最好不用。程序員可將下線符作為分段符使用,如SUM_1。
同一字母的大小寫被視為不同的標(biāo)識符。即同一字母的大小寫是不同的標(biāo)識符。
不同的C編譯器對標(biāo)識符的長度有不同的限制。為了避免所編寫的源文件能被所有C編譯器認(rèn)可,可將標(biāo)識符的長度限定在8個字符以內(nèi)(即1個字節(jié))。
標(biāo)識符的命名(即自定義),最好簡捷、含意清晰、便于閱讀,如用deIay表示延時;用sum表示求和;用loop表示循環(huán)等。
2.C語言的關(guān)鍵字
關(guān)鍵字,又稱保留字,是指那些已由系統(tǒng)作了特殊定義、具有特定含義的標(biāo)識符。,程序員編寫C程序時,可用關(guān)鍵字來對所用函數(shù)參數(shù)進(jìn)行說明、定義一些物理量,它們是C語言語句的重要組成部分,有的還直接組成簡單語句。因此,用戶是不能將此類標(biāo)識符(關(guān)鍵字)作為自定義標(biāo)識符使用的。
C語言的關(guān)鍵字分為三類,即數(shù)據(jù)類、程序控制類和預(yù)處理類,如表1所示。
表1
表1中所列關(guān)鍵字,讀者在編寫C程序時,將逐步學(xué)會其使用。
六、C語言的數(shù)據(jù)類型
在編寫C語言程序時,首先要涉及的是數(shù)據(jù)描述和功能描述。數(shù)據(jù)是實現(xiàn)功能的過程,功能是數(shù)據(jù)運算(或處理)的結(jié)果,沒有數(shù)據(jù),C程序就無法實現(xiàn)單片機(jī)規(guī)定的功能,可見數(shù)據(jù)在C語言程序中的重要性。
C語言的數(shù)據(jù)類型,有基本型、構(gòu)造型、指針型三類。對此,筆者將在使用時逐一介紹。
1.標(biāo)準(zhǔn)型
標(biāo)準(zhǔn)型數(shù)據(jù)屬于基本型數(shù)據(jù),是由C語言本身提供的基本數(shù)據(jù)類型,結(jié)構(gòu)簡單、使用頻率高。下面以實例對C語言程序中的標(biāo)準(zhǔn)型數(shù)據(jù)予以說明。
標(biāo)準(zhǔn)型數(shù)據(jù)又分為整型數(shù)據(jù)、實型數(shù)據(jù)和字符型數(shù)據(jù)三種,每種數(shù)據(jù)又有常量和變量之分。筆者將其分類以表格形式列出,既可供初學(xué)者編寫C語言程序時查找,亦可與本文中實例程序的注釋進(jìn)行對比學(xué)習(xí),以加深對標(biāo)準(zhǔn)型數(shù)據(jù)的理解。
(1)整型常量。
1.while語句
(1)格式:while(條件表達(dá)式)
(2)功能:程序運行時,先判斷條件表達(dá)式,當(dāng)條件表達(dá)式的值為非零(即為“真”)時,執(zhí)行while語句中的內(nèi)嵌語句,即先判斷條件表達(dá)式,再執(zhí)行語句。當(dāng)條件表達(dá)式為零時,退出循環(huán);若表達(dá)式一開始就為0,其while語句一次也不執(zhí)行;若條件表達(dá)式恒為1,則程序在while體內(nèi)一直循環(huán)。
(3)程序?qū)嵗?
1)硬件電路和功能硬件電路同《PIC單片機(jī)C語言程序設(shè)計(1)》一文的圖1(見《電子制作》2009年第10期)。圖中的RA0口外接的微動開關(guān)KO,作為程序的起動開關(guān)。KO未按下時。單片機(jī)系統(tǒng)處于等待狀態(tài),按一次KO,系統(tǒng)依次進(jìn)行以下工作:RBO口外接的LEDO點亮→延時→LEDO熄滅→RB2外接的LED2點亮→延時→LED2滅→RB4外接LED4點亮→延時→LED4滅→執(zhí)行間斷語句break終止循環(huán)→點亮RB6外接的LED6→回到等待狀態(tài),直到RA0外接的微動開關(guān)KO再次按下,再重復(fù)上述過程。
2)源文件清單。
本實例2的程序清單如下(源文件名PIC02.C):
說明:
① 上述程序中,關(guān)鍵字break、continue和return等組成的簡單語句的使用是略有區(qū)別的。具體區(qū)別如下:
間斷語句break:程序運行到此就終止循環(huán),跳出while(1)的循環(huán)體,執(zhí)行該循環(huán)體緊接在后面的語句:
· 繼續(xù)語句continue:如果把該程序中的break語句換成繼續(xù)語句continue。程序運行到此便立即執(zhí)行由while(1)開始功能的程序,即程序在該循環(huán)體內(nèi)不斷地運行,等效于不用continue;語句;·return語句:當(dāng)把該程序中的break換成return語句時,程序運行到此就會立即返回主程序運行。
讀者學(xué)習(xí)C語言時,一定要將實例2源程序中的關(guān)鍵字“break”分別用“coutinue”和“return”代換并運行程序,同時觀察使用三種不同的關(guān)鍵字時LED指示燈的不同狀態(tài),方能體會出三者的差異。
② 關(guān)于帶形式參數(shù)(簡稱形參)的延時函數(shù)。
實例2所用的延時函數(shù)與實例1不同。實例1(見《電子制作》2009年第10期)用的是無參數(shù)函數(shù),功能簡單,一個函數(shù)完成一定的延時。實例2用的是有參數(shù)延時函數(shù),一個函數(shù)可完成不同的延時(如上述實例2 中的延時1、延時2、延時3、延時4)。這是因為,帶形參函數(shù)(如實例2中的延時函數(shù)v0id delay(K))可以借助參數(shù)的傳遞功能來完成不同時間的設(shè)置,這是匯編語言所無法做到的。由此可見,采用C語言可大大簡化程序的編寫工作。
鑒于形參對熟悉匯編語言的設(shè)計人員來說是一個全新的概念,有關(guān)C語言的函數(shù)參數(shù)傳遞功能,我們在后續(xù)的文章中還將進(jìn)一步介紹,以加深大家對其的理解。
整型常量,是指在程序運行過程中數(shù)值保持不變的量,在編寫C程序時,整型常量用關(guān)鍵字cONST進(jìn)行定義。表2給出了各種常量的類型、表示方法及示例說明。
表2
(2)整型變量。
整型變量。是指在程序運行過程中數(shù)值會改變的量。整型(即整數(shù)類型)變量的基本型是lnt。
Int可以保存一個整數(shù),并允許在_nl前加上基本型、短整型、長整型,以及無符號型等四種整型類型。下面分別加以說明1)基本型:標(biāo)志是int。
2)短整型:標(biāo)志是short int。
3)長整型:標(biāo)志是long int。
4)無符號型:存儲單元中,全部二進(jìn)制位均用來存放整數(shù)自身。而不包括符號位。無符號型又分為無符號整型、無符號短整型、無符號長整型三種。
①無符號整型:標(biāo)志是unsigned int:
②無符號短整型:標(biāo)志是unsigned short int;
③無符號長整型:標(biāo)志是unsigned Iong int。
以上C語言變量的要點,是相關(guān)的關(guān)鍵字,以及每個整型變量的取值范圍,即長度(二進(jìn)制位個數(shù))。
PlC單片機(jī)C語言的整型變量、數(shù)據(jù)名稱、取值范圍如表3所示。表中的內(nèi)容,在編寫C程序時經(jīng)常使用,初學(xué)者應(yīng)熟練掌握。
表3
說明:1.表3列出了整型變量的取值范圍。例如,從表3中可以看出,無符號長整型變量unsigned long int的最大取值可達(dá)10位數(shù),將其用于延時函數(shù),僅用一條循環(huán)語句,延時便可達(dá)20小時以上(參看下文中的實例2)。2.對于表3中的字符型(char)、浮點型(float)和雙精度型doable等整型變量,將在本連載后續(xù)文章的程序使用到時進(jìn)行說明。
七、C語言的控制循環(huán)語句
在C語言程序中,會用到多種功能語句??刂蒲h(huán)語句(下稱循環(huán)語句)便是其中之一。
C語言的循環(huán)語句有三種,即while語句、do while語句和for語句。循環(huán)語句一般由循環(huán)控制條件來控制循環(huán)的重復(fù)次數(shù)。如果控制條件沒有完成,要想終止循環(huán),可在循環(huán)體中用間斷語句break、返回語句retum,或者用繼續(xù)語句continue來終止當(dāng)前循環(huán)周期中的操作,使控制進(jìn)入其他程序段。下面逐一進(jìn)行介紹,并通過程序?qū)嵗齺碚f明其應(yīng)用,以利大家加深理解。
標(biāo)簽: 程序設(shè)計