微控制器的C語言程序設(shè)計ppt課件_第1頁
微控制器的C語言程序設(shè)計ppt課件_第2頁
微控制器的C語言程序設(shè)計ppt課件_第3頁
微控制器的C語言程序設(shè)計ppt課件_第4頁
微控制器的C語言程序設(shè)計ppt課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、9.1.1 微控制器的編程言語BASIC BASIC 言語簡單易學(xué),適用于對編程效率或運轉(zhuǎn)速度要求不高的場言語簡單易學(xué),適用于對編程效率或運轉(zhuǎn)速度要求不高的場所,但是所,但是BASIC BASIC 采用浮點運算,導(dǎo)致程序復(fù)雜且執(zhí)行時間長,采用浮點運算,導(dǎo)致程序復(fù)雜且執(zhí)行時間長, 即即使用使用BASIC BASIC 編譯器也未能處理這個問題。編譯器也未能處理這個問題。PLPLM M 可以說是可以說是“高級匯編言語高級匯編言語 ,詳細控制著代碼的生成。但,詳細控制著代碼的生成。但對很多微控制器,對很多微控制器, PL PL M M 不支持復(fù)雜的算術(shù)運算和浮點變量,不支持復(fù)雜的算術(shù)運算和浮點變量,

2、也沒有豐富的庫函數(shù)。也沒有豐富的庫函數(shù)。9.1.1 微控制器的編程言語用用C C 言語進展微控制器程序設(shè)計的優(yōu)點言語進展微控制器程序設(shè)計的優(yōu)點: : 開發(fā)速度大大加快。開發(fā)速度大大加快。 可以實現(xiàn)復(fù)雜的算法??梢詫崿F(xiàn)復(fù)雜的算法。 可移植性強。可移植性強。 程序易讀易改,程序易讀易改, 調(diào)試方便。調(diào)試方便。 可以與匯編言語混編,可以與匯編言語混編, 發(fā)揚各自的優(yōu)點。發(fā)揚各自的優(yōu)點。9.1.2 C言語編譯器與程序開發(fā)過程9.2.1 KEIL 編譯器KEIL KEIL 編譯器是基于編譯器是基于C C內(nèi)核的微處置器軟件開發(fā)平臺,其中,內(nèi)核的微處置器軟件開發(fā)平臺,其中, VisionVision集成開發(fā)

3、環(huán)境是將編輯、編譯、匯編、鏈接和調(diào)試等各集成開發(fā)環(huán)境是將編輯、編譯、匯編、鏈接和調(diào)試等各階段都集成在一個程序內(nèi)的集成開發(fā)環(huán)境,階段都集成在一個程序內(nèi)的集成開發(fā)環(huán)境, 它將工程管理、源代它將工程管理、源代碼編輯和程序調(diào)試等組合在一個功能強大的環(huán)境中,碼編輯和程序調(diào)試等組合在一個功能強大的環(huán)境中, 編寫程序、編寫程序、編譯和鏈接后可直接運轉(zhuǎn)。防止了不用要的分散反復(fù)作業(yè),縮短了編譯和鏈接后可直接運轉(zhuǎn)。防止了不用要的分散反復(fù)作業(yè),縮短了開發(fā)周期。開發(fā)周期。9.2.2 C51 程序設(shè)計根底數(shù)據(jù)類型變量在在C C中對變量進展定義的格式如下:中對變量進展定義的格式如下:存儲種類存儲種類 數(shù)據(jù)類型存儲器類型數(shù)

4、據(jù)類型存儲器類型 變量名表變量名表其中,其中, “存儲種類存儲種類 和和“存儲器類型存儲器類型 是可選項。變量的存儲種類有四種:是可選項。變量的存儲種類有四種: 自動自動autoauto 、外部、外部externextern 、靜態(tài)、靜態(tài)staticstatic 、存放器、存放器registerregister 。假設(shè)省略存。假設(shè)省略存儲種類選項定義變量,儲種類選項定義變量, 那么該變量將為自動那么該變量將為自動autoauto 變量。在定義一個變量時,變量。在定義一個變量時, 除了除了需求闡明其數(shù)據(jù)類型外,需求闡明其數(shù)據(jù)類型外, C C 編譯器還允許闡明變量的存儲器類型。編譯器還允許闡明變量

