- 零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì)
- 趙建領(lǐng) 薛園園等編著
- 938字
- 2018-12-31 21:41:33
3.1 C51程序的基本結(jié)構(gòu)
單片機(jī)C51語(yǔ)言繼承了C語(yǔ)言的特點(diǎn),其程序結(jié)構(gòu)與一般C語(yǔ)言的程序結(jié)構(gòu)沒(méi)有差別。C51源程序文件的擴(kuò)展名為“.c”,如Test.c、Function.c等。每個(gè)C51源程序中包含一個(gè)名為“main()”的主函數(shù),C51程序的執(zhí)行總是從main()函數(shù)開(kāi)始的。當(dāng)主函數(shù)中所有語(yǔ)句執(zhí)行完畢,則程序執(zhí)行結(jié)束。下面是一個(gè)典型的C51源程序的例子。
#include <reg52.h> //預(yù)處理命令,reg52.h是一個(gè)頭文件 void Function1(void); //自定義函數(shù)Function1聲明 void main(void) //主函數(shù) { Function1(); //調(diào)用自定義函數(shù)Function1 unsigned char ch; //主函數(shù)中變量聲明 while(1) { printf("ch=%c\n",ch); //程序語(yǔ)句 ch++; //程序語(yǔ)句 } } void Function1(void) //自定義函數(shù)Function1 { unsighed char ps; //自定義函數(shù)內(nèi)部變量聲明 ps=12; //程序語(yǔ)句 printf("ps=%d\n",ps); //程序語(yǔ)句 }
從上面的例子可以看出,一個(gè)典型的C51源程序包含預(yù)處理命令、自定義函數(shù)聲明、main主函數(shù)和自定義函數(shù)。這幾部分完全類似于C語(yǔ)言的程序結(jié)構(gòu),各個(gè)部分的功能如下。
?預(yù)處理命令部分常用#include命令來(lái)包含一些程序中用到的頭文件。這些頭文件中包含了一些庫(kù)函數(shù)以及其他函數(shù)的聲明及定義。
?自定義函數(shù)聲明部分用來(lái)聲明源程序中自定義的函數(shù)。
?main主函數(shù)是整個(gè)C51程序的入口。不論main()函數(shù)位于程序代碼中的哪個(gè)位置,C51程序總是從首先main()函數(shù)開(kāi)始執(zhí)行的。
?自定義函數(shù)部分是C51源程序中用到的自定義函數(shù)的函數(shù)體,其中實(shí)現(xiàn)了用戶自定義的功能。
除了擴(kuò)展名為“.c”的源程序文件外,C51程序還支持?jǐn)U展名為“.h”的頭文件以及擴(kuò)展名為“.lib”的庫(kù)文件等。在一般的編譯系統(tǒng)中,通常以項(xiàng)目結(jié)構(gòu)來(lái)管理復(fù)雜的C51程序文件。例如在Keil μ Vision3編譯環(huán)境中,整個(gè)項(xiàng)目結(jié)構(gòu)如圖3.1所示。

圖3.1 Keil μ Vision3項(xiàng)目結(jié)構(gòu)示意圖
在這里,整個(gè)項(xiàng)目由項(xiàng)目文件來(lái)管理,項(xiàng)目文件的擴(kuò)展名為“.Uv2”。整個(gè)工程項(xiàng)目中可以包含如下幾類文件。
?頭文件用來(lái)包含一些庫(kù)函數(shù)、系統(tǒng)變量聲明以及將不同的C文件連接起來(lái)。
?C源文件是C51程序的主要部分,用來(lái)實(shí)現(xiàn)特定的功能。C源文件可以有一個(gè),也可以按照不同的功能分成多個(gè),但所有這些C源文件中有且僅有一個(gè)可以包含一個(gè)main()主函數(shù)。
?庫(kù)文件是實(shí)現(xiàn)特定功能的函數(shù)庫(kù),供C源文件中進(jìn)行調(diào)用。
?編譯中間文件是源程序在編譯鏈接過(guò)程中生成的中間文件,其中包含了文件編譯調(diào)試的信息。
?可燒錄文件是編譯系統(tǒng)生成的可以燒錄到單片機(jī)內(nèi)部供執(zhí)行的文件,類似于“.exe”可執(zhí)行文件。在C51語(yǔ)言中,一般擴(kuò)展名為“.hex”或者“.bin”等。
在這些文件中,C源文件是必須的,其他的可以根據(jù)用戶實(shí)際的需要而使用。
- Go Web編程
- TypeScript Essentials
- Java程序設(shè)計(jì)(慕課版)
- Flutter開(kāi)發(fā)實(shí)戰(zhàn)詳解
- 自制編譯器
- 架構(gòu)不再難(全5冊(cè))
- Python自動(dòng)化運(yùn)維快速入門
- C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo) (第2版)
- Microsoft Azure Storage Essentials
- Node.js:來(lái)一打 C++ 擴(kuò)展
- Getting Started with React Native
- Getting Started with Eclipse Juno
- 持續(xù)輕量級(jí)Java EE開(kāi)發(fā):編寫可測(cè)試的代碼
- Practical GIS
- Mastering Embedded Linux Programming