專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
在BBS上看到很多兄弟在使用HT-PICC時(shí)遇到困難?;蛘呤菍?duì)PIC-C語言不太熟。就我自己個(gè)人來說,我也不太熟。但我很希望就我自己所知道的能夠和大家一起學(xué)習(xí)和分享。
首先我簡(jiǎn)單說明一下PICC的執(zhí)行程序。(HT-PICC-BIN)
CPP:先行處理前置處理器的虛指令及移除程序的注釋說明。
P1:轉(zhuǎn)換程序?yàn)橹浄蜋z查程序語法。
CGPIC:將原程序轉(zhuǎn)換為匯編語言。
ASPIC:將匯編語言轉(zhuǎn)換為可以重新定位的機(jī)器碼。
HLINK:安排變量在RAM的實(shí)際地址。連接其他的頭文件。
OBJTOHEX:產(chǎn)生大家需要的HEX文件。
CROMWELL:產(chǎn)生一些編譯信息。
這是PICC所需要的執(zhí)行程序,可以在BIN里找到。
編譯流程按我上所說的從上到下。
在寫程序時(shí)首先應(yīng)該寫的是#INCLUDE 〈pic.h〉
pic.h那位感興趣的話可以在C:\HT-PIC\include\pic.h
在C語言中可以使用@定義SFR的絕對(duì)地址。如:
static volatile unsigned char POPTA @ 0x05;
有一個(gè)關(guān)鍵詞是volatile 用來告訴編譯器POPTA 是一個(gè)易變變量。變量數(shù)據(jù)并不一定需要經(jīng)過程序才會(huì)改變。我個(gè)人認(rèn)為所有的端口和中斷所 用到的變量應(yīng)該定義為volatile.
在C語言中也可以對(duì)端口直接進(jìn)行位尋址。如:
static volatile bit reeds @ (unsigned)&POPTA*8+1;
定義后就可以在程序中直接使用reeds位變量。
與volatile變量相對(duì)的是const,它會(huì)告訴編譯器此變量不能被改變。
還有一些其他變量都是C語言中的,就不在這說了。
Persistent:告訴編譯器此變量在程序重啟時(shí)變量?jī)?nèi)容不會(huì)改變。如
Persistent unsigned char timer;
在PICC中還可以用BANK 1 OR BANK 2,來 把指定的變量放在指定的BANK ZHONG
bank2 unsigned char timer