<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC 單片機(jī) C 語(yǔ)言編程簡(jiǎn)介(3)

          PIC 單片機(jī) C 語(yǔ)言編程簡(jiǎn)介(3)

          作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
          例 11-5 C 語(yǔ)言中斷函數(shù)舉例

          本文引用地址:http://www.ex-cimer.com/article/201611/319597.htm

          PICC 會(huì)自動(dòng)加入代碼實(shí)現(xiàn)中斷現(xiàn)場(chǎng)的保護(hù),并在中斷結(jié)束時(shí)自動(dòng)恢復(fù)現(xiàn)場(chǎng),所以編程

          員無(wú)需象編寫(xiě)匯編程序那樣加入中斷現(xiàn)場(chǎng)保護(hù)和恢復(fù)的額外指令語(yǔ)句。但如果在中斷服務(wù)程

          序中需要修改某些全局變量時(shí),是否需要保護(hù)這些變量的初值將由編程員自己決定和實(shí)施。

          用 C 語(yǔ)言編寫(xiě)中斷服務(wù)程序必須遵循高效的原則:

          &O1540; 代碼盡量簡(jiǎn)短,中斷服務(wù)強(qiáng)調(diào)的是一個(gè)“快”字。

          &O1540; 避免在中斷內(nèi)使用函數(shù)調(diào)用。雖然 PICC 允許在中斷里調(diào)用其它函數(shù),但為了解決

          遞歸調(diào)用的問(wèn)題,此函數(shù)必須為中斷服務(wù)獨(dú)家專用。既如此,不妨把原本要寫(xiě)在其

          它函數(shù)內(nèi)的代碼直接寫(xiě)在中斷服務(wù)程序中。

          &O1540; 避免在中斷內(nèi)進(jìn)行數(shù)學(xué)運(yùn)算。數(shù)學(xué)運(yùn)算將很有可能用到庫(kù)函數(shù)和許多中間變量,就

          算不出現(xiàn)遞歸調(diào)用的問(wèn)題,光在中斷入口和出口處為了保護(hù)和恢復(fù)這些中間臨時(shí)變

          量就需要大量的開(kāi)銷,嚴(yán)重影響中斷服務(wù)的效率。

          中檔系列 PIC 單片機(jī)的中斷入口只有一個(gè),因此整個(gè)程序中只能有一個(gè)中斷服務(wù)函數(shù)。

          11.6.5 標(biāo)準(zhǔn)庫(kù)函數(shù)

          PICC 提供了較完整的 C 標(biāo)準(zhǔn)庫(kù)函數(shù)支持,其中包括數(shù)學(xué)運(yùn)算函數(shù)和字符串操作函數(shù)。

          在程序中使用這些現(xiàn)成的庫(kù)函數(shù)時(shí)需要注意的是入口參數(shù)必須在 bank0 中。

          如果需要用到數(shù)學(xué)函數(shù),則應(yīng)在程序前 “#include ” 包含頭文件;如果要使

          用字符串操作函數(shù),就需要包含“#include ”頭文件。在這些頭文件中提供了函數(shù)

          類型的聲明。通過(guò)直接查看這些頭文件就可以知道 PICC 提供了哪些標(biāo)準(zhǔn)庫(kù)函數(shù)。

          C 語(yǔ)言中常用的格式化打印函數(shù)“printf/sprintf”用在單片機(jī)的程序中時(shí)要特別謹(jǐn)慎。

          printf/sprintf 是一個(gè)非常大的函數(shù),一旦使用,你的程序代碼長(zhǎng)度就會(huì)增加很多。除非是在

          編寫(xiě)試驗(yàn)性質(zhì)的代碼,可以考慮使用格式化打印函數(shù)以簡(jiǎn)化測(cè)試程序;一般的最終產(chǎn)品設(shè)計(jì)

          都是自己編寫(xiě)最精簡(jiǎn)的代碼實(shí)現(xiàn)特定格式的數(shù)據(jù)顯示和輸出。本來(lái),在單片機(jī)應(yīng)用中輸出的

          數(shù)據(jù)格式都相對(duì)簡(jiǎn)單而且固定,實(shí)現(xiàn)起來(lái)應(yīng)該很容易。

          對(duì)于標(biāo)準(zhǔn) C 語(yǔ)言的控制臺(tái)輸入(scanf)/輸出(printf)函數(shù),PICC 需要用戶自己編寫(xiě)

          其底層函數(shù) getch()和 putch()。在單片機(jī)系統(tǒng)中實(shí)現(xiàn) scanf/printf 本來(lái)就沒(méi)什么太多意義,如

          果一定要實(shí)現(xiàn),只要編寫(xiě)好特定的 getch()和 putch()函數(shù),你就可以通過(guò)任何接口輸入或輸

          出格式化的數(shù)據(jù)。


          11.7

          PICC 定義特殊區(qū)域值

          PICC 提供了相關(guān)的預(yù)處理指令以實(shí)現(xiàn)在原程序中定義單片機(jī)的配置字和標(biāo)記單元。

          11.7.1 定義工作配置字

          在原程序中定義 PIC 單片機(jī)工作配置字的重要性在前面章節(jié)中已經(jīng)闡述。在用 PICC 寫(xiě)


          程序時(shí)同樣可以在 C 原程序中定義,具體方式如下:

          __CONFIG (HS & UNPROTECT & PWRTEN & BORDIS & WDTEN);

          上面的關(guān)鍵詞“__CONFIG”(注意前面有兩個(gè)下劃線符)專門用于是芯片配置字的設(shè)

          定,后面括號(hào)中的各項(xiàng)配置位符號(hào)在特定型號(hào)單片機(jī)的頭文件中已經(jīng)定義(注意不是 pic.h

          頭文件),相互之間用邏輯“與”操作符組合在一起。這樣定義的配置字信息最后將和程序

          代碼一起放入同一個(gè) HEX 文件。

          在這里列出了適用于 16F7x 系列單片機(jī)配置位符號(hào)預(yù)定義,其它型號(hào)或系列的單片機(jī)

          配置字定義方式類似,使用前查閱一下對(duì)應(yīng)的頭文件即可。


          #define RC

          #define HS


          0x3FFF // RC 振蕩

          0x3FFE // HS 模式

          #define XT

          #define LP


          0x3FFD // XT 模式

          0x3FFC // LP 模式


          #define WDTEN 0x3FFF // 看門狗打開(kāi)


          #define WDTDIS

          #define PWRTEN


          0x3FFB // 看門狗關(guān)閉

          0x3FF7 // 上電延時(shí)定時(shí)器打開(kāi)


          #define PWRTDIS 0x3FFF // 上電延時(shí)定時(shí)器關(guān)閉

          #define BOREN 0x3FFF // 低電壓復(fù)位允許


          #define BORDIS


          0x3FBF // 低電壓復(fù)位禁止


          #define UNPROTECT 0x3FFF // 沒(méi)有代碼保護(hù)

          #define PROTECT 0x3FEF // 程序代碼保護(hù)

          例 11-6 頭文件預(yù)定義的配置信息符號(hào)

          11.7.2 定義芯片標(biāo)記單元

          PIC 單片機(jī)中的標(biāo)記單元定義可以用下面的__IDLOC(注意前面有兩個(gè)下劃線符)預(yù)處

          理指令實(shí)現(xiàn),方法如下:

          __IDLOC (1234);

          其特殊之處是括號(hào)內(nèi)的值全部為 16 進(jìn)制數(shù),不需要用“0x”引導(dǎo)。這樣上面的定義就設(shè)定

          了標(biāo)記單元內(nèi)容為 01020304。

          11.8


          MPLAB-IDE 中實(shí)現(xiàn) PICC 的編譯選項(xiàng)設(shè)置

          在 11.3 節(jié)中已經(jīng)介紹了如何實(shí)現(xiàn) PICC 和 MPLAB-IDE 開(kāi)發(fā)平臺(tái)的掛接。一旦項(xiàng)目建立


          成功、程序編寫(xiě)完成后即可以通過(guò) MPLAB 環(huán)境下的項(xiàng)目管理工具實(shí)現(xiàn)程序的編譯、連接和

          調(diào)試。它們的含義分別

          是:


          -項(xiàng)目維護(hù)(Make):MPLAB 檢查項(xiàng)目中的原程序文件,只編譯那些在上次編

          譯后又被修改過(guò)的原程序,最后進(jìn)行連接;

          -項(xiàng)目重建(Build All):項(xiàng)目中的所有原程序文件,不管是否有修改,都將被

          重新編譯一次,最后進(jìn)行連接。

          也可以通過(guò) Project 菜單選擇“Make”或“Build All”實(shí)現(xiàn)項(xiàng)目編譯。不管采用何種方

          式,在啟動(dòng)編譯過(guò)程前一般都要設(shè)定一些編譯選項(xiàng)。

          11.8.1 選擇單片機(jī)型號(hào)

          在選擇 PICC 作為語(yǔ)言工具并建立了項(xiàng)目后,同樣通過(guò)菜單項(xiàng) Configure&O1616;Select Device

          在 MPLAB 環(huán)境中選擇具體單片機(jī)型號(hào)。請(qǐng)回顧一下例 11-1 的代碼,我們?cè)谠绦蛞婚_(kāi)始

          使用了“#include ”實(shí)現(xiàn)了相關(guān)單片機(jī)的一些預(yù)定義符號(hào)的直接引用,但沒(méi)有具體指

          明是哪一個(gè)型號(hào)。實(shí)際上,“pic.h”頭文件只是一個(gè)簡(jiǎn)單的管理工具(條件判別),它會(huì)按照

          MPLAB 所選擇的特定型號(hào)的單片機(jī),把真正對(duì)應(yīng)的頭文件包含進(jìn)來(lái)。有興趣者可以直接用

          文本編輯工具打開(kāi) pic.h 文件查看其是如何根據(jù)不同的單片機(jī)型號(hào)包含對(duì)應(yīng)的頭文件。

          這樣對(duì)編程員而言,程序中只需加上一句“#include ”即可。

          11.8.2 PICC 普通編譯選項(xiàng)(General)設(shè)定

          參考第三章 3.2.7 節(jié)的內(nèi)容和圖 3-20 的指示說(shuō)明,啟動(dòng)編譯選項(xiàng)設(shè)定對(duì)話框。在使用

          PICC 語(yǔ)言工具時(shí)對(duì)話框的內(nèi)容和用 MPAMS 匯編工具相比完全不同。圖 11-3 為 PICC 編譯

          環(huán)境下普通選項(xiàng)設(shè)定的界面。

          在此界面中用戶唯一能改變的是編譯器查找頭文件時(shí)的指定路徑(Include Path),實(shí)際

          上如果編譯器安裝沒(méi)有問(wèn)題,在此界面中這些普通選項(xiàng)的設(shè)定無(wú)需任何改動(dòng),編譯器會(huì)自動(dòng)

          到缺省認(rèn)定的路徑中(編譯器安裝后的相關(guān)路徑)查找編譯所需的各類文件。

          %C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/9.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/9.jpg" /> %C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/10.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/10.jpg" />

          圖 11-3 PICC 普通選項(xiàng)設(shè)定圖 11-4 PICC 全局選項(xiàng)設(shè)定

          11.8.3 PICC 全局選項(xiàng)設(shè)定(PICC Global)

          全局選項(xiàng)將影響項(xiàng)目中所有 C 和匯編原程序的編譯,詳細(xì)的設(shè)定內(nèi)容見(jiàn)圖 11-4。其中

          必須關(guān)注的有:

          &O1540; Compile for MPLAB ICD:如果你準(zhǔn)備用 ICD 調(diào)試 C 語(yǔ)言編譯后的代碼,那么此項(xiàng)

          就必須打鉤選中。這樣編譯后的結(jié)果就能保證 ICD 本身使用的芯片資源(一小部

          分的程序和數(shù)據(jù)空間)不被應(yīng)用程序所占用。

          &O1540; Treat ‘char’ as signed:為了提高編譯后的代碼效率,PICC 缺省認(rèn)定‘char’型變量也

          是無(wú)符號(hào)數(shù)。如果在設(shè)計(jì)中需要使用帶符號(hào)的‘char’型變量,此項(xiàng)就應(yīng)該被選中。

          &O1540; Floating point ‘double’ width:同樣為了提高編譯后的代碼效率,PICC 缺省認(rèn)定

          ‘double’型的雙精度浮點(diǎn)數(shù)變量的實(shí)現(xiàn)長(zhǎng)度為 24 位(等同于普通 float 型浮點(diǎn)數(shù))。

          在這里可以選擇使其長(zhǎng)度達(dá) 32 位。這樣數(shù)值計(jì)算的精度將得到提高,但代碼長(zhǎng)度

          將增加,計(jì)算速度也會(huì)降低,所以請(qǐng)?jiān)跈?quán)衡利弊后作出你自己的決定。

          11.8.4 C 編譯器選項(xiàng)設(shè)定(PICC Compiler)

          項(xiàng)目中所有的 C 原程序都將通過(guò) C 編譯器編譯成機(jī)器碼,這些選項(xiàng)決定了 C 編譯器是

          如何工作的。所有選項(xiàng)又分為兩組:普通選項(xiàng)(General)和高級(jí)選項(xiàng)(Advanced),分別見(jiàn)

          圖 11-5A 和 11-5B。

          C 編譯器的普通選項(xiàng)最重要的就是針對(duì)代碼優(yōu)化的設(shè)定。如果沒(méi)有特殊原因,應(yīng)該設(shè)定

          全局優(yōu)化級(jí)別為 9 級(jí)(最高級(jí)別優(yōu)化),同時(shí)使用匯編級(jí)優(yōu)化,這樣最終得到的代碼效率最

          高(長(zhǎng)度和執(zhí)行速度兩方面)。按筆者的使用經(jīng)驗(yàn),僅從代碼長(zhǎng)度去比較,使用最高級(jí)別優(yōu)

          化后代碼長(zhǎng)度至少可以減少 20%(2K 字以上的程序)。而且 PICC 的優(yōu)化器相當(dāng)可靠,一般

          %C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" /> %C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/12.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/12.jpg" />

          (A)常用選項(xiàng) (B) 高級(jí)選項(xiàng)

          圖 11-5 C 編譯器選項(xiàng)設(shè)定

          不會(huì)因?yàn)槭褂脙?yōu)化從而使生成的程序出現(xiàn)錯(cuò)誤。碰到的一些問(wèn)題也基本都是用戶編寫(xiě)的原程

          序有漏洞所導(dǎo)致,例如一些變量應(yīng)該是 volatile 型但編程員沒(méi)有明確定義,在優(yōu)化前程序可

          以正常運(yùn)行,一旦使用優(yōu)化,程序運(yùn)行就出現(xiàn)異常。顯然,把出現(xiàn)的這些問(wèn)題歸罪到編譯器

          是毫無(wú)道理的。

          使用優(yōu)化后可能對(duì)原程序級(jí)的調(diào)試帶來(lái)一些不便之處。因 PICC 可能會(huì)重組編譯后的代

          碼,例如多處重復(fù)的代碼可能會(huì)改成同一個(gè)子程序調(diào)用以節(jié)約程序空間,這樣在調(diào)試過(guò)程中

          跟蹤原程序時(shí)可能會(huì)出現(xiàn)程序亂跳的現(xiàn)象,這基本是正常的。若為了強(qiáng)調(diào)更直觀的代碼調(diào)試

          過(guò)程,你可以將優(yōu)化級(jí)別降低甚至關(guān)閉所有優(yōu)化功能,這樣調(diào)試時(shí)程序的運(yùn)行就可以按部就

          班了。

          C 編譯器的高級(jí)選項(xiàng)設(shè)定基本都是針對(duì)診斷信息輸出的,和生成的代碼無(wú)關(guān)。用得相對(duì)

          較多的選項(xiàng)有:

          &O1540; Generate assembly list file:編譯器生成 C 原程序的匯編列表文件(*.lst)。在此文件

          中列出了每一行 C 原代碼對(duì)應(yīng)的匯編指令,但這些都是優(yōu)化前的代碼。簡(jiǎn)單的一

          C 語(yǔ)句被翻譯成匯編指令后可能有好幾條。有時(shí)匯編列表文件可以作為解決問(wèn)

          題的輔助手段。如果你懷疑編譯器生成的代碼有錯(cuò)誤,不妨先產(chǎn)生對(duì)應(yīng)的匯編列表

          文件,看看在優(yōu)化前一條 C 語(yǔ)句被編譯后的匯編碼到底是什么。

          &O1540; Compile to assembly only:這一選項(xiàng)的作用是把&n, bsp; C 原程序編譯成匯編指令文件

          (*.as),此時(shí)將不生成目標(biāo)文件,也不進(jìn)行最后的連接定位。這一選項(xiàng)在 C 和匯

          編混合編程時(shí)特別有用。通過(guò)解讀 C 程序?qū)?yīng)的匯編指令,可以掌握 C 程序中存

          取變量的具體方法,然后用在自己編寫(xiě)的匯編指令中。我們將在稍后專門做介紹。

          11.8.5 連接器選項(xiàng)設(shè)定(PICC Linker)

          連接器 PICC Linker 的選項(xiàng)基本不用作太多的改變,在圖 11-6 的對(duì)話框中顯示了可設(shè)定的各類

          項(xiàng)目。其中有兩項(xiàng)有用的信息輸出可以考慮加以利用:

          &O1540; Generate map file:生成連接定位映射文件。在此映射文件中詳細(xì)列出了所有程

          序用到的變量的具體物理地址;所有函數(shù)的入口地址;函數(shù)相互之間調(diào)用的層次關(guān)系和深度等。這

          些信息對(duì)于程序的調(diào)試將非常有用。此文件將以擴(kuò)展名“*.map”的形式存放在同一個(gè)項(xiàng)目路徑

          下,需要時(shí)可以用任何文本編輯器打開(kāi)觀察。

          %C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/13.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/13.jpg" />

          圖 11-6 PICC 連接器選項(xiàng)設(shè)定

          &O1540; Display memory-segment usage:顯示詳細(xì)的內(nèi)存分配和使用情況報(bào)告。用戶可以

          了解到程序空間和數(shù)據(jù)存儲(chǔ)器空間資源分配的細(xì)節(jié)。下面列舉了在一個(gè)項(xiàng)目編譯后實(shí)際的內(nèi)存使用

          信息,為方便理解筆者用“//”添加了一些注釋:

          Psect Usage Map: //程序段定位表

          Psect | Contents | Memory Range

          ----------|------------------------------|--------------------

          powerup | Power on reset code | $0000 - $0003

          intentry | Interrupt service routine | $0004 - $000C

          intcode | Interrupt service routine | $000D - $002C

          intret | Interrupt service routine | $002D - $0035

          init | Initialization code | $0036 - $003D

          end_init | Initialization code | $003E - $0040

          clrtext | Memory clearing code | $0041 - $0047

          const3 | Strings and constant data | $0048 - $0060

          const | Strings and constant data | $0061 - $0071

          const2 | Strings and constant data | $0072 - $0076

          text | Program and library code | $0576 - $0582

          text | Program and library code | $0583 - $07C7

          float_te | Arithmetic routine code | $07C8 - $07FF

          rbss_0 | Bank 0 RAM variables | $0021 - $0042

          temp | Temporary RAM data | $0043 - $0047

          nvram | Persistent RAM data | $0048 - $004A

          intsave | Registers saved on interrupt | $004B - $004D

          intsave | Registers saved on interrupt | $007F - $007F

          intsave_1 | Saved copy of W in bank 1 | $00FF - $00FF

          rbit_0 | Bank 0 bit variables | $0100 - $0104

          config | User-programmed CONFIG bits | $2007 - $2007

          Memory Usage Map:

          //程序空間代碼定位地址分布

          //存儲(chǔ)空間使用情況報(bào)告

          Program ROM $0000 - $0076 $0077 ( 119) words

          Program ROM $0576 - $07FF $028A ( 650) words

          $0301 ( 769) words total Program ROM

          //bank0 數(shù)據(jù)空間變量地址分布

          Bank 0 RAM $0021 - $004D $002D ( 45) bytes

          Bank 0 RAM $007F - $007F $0001 ( 1) bytes

          $002E ( 46) bytes total Bank 0 RAM

          //bank1 數(shù)據(jù)空間變量地址分布

          Bank 1 RAM $00FF - $00FF $0001 ( 1) bytes total Bank 1 RAM

          //bank0 數(shù)據(jù)空間位變量地址分布

          Bank 0 Bits $0100 - $0104 $0005 ( 5) bits total Bank 0 Bits

          //配置字地址

          Config Data $2007 - $2007 $0001 ( 1) words total Config Data

          Program statistics:

          //程序總體資源消耗統(tǒng)計(jì)

          Total ROM used 769 words (18.8%) //生成代碼字總數(shù)和程序空間使用率

          Total RAM used 48 bytes (25.0%) //使用數(shù)據(jù)字節(jié)數(shù)和數(shù)據(jù)空間使用率

          例 11-7 編譯后程序使用的內(nèi)存信息

          11.8.6 匯編器選項(xiàng)設(shè)定(PICC Assembler)

          PICC 環(huán)境提供了自己的匯編編譯器,它和 Microchip 公司提供的 MPASM 編譯器在原

          程序的語(yǔ)法表達(dá)方面要求稍有不同。另外,PICC 的匯編編譯器要求輸入原程序文件的擴(kuò)展

          名是“*.as”,而 MPASM 缺省認(rèn)定的原程序以“*.asm”為擴(kuò)展名。

          在基于 PICC 編譯環(huán)境下開(kāi)發(fā) PIC 單片機(jī)的 C 語(yǔ)言應(yīng)用程序時(shí)基本無(wú)需關(guān)心其匯編編譯

          器,除非是在混合語(yǔ)言編程時(shí)用匯編語(yǔ)言編寫(xiě)完整的匯編原程序模塊文件。其編譯選項(xiàng)設(shè)定

          的對(duì)話框見(jiàn)圖 11-7,最重要的是優(yōu)化使能控制項(xiàng)“Enable optimization”,一般情況下應(yīng)該使

          用匯編器的優(yōu)化以節(jié)約程序空間。




          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();