5、的存儲器類型。存儲方式C C 編譯器的三種存儲方式編譯器的三種存儲方式SMALL SMALL 、COMPACT COMPACT 和和LARGE LARGE 決議了變量的默許存儲類型和決議了變量的默許存儲類型和參數(shù)傳送區(qū)域參數(shù)傳送區(qū)域9.3.1 ICC089.3.1 ICC08編譯器和編譯器和08C08C言語言語Motorola Motorola 微控制器常用的微控制器常用的C C 言語編譯器有言語編譯器有ICC ICC 編譯器編譯器, Hiware C , Hiware C 編譯器和編譯器和Small C Small C 編譯器等。編譯器等。ICCICC是是ImageCraft Creatio

6、ns ImageCraft Creations 公司推出的一款針對公司推出的一款針對MOTOROLA HCMOTOROLA HC的商的商業(yè)化業(yè)化C C言語編譯器,可以生成如言語編譯器,可以生成如 .S.S、.MAP .MAP 和和 .LST .LST 等多種格式的文件,等多種格式的文件,但其內(nèi)部并不包含調(diào)試工具,但其內(nèi)部并不包含調(diào)試工具, 編譯后只能用其他的調(diào)試軟件來調(diào)試它生成的目編譯后只能用其他的調(diào)試軟件來調(diào)試它生成的目的文件或下載到芯片中進展在線運轉(zhuǎn)和調(diào)試。的文件或下載到芯片中進展在線運轉(zhuǎn)和調(diào)試。ICC支持的數(shù)據(jù)類型I IO O 口和存放器的定義口和存放器的定義在在C C 言語中操作存放器

7、及言語中操作存放器及I IO O 口時,口時, 通常預(yù)先在頭文件中運用宏定義通常預(yù)先在頭文件中運用宏定義 define Idefine IO O 口名口名 volatile unsigned char volatile unsigned char I IO O 口地址口地址 define define 存放器名存放器名 volatile unsigned char volatile unsigned char 存放器地址存放器地址 并口A 、B 、C 、D 的定義 define PTA volatile unsigned char 0 x00 A 口 define PTB volatile u

8、nsigned char 0 x01 B 口 define PTC volatile unsigned char 0 x02 C 口 define PTD volatile unsigned char 0 x03 D 口 SPI 存放器的定義 define SPCR volatile unsigned char 0 x10 SPI控制存放器 define SPSCR volatile unsigned char 0 x11 SPI 控制形狀存放器 define SPDR volatile unsigned char 0 x12 SPI 數(shù)據(jù)存放器中斷處置中斷處置在在HCHC系列微控制器系列微控

9、制器Flash Flash 地址空間中,有一段專門用來存儲一切的中斷向量地址空間中,有一段專門用來存儲一切的中斷向量的地址空間,每個中斷處置函數(shù)占用兩個字節(jié)的中斷向量地址。的地址空間,每個中斷處置函數(shù)占用兩個字節(jié)的中斷向量地址。中斷函數(shù)用中斷函數(shù)用pragma interrupt pragma interrupt handler handler 定義,定義, 編譯器會用編譯器會用rtirti而不是而不是rts rts 作為前往指令。中斷向量用作為前往指令。中斷向量用pragma abs pragma abs address address 定義。定義。中斷處置函數(shù)中斷處置函數(shù): : 新建一個新

10、建一個vectors.c vectors.c , 并參與工程中;并參與工程中; 定義中斷處置函數(shù);定義中斷處置函數(shù); 定義中斷向量;定義中斷向量; 在中斷向量中填入中斷處置函數(shù)稱號。在中斷向量中填入中斷處置函數(shù)稱號。 串口接納中斷處置函數(shù) pragma interrupt handler sci receive isrvoid sci receive isr void中斷向量定義 pragma abs address : 0 xffe4void const vectab void sci receive isr ; pragma end abs address中斷處置中斷處置C C 言語與匯編

