PIC單片機(jī)C語(yǔ)言使用手冊(cè)_第1頁(yè)
PIC單片機(jī)C語(yǔ)言使用手冊(cè)_第2頁(yè)
PIC單片機(jī)C語(yǔ)言使用手冊(cè)_第3頁(yè)
PIC單片機(jī)C語(yǔ)言使用手冊(cè)_第4頁(yè)
PIC單片機(jī)C語(yǔ)言使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本手冊(cè)分兩部分:第一部分HI-TECHPICCC的使用說(shuō)明.這里我們只講述了PICCC與標(biāo)準(zhǔn)C的不同,它不是一本C語(yǔ)言的教程,并且我們假定你有C語(yǔ)言的基礎(chǔ).第二部分在偉福集成環(huán)境下使用PICC.講述在偉福集成環(huán)境如可設(shè)置PICC,簡(jiǎn)單的調(diào)試步驟.更詳細(xì)的說(shuō)明請(qǐng)參閱偉福仿真器使用手冊(cè).關(guān)于如何在MPLAB下使用PICCC語(yǔ)言,請(qǐng)參閱Microchip相應(yīng)的手冊(cè).南京偉福實(shí)業(yè)有限公司電話:0253193973網(wǎng)址:HYPERLINK電子信箱:HYPERLINKmailto:wave-cn@263.netwave-cn@263.netPICCC編譯器請(qǐng)向Microchip上海分公司購(gòu)買,售價(jià):RMB599.電話:02162755700網(wǎng)址:HYPERLINKHi-tech公司網(wǎng)址:HYPERLINK第一部分為了對(duì)PIC單片機(jī)有更好的支持,PICC在標(biāo)準(zhǔn)C的基礎(chǔ)上作了一些擴(kuò)充:定義I/O函數(shù),以便在你的硬件系統(tǒng)中使用<stdio.h>中定義的函數(shù)。用C語(yǔ)言編寫(xiě)中斷服務(wù)程序用C語(yǔ)言編寫(xiě)I/O操作程序C語(yǔ)言與匯編語(yǔ)言間的接口1-1與標(biāo)準(zhǔn)C的不同PICC只在一處與標(biāo)準(zhǔn)C不同:函數(shù)的重入。因?yàn)镻IC單片機(jī)的寄存器及堆棧有限,所以PICC不支持可重入函數(shù)。1-2支持的PIC芯片PICC支持很多PIC單片機(jī),支持PIC單片機(jī)的類型在LIB目錄下的picinfo.ini文件中有定義。1-3PICC包含一些標(biāo)準(zhǔn)庫(kù)1-4PICC編譯器可以輸出一些格式的目標(biāo)文件,缺省設(shè)置為輸出Bytecraft的'COD'格式和Intel的'HEX'格式。你可以用表1-1中的命令來(lái)指定輸出格式。表1-1格式名稱描述PICC命令文件類型MotorolaHEXS1/S9typehexfile-MOT.HEXIntelHEXIntelstylehexrecords(缺省)-INTEL.HEXBinarySimplebinaryimage-BIN.BINUBROFUniversalBinaryImageRelocatableFormat-UBROF.UBRTektronixHEXTektronixstylehexrecords-TEK.HEXAmericanHexformatwithsymbolsforAmerican-AAHEX.HEXAutomationHEXAutomationemulatorsBytecraft.CODBytecraftcodeformat(缺省)n/a(缺省).CODLibraryHI-TECHlibraryfilen/a.LIB1-5符號(hào)文件PICC-G命令用于生成符號(hào)文件,有了符號(hào)文件,你就可以進(jìn)行源程序調(diào)試.速度快.所有的位變量在startup是被清0,請(qǐng)?jiān)诔绦蜷_(kāi)始處初始化它們。如果將一個(gè)整型數(shù)賦給位變量,只是將最低位賦給位變量,如果你是想要將一個(gè)整型變量是否為0賦值給一個(gè)位變量,請(qǐng)用:bitvar=other_var!=0;如要你使用了PICC的-STRICT命令,bit將被視為非法命令。1-10-2-1使用可位位變量的定義可以與絕對(duì)地址的定義結(jié)合起來(lái)使用。如:為了訪問(wèn)STATUS中PowerDown位,先定義STATUS的絕對(duì)地址為3,然后再定義一位變量絕對(duì)地址為27staticunsignedcharSTATUS@0x03;staticbitPD@(unsigned)&STATUS*8+3;注意:頭文件中已定義所有的特殊功能寄存器及相應(yīng)的位寄存器.1-10PICC浮點(diǎn)數(shù)使用IEEE75432位格式和IEEE754(截?cái)?24位格式.float類型使用24位格式,double使用24位或32位格式,由PICC命令控制,-D24使用24位格式,-D32使用32位格式.1-11絕對(duì)地址變量一個(gè)全局的或靜態(tài)的變量可以定位絕對(duì)地址,使用如下格式:unsignedcharPortvar@0x06;這里定義了一個(gè)名為'Portvar'的變量,地址為06h,注意,編譯器并不保留任何單元,僅僅是將一個(gè)變量分配在06h單元.它等價(jià)于匯編語(yǔ)言:_PortvarEQU06h編譯器及連接器都不作任何檢查,完全由程序員保證分配不會(huì)發(fā)生沖突.1-12結(jié)構(gòu)與聯(lián)合PICC支持struct及union,它們可以作為函數(shù)的參數(shù)及返回值,也可以作為指針指向的目標(biāo).1-12-1PICC支持在結(jié)構(gòu)上使用限定符,如果在一個(gè)結(jié)構(gòu)上使用限定符,那么,這個(gè)結(jié)構(gòu)的所有成員都被限定.如:bank1struct{intnumber;int*ptr;}在這個(gè)結(jié)構(gòu)里,number,ptr都被放在bank1寄存器內(nèi).1-12-2結(jié)構(gòu)中定義PICC支持在結(jié)構(gòu)中定義位成員.位成員按最低有效位在前的方式存儲(chǔ),位成員總是按8位字節(jié)方式存放,當(dāng)當(dāng)前字節(jié)放滿后再放下一個(gè)字節(jié),位成員不會(huì)跨字節(jié)存放.如:struct{unsignedhi:1;unsigneddummy:6;unsignedlo:1;}foo@0x10;結(jié)構(gòu)foo占用10h單元,hi為10h單元的第0位,lo為10h單元的第7位,dummy為10h單元的2-6位,(第6位為最高有效位)不使用的位可用未命名的位成員來(lái)定義,如果我們不使用dummy,就可定義為:struct{unsignedhi:1;unsigned:6;unsignedlo:1;}foo@0x10;1-13在ROM及RAM存放字符串.一個(gè)未說(shuō)明的字符串總是存放在ROM中,并且只能通過(guò)常量指針為訪問(wèn).#defineHELLO"Helloword"SendBuff(HELLO);一個(gè)非常量的數(shù)組被一個(gè)字符串初始化,如:charfred[]='Helloworld";將在RAM中保留一個(gè)數(shù)組,在startup時(shí),用存放在ROM中的"Helloworld"來(lái)初始化.如果要將一個(gè)常數(shù)字符串作為函數(shù)參數(shù)或?qū)⑺x給一個(gè)指針,必須定義一個(gè)常數(shù)指針.如:voidSendBuff(constchar*ptr)1-14const,volatile類型限定符.PICC支持標(biāo)準(zhǔn)C的const,volatile類型限定符const類型限定符通知編譯器一個(gè)目標(biāo)含有的常量并且不會(huì)改變.一個(gè)常量被放在ROM中,顯然一個(gè)常量是不能被賦值的.如:constintversion=3;volatile類型限定符通知編譯器,一個(gè)目標(biāo)不能保證在連續(xù)的訪問(wèn)中不被改變.這將禁止編譯器對(duì)該目標(biāo)的優(yōu)化.所有的I/O口及在中斷中使用的變量必須有volatile類型限定符.如:volatileunsignedcharP_A@0x05;對(duì)volatile目標(biāo)的訪問(wèn)與對(duì)non-volatile的訪問(wèn)是不同的,如對(duì)volatile目標(biāo)置1是先將該目標(biāo)清0后加1,而對(duì)non-volatile目標(biāo)置1是先將1放在W中后再將W賦值到目標(biāo)中.1-14特別的類型限定符.PICC支持一些特別的類型限定符:persistent,bank1,bank2及bank3,這些限定符不可用于自動(dòng)變量.1-14按C的標(biāo)準(zhǔn),所有的C變量在startup時(shí)被清為0.但是在有些情況下,我們希望在復(fù)位后仍保持一些變量的值.persistent類型限定符使被其限定的變量在startup時(shí)不被清0,而保留原有的值.1-14-2bank1,bank2及bank3bank1,bank2及bank3類型限定符用于指定變量所在的寄存器頁(yè).如:staticbank3unsignedcharfred;bank3unsignedchar*ptrfred;缺省頁(yè)是bank01-15C語(yǔ)言中的中斷處理在PICCC語(yǔ)言中可以用"interrupt"限定符來(lái)編寫(xiě)中斷服務(wù)程序.一個(gè)中斷服務(wù)函數(shù)必須用interruptvoid來(lái)定義,不能有參數(shù),并且不能被C語(yǔ)言直接調(diào)用.如:longtick_count;voidinterrupttc_int(void){++tick_count;}1-15-1在中斷中保存PIC單片機(jī)硬件只保存PC,PICC編譯器自動(dòng)地保存其它可能用到的變量.但是編譯器無(wú)法確定inline中的匯編語(yǔ)言段使用變量的情況,你必須自已保護(hù)它們.1-15-2在PIC.H中定義了所有的中斷位,di()關(guān)閉所有中斷,ei()打開(kāi)所有中斷.如:ADIE=1;//A/DinterruptwillbeusedPEIE=1;//allperipheralinterruptsareenabledei();//enableallinterruptsdi();//disableallinterrupts1-16在C中使用匯編語(yǔ)言#asm,#endasm,asm()可以在C語(yǔ)言中直接使用匯編語(yǔ)言.#asm,#endasm用來(lái)加入一段匯編語(yǔ)言,而asm()用來(lái)加入一條匯編語(yǔ)言.如:#include<stdio.h>unsingedcharvar;voidmain(void){var=1;#asmrlf_var,1rlf_var,1#endasmasm("rlf_var,1");}1-17函數(shù)調(diào)用變換由于PIC5X只有兩級(jí)堆棧,PICC編譯器使用轉(zhuǎn)移指令來(lái)調(diào)用函數(shù),這樣被套調(diào)用層次增加,但調(diào)用速度下降,請(qǐng)?jiān)谛枰焖僬{(diào)用的函數(shù)前加fastcall來(lái)指定編譯器直接使用調(diào)用指令調(diào)用函數(shù).對(duì)于14位的PIC單片機(jī),將永遠(yuǎn)使用調(diào)用指令調(diào)用.1-18MPLAB使用的調(diào)試控制項(xiàng)-FACKLOCAL命令用于在MPLAB下觀察函數(shù)內(nèi)的局部變量-MPLAB_ICD命令用于使用ICD調(diào)試C語(yǔ)言.第二部分安裝PICC將CD-ROM裝入光驅(qū),自動(dòng)運(yùn)行程序?qū)⒆詣?dòng)啟動(dòng),如果你已禁止自動(dòng)運(yùn)行功能,可以直接運(yùn)行:cd_drive:\compiler\install.exe安裝程序?qū)⒅笇?dǎo)你完成PICC的安裝.設(shè)置偉福集成環(huán)境在偉福集成環(huán)境中,將編譯器路徑指向PICC所在目錄將

溫馨提示

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

評(píng)論

0/150

提交評(píng)論