PIC單片機C語言程序設計(2)

2020-12-15 電子產品世界

 五、C語言的標識符和關鍵字

本文引用地址:http://www.eepw.com.cn/article/171168.htm

  一個完整的PIC單片機C語言程序,通常由包含文件(即頭文件1,變量定義、變量說明、函數定義、函數體和注釋等六部分等組成。

  1.C語言的標識符

  所謂標識符,實際上是一些由程序編寫者自定義的名稱,類似於PIC單片機彙編語言中給寄存器(RAM)的命名。C語言中所用到的變量名、函數名、數組名、文件名等都是由標識符組成的。

  標識符是由一串字母(常指英語字母)、數字和下線符(或稱下劃線)組成的字符串。標識符的第一個字符必須是字母或下線符。按照慣例,以下線符開頭的標識符是系統程序專用的,程式設計師最好不用。程式設計師可將下線符作為分段符使用,如SUM_1。

  同一字母的大小寫被視為不同的標識符。即同一字母的大小寫是不同的標識符。

  不同的C編譯器對標識符的長度有不同的限制。為了避免所編寫的源文件能被所有C編譯器認可,可將標識符的長度限定在8個字符以內(即1個字節)。

  標識符的命名(即自定義),最好簡捷、含意清晰、便於閱讀,如用deIay表示延時;用sum表示求和;用loop表示循環等。

  2.C語言的關鍵字

  關鍵字,又稱保留字,是指那些已由系統作了特殊定義、具有特定含義的標識符。,程式設計師編寫C程序時,可用關鍵字來對所用函數參數進行說明、定義一些物理量,它們是C語言語句的重要組成部分,有的還直接組成簡單語句。因此,用戶是不能將此類標識符(關鍵字)作為自定義標識符使用的。

  C語言的關鍵字分為三類,即數據類、程序控制類和預處理類,如表1所示。

表1

  表1中所列關鍵字,讀者在編寫C程序時,將逐步學會其使用。

  六、C語言的數據類型

  在編寫C語言程序時,首先要涉及的是數據描述和功能描述。數據是實現功能的過程,功能是數據運算(或處理)的結果,沒有數據,C程序就無法實現單片機規定的功能,可見數據在C語言程序中的重要性。

  C語言的數據類型,有基本型、構造型、指針型三類。對此,筆者將在使用時逐一介紹。

  1.標準型

  標準型數據屬於基本型數據,是由C語言本身提供的基本數據類型,結構簡單、使用頻率高。下面以實例對C語言程序中的標準型數據予以說明。

  標準型數據又分為整型數據、實型數據和字符型數據三種,每種數據又有常量和變量之分。筆者將其分類以表格形式列出,既可供初學者編寫C語言程序時查找,亦可與本文中實例程序的注釋進行對比學習,以加深對標準型數據的理解。

(1)整型常量。

1.while語句

  (1)格式:while(條件表達式)

  (2)功能:程序運行時,先判斷條件表達式,當條件表達式的值為非零(即為「真」)時,執行while語句中的內嵌語句,即先判斷條件表達式,再執行語句。當條件表達式為零時,退出循環;若表達式一開始就為0,其while語句一次也不執行;若條件表達式恆為1,則程序在while體內一直循環。

  (3)程序實例2

  1)硬體電路和功能硬體電路同《PIC單片機C語言程序設計(1)》一文的圖1(見《電子製作》2009年第10期)。圖中的RA0口外接的微動開關KO,作為程序的起動開關。KO未按下時。單片機系統處於等待狀態,按一次KO,系統依次進行以下工作:RBO口外接的LEDO點亮→延時→LEDO熄滅→RB2外接的LED2點亮→延時→LED2滅→RB4外接LED4點亮→延時→LED4滅→執行間斷語句break終止循環→點亮RB6外接的LED6→回到等待狀態,直到RA0外接的微動開關KO再次按下,再重複上述過程。

  2)源文件清單。

  本實例2的程序清單如下(源文件名PIC02.C):

  說明:

  ① 上述程序中,關鍵字break、continue和return等組成的簡單語句的使用是略有區別的。具體區別如下:

  間斷語句break:程序運行到此就終止循環,跳出while(1)的循環體,執行該循環體緊接在後面的語句:

  · 繼續語句continue:如果把該程序中的break語句換成繼續語句continue。程序運行到此便立即執行由while(1)開始功能的程序,即程序在該循環體內不斷地運行,等效於不用continue;語句;·return語句:當把該程序中的break換成return語句時,程序運行到此就會立即返回主程序運行。

  讀者學習C語言時,一定要將實例2源程序中的關鍵字「break」分別用「coutinue」和「return」代換並運行程序,同時觀察使用三種不同的關鍵字時LED指示燈的不同狀態,方能體會出三者的差異。

  ② 關於帶形式參數(簡稱形參)的延時函數。

  實例2所用的延時函數與實例1不同。實例1(見《電子製作》2009年第10期)用的是無參數函數,功能簡單,一個函數完成一定的延時。實例2用的是有參數延時函數,一個函數可完成不同的延時(如上述實例2 中的延時1、延時2、延時3、延時4)。這是因為,帶形參函數(如實例2中的延時函數v0id delay(K))可以藉助參數的傳遞功能來完成不同時間的設置,這是彙編語言所無法做到的。由此可見,採用C語言可大大簡化程序的編寫工作。

  鑑於形參對熟悉彙編語言的設計人員來說是一個全新的概念,有關C語言的函數參數傳遞功能,我們在後續的文章中還將進一步介紹,以加深大家對其的理解。

  整型常量,是指在程序運行過程中數值保持不變的量,在編寫C程序時,整型常量用關鍵字cONST進行定義。表2給出了各種常量的類型、表示方法及示例說明。