11、言語的混合編言語與匯編言語的混合編程程 asm asm “匯編指令匯編指令asm asm “clicli 開中斷開中斷asm asm “seisei 關(guān)中斷關(guān)中斷可用可用 define define 進展宏定義,進展宏定義, 以方便運用。以方便運用。 define INTR define INTR ON ON asm asm “clicli define INTR define INTR OFF OFF asm asm “seisei 定義匯編子程序。定義匯編子程序。定義格式如下:定義格式如下: 子程序名子程序名代碼代碼rtsrts留意以下幾點:留意以下幾點: 在子程序名前加在子程序名前加“

12、; 匯編子程序只能放在匯編子程序只能放在 s s 文件中,文件中, 然后將該文件參與到工程中;然后將該文件參與到工程中; 在在C C 代碼中調(diào)用匯編子程序時可直接調(diào)用:代碼中調(diào)用匯編子程序時可直接調(diào)用: 子程序名子程序名 ; 匯編子程序編寫時,匯編子程序編寫時, 假設(shè)運用了假設(shè)運用了A A 或或HX HX , 那么需求維護存放器那么需求維護存放器A A 或或HX HX 。C C 提供一系列可供運用的函數(shù)庫,提供一系列可供運用的函數(shù)庫, 其中包括了規(guī)范其中包括了規(guī)范C C 所具有所具有的大部分庫函數(shù)和一些的大部分庫函數(shù)和一些C C 特有的函數(shù),特有的函數(shù), 但是但是C C 中的有些中的有些函數(shù)和

13、規(guī)范函數(shù)和規(guī)范C C 中的函數(shù)的功能不一樣。這些函數(shù)的頭文件位于安裝中的函數(shù)的功能不一樣。這些函數(shù)的頭文件位于安裝目錄的目錄的include include 目錄下,目錄下, 庫文件位于安裝目錄的庫文件位于安裝目錄的lib lib 目錄下。詳目錄下。詳細可參閱其文檔。細可參閱其文檔。C C 的常用庫函數(shù)的常用庫函數(shù)數(shù)據(jù)類型的選用數(shù)據(jù)類型的選用: :只需只需bit bit 和和char char 等數(shù)據(jù)類型是機器言語直接支持的數(shù)據(jù)類型,等數(shù)據(jù)類型是機器言語直接支持的數(shù)據(jù)類型, 用此類數(shù)據(jù)類型的語句所生成的代碼較短;用此類數(shù)據(jù)類型的語句所生成的代碼較短; 而其他的數(shù)據(jù)類型,而其他的數(shù)據(jù)類型, 如整

14、型和浮如整型和浮點型等數(shù)據(jù)要有一定的內(nèi)部程序或內(nèi)部函數(shù)的支持,點型等數(shù)據(jù)要有一定的內(nèi)部程序或內(nèi)部函數(shù)的支持, 相對來說用該類數(shù)據(jù)類相對來說用該類數(shù)據(jù)類型的語句生成的代碼要長。有些型的語句生成的代碼要長。有些C C 言語程序外表上看起來非常的簡單,言語程序外表上看起來非常的簡單, 但在但在實踐編譯時,實踐編譯時, 生成的代碼卻相當(dāng)長。因此我們要按照實踐需求,生成的代碼卻相當(dāng)長。因此我們要按照實踐需求, 盡量選用占盡量選用占用存儲空間少的數(shù)據(jù)類型,用存儲空間少的數(shù)據(jù)類型, 可以大大的減少所生成的代碼長度。可以大大的減少所生成的代碼長度。算法設(shè)計算法設(shè)計: :數(shù)據(jù)存儲器的分配數(shù)據(jù)存儲器的分配: :盡量的運用部分變量,盡量的運用部分變量, 提高內(nèi)部數(shù)據(jù)存儲器的運用率。提高內(nèi)部數(shù)據(jù)存儲器的運用率。Motorola 08C 言語編程編程管理編譯文件輸出編譯文件輸出C C 言語程序的組成言語程序的組成一個完好的一個完好的C C 言語程序言語程序通常包含以下幾個部分:通常包含以下幾個部分: 匯編言語的啟動文件匯編言語的啟動文件 存儲器映像及存儲器映像及I IO O 端口端口的頭文件的頭文件 主程序模塊主程序模塊 中斷效力程序模塊中斷效力程序模塊 中斷向量表文件中斷向量表文件C C 言語源程序的參考范例言語源程序的參考范例 include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論