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