表2

  (2)整型變量。

  整型變量。是指在程序運行過程中數值會改變的量。整型(即整數類型)變量的基本型是lnt。

  Int可以保存一個整數,並允許在_nl前加上基本型、短整型、長整型,以及無符號型等四種整型類型。下面分別加以說明1)基本型:標誌是int。

  2)短整型:標誌是short int。

  3)長整型:標誌是long int。

  4)無符號型:存儲單元中,全部二進位位均用來存放整數自身。而不包括符號位。無符號型又分為無符號整型、無符號短整型、無符號長整型三種。

  ①無符號整型:標誌是unsigned int:

  ②無符號短整型:標誌是unsigned short int;

  ③無符號長整型:標誌是unsigned Iong int。

  以上C語言變量的要點,是相關的關鍵字,以及每個整型變量的取值範圍,即長度(二進位位個數)。

  PlC單片機C語言的整型變量、數據名稱、取值範圍如表3所示。表中的內容,在編寫C程序時經常使用,初學者應熟練掌握。

表3

  說明:1.表3列出了整型變量的取值範圍。例如,從表3中可以看出,無符號長整型變量unsigned long int的最大取值可達10位數,將其用於延時函數,僅用一條循環語句,延時便可達20小時以上(參看下文中的實例2)。2.對於表3中的字符型(char)、浮點型(float)和雙精度型doable等整型變量,將在本連載後續文章的程序使用到時進行說明。

  七、C語言的控制循環語句

  在C語言程序中,會用到多種功能語句。控制循環語句(下稱循環語句)便是其中之一。

  C語言的循環語句有三種,即while語句、do while語句和for語句。循環語句一般由循環控制條件來控制循環的重複次數。如果控制條件沒有完成,要想終止循環,可在循環體中用間斷語句break、返回語句retum,或者用繼續語句continue來終止當前循環周期中的操作,使控制進入其他程序段。下面逐一進行介紹,並通過程序實例來說明其應用,以利大家加深理解。

