




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PIC單片機C語言使用手冊————————————————————————————————作者:————————————————————————————————日期:?本手冊分兩部分:第一部分HI-TECHPICCC的使用說明.這里我們只講述了PICCC與標準C的不同,它不是一本C語言的教程,并且我們假定你有C語言的基礎.第二部分在偉福集成環境下使用PICC.講述在偉福集成環境如可設置PICC,簡單的調試步驟.更詳細的說明請參閱偉福仿真器使用手冊.關于如何在MPLAB下使用PICCC語言,請參閱Microchip相應的手冊.南京偉福實業有限公司電話:0253193973網址:HYPERLINKhttp://www.wave-cn.comwww.wa電子信箱:HYPERLINKmailto:wave-cn@263.netwave-cn@263.netPICCC編譯器請向Microchip上海分公司購買,售價:RMB599.電話:02162755700網址:HYPERLINKhttp://www.microchip.comwww.microcHi-tech公司網址:HYPERLINKhttp://www.htsoft.comwww.htsoft.com第一部分為了對PIC單片機有更好的支持,PICC在標準C的基礎上作了一些擴充:定義I/O函數,以便在你的硬件系統中使用<stdio.h>中定義的函數。用C語言編寫中斷服務程序用C語言編寫I/O操作程序C語言與匯編語言間的接口1-1與標準C的不同PICC只在一處與標準C不同:函數的重入。因為PIC單片機的寄存器及堆棧有限,所以PICC不支持可重入函數。1-2支持的PIC芯片PICC支持很多PIC單片機,支持PIC單片機的類型在LIB目錄下的picinfo.ini文件中有定義。1-3PICC包含一些標準庫1-4PICC編譯器可以輸出一些格式的目標文件,缺省設置為輸出Bytecraft的'COD'格式和Intel的'HEX'格式。你可以用表1-1中的命令來指定輸出格式。表1-1格式名稱描述PICC命令文件類型MotorolaHEXS1/S9typehexfile-MOT.HEXIntelHEXIntelstylehexrecords(缺?。蒒TEL.HEXBinarySimplebinaryimage-BIN.BINUBROFUniversalBinaryImageRelocatableFormat-UBROF.UBRTektronixHEXTektronixstylehexrecords-TEK.HEXAmericanHexformatwithsymbolsforAmerican-AAHEX.HEXAutomationHEXAutomationemulatorsBytecraft.CODBytecraftcodeformat(缺?。﹏/a(缺省).CODLibraryHI-TECHlibraryfilen/a.LIB1-5符號文件PICC-G命令用于生成符號文件,有了符號文件,你就可以進行源程序調試.命令格式為:PICC-16F877-Gtest.c在使用仿真器時必須使用-G命令。1-6配置字PIC單片機的配置字可以用__CONFIG命令來定義:#include<pic.h>__CONFIG(x)其中x是配置字,頭文件中定義了相應的配置說明符,如:__CONFIG(WDTDIS&XT&UNPROTECT);這將關閉看門狗,設置XT振方式,程序不加密。注意:不同的配置符間用'&'相聯,未定義的部分保留未編程狀態。詳細的情況請參考頭文件及PIC數據手冊。1-7ID位置有些PIC單片機在程序空間外還有ID空間,可用下面的方法來定義:#include<pic.h>__IDLOC(x)其中x是ID標示,如:__IDLOC(15F0);將ID的四個單元定義為:1,5,15,0.ID的具體位置由所指定的PIC芯片自動設定。1-8EEPROM數據有些PIC單片機支持用外部編程器對內部的EEPROM進行編程。__EEPROM_DATA()可以將用于初始化的數據放入HEX文件中,如:__EEPROM_DATA(0,1,2,3,4,5,6,7)可將0-7八個數放入HEX文件中,在用外部的編程器進行編程時將這八個數寫入PIC單片機中。__EEPROM_DATA不是用于運行時寫入EEPROM數據的,在運行時請用EEPROM_READ(),EEPROM_WRITE()。1-9位指令只要有可能,PICC總是采用位指令。如:intfoo;foo|=0x40;的編譯結果為:bsf_foo,6為了方便可以定義如下宏:#definebitset(var,bitno)((var)|=(1<<(bitno)))#defienbitclr(var,bitno)((var)&=(1<<(bitno)))上一條語句可寫為:bitset(foo,6);1-10支持的數據類型PICC支持1,2,4字節的基本類型。所有的多字節類型都采用低有效位在前的格式,表1-2列出了所有數據類型及它們所占空間大小。表1-2類型大小(位)數字類型值bit1邏輯類型0或1signedchar8有符號字符-128..+127unsignedchar8無符號字符0..255signedshort16有符號整數-32768..+32767unsignedshort16無符號整數0..65535signedint16有符號整數-32768..+32767unsignedint16無符號整數0..65535signedlong32有符號整數-2147483648..+2147483647unsignedlong32無符號整數0..4294967295float24浮點double24or32浮點由-D24,-D32決定1-10-1常量及PICC支持標準C的進制表示方法。l或L后綴表明常量為long類型,u或U后綴表示常量為unsinged類型。浮點數為double類型,可以用f或F指定浮點數為float類型。字符型由單引號括起,如'a'.字符串由雙引號括起,如"Helloworld".1-10-2位數據PICC支持一位的變量,用bit來定義。如:staticbitinit_flag;變量必須是全局的或靜態的,它不能是自動變量或一個函數的參數,但可以作為一個函數的返回類型。位變量很象unsignedchar,但它只有0或1兩個值,位變量占用空間少,且運算速度快.所有的位變量在startup是被清0,請在程序開始處初始化它們。如果將一個整型數賦給位變量,只是將最低位賦給位變量,如果你是想要將一個整型變量是否為0賦值給一個位變量,請用:bitvar=other_var!=0;如要你使用了PICC的-STRICT命令,bit將被視為非法命令。1-10-2-1使用可位位變量的定義可以與絕對地址的定義結合起來使用。如:為了訪問STATUS中PowerDown位,先定義STATUS的絕對地址為3,然后再定義一位變量絕對地址為27staticunsignedcharSTATUS@0x03;staticbitPD@(unsigned)&STATUS*8+3;注意:頭文件中已定義所有的特殊功能寄存器及相應的位寄存器.1-10PICC浮點數使用IEEE75432位格式和IEEE754(截斷)24位格式.float類型使用24位格式,double使用24位或32位格式,由PICC命令控制,-D24使用24位格式,-D32使用32位格式.1-11絕對地址變量一個全局的或靜態的變量可以定位絕對地址,使用如下格式:unsignedcharPortvar@0x06;這里定義了一個名為'Portvar'的變量,地址為06h,注意,編譯器并不保留任何單元,僅僅是將一個變量分配在06h單元.它等價于匯編語言:_PortvarEQU06h編譯器及連接器都不作任何檢查,完全由程序員保證分配不會發生沖突.1-12結構與聯合PICC支持struct及union,它們可以作為函數的參數及返回值,也可以作為指針指向的目標.1-12-1PICC支持在結構上使用限定符,如果在一個結構上使用限定符,那么,這個結構的所有成員都被限定.如:bank1struct{intnumber;int*ptr;}在這個結構里,number,ptr都被放在bank1寄存器內.1-12-2結構中定義PICC支持在結構中定義位成員.位成員按最低有效位在前的方式存儲,位成員總是按8位字節方式存放,當當前字節放滿后再放下一個字節,位成員不會跨字節存放.如:struct{unsignedhi:1;unsigneddummy:6;unsignedlo:1;}foo@0x10;結構foo占用10h單元,hi為10h單元的第0位,lo為10h單元的第7位,dummy為10h單元的2-6位,(第6位為最高有效位)不使用的位可用未命名的位成員來定義,如果我們不使用dummy,就可定義為:struct{unsignedhi:1;unsigned:6;unsignedlo:1;}foo@0x10;1-13在ROM及RAM存放字符串.一個未說明的字符串總是存放在ROM中,并且只能通過常量指針為訪問.#defineHELLO"Helloword"SendBuff(HELLO);一個非常量的數組被一個字符串初始化,如:charfred[]='Helloworld";將在RAM中保留一個數組,在startup時,用存放在ROM中的"Helloworld"來初始化.如果要將一個常數字符串作為函數參數或將它賦給一個指針,必須定義一個常數指針.如:voidSendBuff(constchar*ptr)1-14const,volatile類型限定符.PICC支持標準C的const,volatile類型限定符const類型限定符通知編譯器一個目標含有的常量并且不會改變.一個常量被放在ROM中,顯然一個常量是不能被賦值的.如:constintversion=3;volatile類型限定符通知編譯器,一個目標不能保證在連續的訪問中不被改變.這將禁止編譯器對該目標的優化.所有的I/O口及在中斷中使用的變量必須有volatile類型限定符.如:volatileunsignedcharP_A@0x05;對volatile目標的訪問與對non-volatile的訪問是不同的,如對volatile目標置1是先將該目標清0后加1,而對non-volatile目標置1是先將1放在W中后再將W賦值到目標中.1-14特別的類型限定符.PICC支持一些特別的類型限定符:persistent,bank1,bank2及bank3,這些限定符不可用于自動變量.1-14按C的標準,所有的C變量在startup時被清為0.但是在有些情況下,我們希望在復位后仍保持一些變量的值.persistent類型限定符使被其限定的變量在startup時不被清0,而保留原有的值.1-14-2bank1,bank2及bank3bank1,bank2及bank3類型限定符用于指定變量所在的寄存器頁.如:staticbank3unsignedcharfred;bank3unsignedchar*ptrfred;缺省頁是bank01-15C語言中的中斷處理在PICCC語言中可以用"interrupt"限定符來編寫中斷服務程序.一個中斷服務函數必須用interruptvoid來定義,不能有參數,并且不能被C語言直接調用.如:longtick_count;voidinterrupttc_int(void){++tick_count;}1-15-1在中斷中保存PIC單片機硬件只保存PC,PICC編譯器自動地保存其它可能用到的變量.但是編譯器無法確定inline中的匯編語言段使用變量的情況,你必須自已保護它們.1-15-2在PIC.H中定義了所有的中斷位,di()關閉所有中斷,ei()打開所有中斷.如:ADIE=1;//A/DinterruptwillbeusedPEIE=1;//allperipheralinterruptsareenabledei();//enableallinterruptsdi();//disableallinterrupts1-16在C中使用匯編語言#asm,#endasm,asm()可以在C語言中直接使用匯編語言.#asm,#endasm用來加入一段匯編語言,而asm()用來加入一條匯編語言.如:#include<stdio.h>unsingedcharvar;voidmain(void){var=1;#asm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福建省泉州市泉港區中考物理一模試卷(含解析)
- 2024年足球比賽規則及其裁判應用試題及答案
- 游泳救生員常見技能檢查試題
- 模具設計評估與優化試題及答案
- 2024年籃球裁判員判決依據試題及答案
- 2024年模具設計師資格考試備考技巧試題及答案
- 農作物種子繁育的科技應用試題及答案
- 2024年農作物種子繁育員考試資料及試題答案
- 游泳救生員職業規劃的重要性與試題及答案
- 農作物種子管理和應用試題及答案
- 舞蹈培訓機構校長聘用合同
- 物流行業無人機配送方案
- 2025年中考語文二輪專題復習:現代文閱讀高頻考點及答題技巧 講義
- 風機事故完整版本
- 開工安全交底
- 北京市2020-2024年高考生物復習分類匯編:基因工程(含詳解)
- 無人機應急處置預案及流程
- 【MOOC】量子信息原理與應用-南京大學 中國大學慕課MOOC答案
- 壓接端子檢驗標準
- 一年級語文下冊in-ing拼音練習2018(部編版)
- 幼兒園 家具玩具類 設備采購相關參數(僅供參考)
評論
0/150
提交評論