相關焦點

  • PIC單片機C語言程序設計(5)
    在《電子製作》2009年第10期,《PIC單片機C語言程序(1)》的延時函數中,我們已用過後綴運算符i++,大家可以從中體會其用法。  (2)邏輯運算符。  邏輯運算符是基本運算符中的一種。邏輯運算符有:與「&&」、或「||" 、非「!」等3三種。  邏輯運算符&&、||為雙目(兩個量)運算符,!為單目運算符。
  • PIC單片機C語言程序實例
    用C語言開發單片機系統軟體的最大好處,是代碼效率高、軟體調試直觀、維護升級方便、代碼的重複利用率高、便於跨平臺的代碼移植等。因此,C語言在單片機系統設計中得到越來越廣泛的運用。      C語言是一種高級語言,具有低級語言的特點,原來用各種彙編語言編寫的單片機程序,均可用C語言程序代換。
  • PIC單片機C語言程序設計(4)
    2.if語句  if 語句也稱為條件語句,是C 語言中轉移語句之一。在設計C 語言程序時,常常要根據某些條件以決定程序運行的流向,這時就需要if 語句來實現。
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。  在《PIC單片機C語言程序(一)》的延時函數中,我們已用過後綴運算符i++,大家可以從中體會其用法。  (2)邏輯運算符。  邏輯運算符是基本運算符中的一種。邏輯運算符有:與「&&」、或「||「 、非「!」等3三種。  邏輯運算符&&、||為雙目(兩個量)運算符,!為單目運算符。
  • PIC單片機asm與C混合編程
    2)、標識符程序中使用的用戶標識符除要遵循標識符的命名規則以外,一般不要用代數符號(如a、b、x1、y1)作為變量名,應選取具有相關含義的英文單詞(或縮寫)或漢語拼音作為標識符,以增加程序的可讀性,如:count、number1、red、work 等。3)、程序結構C 語言是一種高級程序設計語言,提供了十分完備的規範化流程控制結構。
  • 基於C語言51單片機電子密碼鎖的設計與仿真
    電子密碼鎖通常使用ARM和單片機控制,單片機相對ARM實現較為簡單,功能較為完善,因此使用單片機控制較多。用單片機控制的窖碼鎖常使用彙編語言編寫程序,顯示器多數用。而本文所介紹的電子密獁鎖使用移植性及可讀性強的高級語言C語言編寫,便於修改和增減功能蚤同時採用顯示清楚數碼管,功率消耗小而且壽命長的 液晶顯示器,顯示更加直觀,使用更加方便。
  • 基於C語言STC89C52單片機電子密碼鎖的設計與仿真
    它採用高可靠性的STC89C52單片機來實現開鎖和密碼的識別,採用具備I2C總線接口的E2PROM晶片來完成密碼的存儲,通過1602液晶顯示器提示程序運行狀態和使用步驟,利用蜂鳴器模擬報警,發光二極體模擬鎖的開關。該系統用C語言編寫程序,與彙編語言相比具備更好的移植性和可讀性,便於修改和增減功能。
  • 51,AVR,PIC,MSP430,STM32單片機比較
    ,eeprom大,出廠時程序引導區就已經加密,並且stc解密的市面價格在1.5w到2.5w之間,可見解密難度大,在一定程度上保護了單片機工程師的利益和產品開發商的利益。生產時就已經考慮到與傳統51的兼容問題,兼容做的很好,又增加了許多功能,軟復位功能我比較喜歡。缺點:資料就是宏晶網上的資料,資料少,不適合初學者---我指學習它自己增加的功能。
  • PIC單片機 C編程技巧
    (以MPLAB5.7版本為例子)啟動MPLAB.在Project-->Install Language Tool:Language Suite>hi-tech piccTool Name ---->PICC CompilerExecutable ---->c:hi-picinpicc.exe (假如你的PICC是默認安裝的)選Command-line
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。 儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
  • pic單片機學習教材(一):接口設計
    現在PIC單片機應用領域已經相當廣泛,為了方便廣大工程師能夠很好的學習 PIC單片機,電子發燒友網整理了PIC單片機的相關知識應用,現在先帶您學習下PIC單片機在接口設計中的應用吧。本文引用地址:http://www.eepw.com.cn/article/171135.htm  一、SPI串行EEPROM與PIC單片機的接口設計 目前市場上有許多種單片機用在嵌入式控制系統設計中,這些嵌入式控制系統中的很大一部分都要用到非易失性存儲器。
  • PIC單片機基礎學習之程序設計(一)
    本內容講述了PIC單片機中的程序設計方面的學習本文引用地址:http://www.eepw.com.cn/article/171032.htm1、PIC單片機程序的基本格式  先介紹二條偽指令:  EQU ——標號賦值偽指令  ORG ——地址定義偽指令  PIC16C5X單片機在RESET後指令計算器PC被置為全「1」
  • PIC單片機之步進電機
    1-2 相勵磁是1 相勵磁和2 相勵磁交替使用的方法。對於單片機軟體的編程,我們使用MPLab IDE軟體來進行C 語言編程,它是我們的編程環境,同時我們可以通過使用ICD2 仿真燒寫器和增強型PIC實驗板連接進行程序的仿真調試和燒寫步驟,具體的操作步驟,我們已經在前幾期做了詳細的說明和介紹
  • 單片機C語言編程心得
    經過查找資料得知,.H文件就是頭文件,估計就是Head的意思吧,這是規範程序結構化設計的需要,既可以實現大型程序的模塊化,又可以實現根各模塊的連接調試。1、.H文件介紹:在單片機C程序設計中,項目一般按功能模塊化進行結構化設計。
  • 通俗易懂講PIC單片機:從一竅不通到入門進步
    現在剩下了 6 條腿  第2、3條腿 使用時外接一個晶振的東西 我們接一個 4 MHz的。  第4條腿是復位腳,是一個信號輸入腳。單片機正常運行時接高電平。當有一個低電平脈衝輸入到這個腳時單片機就復位。所謂復位就是單片機內部所有的工作部件統統回到規定的狀態,程序也復位到頭一句上開始逐條運行。
  • 單片機c語言教程:C51循環語句
    在 C 語言中構成循環控制的語句有 while,do-while,for 和 goto 語句。同樣都是起到循環作用,但具體的作用和使用方法又大不一 樣。我們具體來看看。goto 語句這個語句在很多高級語言中都會有,記得小時候用 BASIC 時就很喜歡用這個語句。
  • 寫出高效優美的單片機C語言代碼
    下面發一些我在網上看到的技巧和自己的一些經驗來和大家分享;1、如果可以的話少用庫函數,便於不同的mcu和編譯器間的移植2、選擇合適的算法和數據結構應該熟悉算法語言,知道各種算法的優缺點,具體資料請參見相應的參考資料,有很多計算機書籍上都有介紹。
  • 單片機C語言延時需注意的問題
    標準的C語言中沒有空語句。但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在彙編語言中很容易實現,寫幾個nop就行了。MOV R6,#0FFH  LOOP1: DJNZ R6,LOOP1  DJNZ R7,LOOP2  這些指令的組合在彙編語言中採用DJNZ指令來做延時用,因此它的時間精確計算也是很簡單,假上面變量i的初值為m,變量j的初值為n,則總延時時 間為:m×(n×T+T),其中T為DJNZ指令執行時間(DJNZ指令為雙周期指令)。
  • 為什麼C語言是最適合單片機編程的高級語言!
    為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不是不能,而是不合適。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。