PIC單片機(jī)C知識(shí)點(diǎn)匯總
PICC變量及定義
1、當(dāng)變量為多字節(jié)數(shù)據(jù)時(shí),PICC按低字節(jié)存放在低地址、高字節(jié)存放在高地址的原則存放變量,并以最低字節(jié)的地址作為該變量的地址。例如int型變量i的值為0X1234,低字節(jié)0x34存放在0X30,高字節(jié)0x12存放在0X31,并以0x30作為變量i的地址。
2、單片機(jī)的帶符號(hào)的整數(shù)均以補(bǔ)碼方式存放。對(duì)于二進(jìn)制數(shù)來說,先減一后取反和先取反后加1得到的結(jié)果是一樣的。
3、標(biāo)準(zhǔn)C中沒有位變量,位變量是PICC C語言中特有的。有了位變量,就可以方便的進(jìn)行位操作,設(shè)置某一引腳是高電平還是低電平。
4、強(qiáng)制類型轉(zhuǎn)換的一般表達(dá)式為 (類型說明符)(表達(dá)式) 作用:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表達(dá)的類型
如:(float)x; //強(qiáng)制把X轉(zhuǎn)換成實(shí)型,不管X為何類型的變量,轉(zhuǎn)自21ic基礎(chǔ)知識(shí)
PICC變量修飾關(guān)鍵詞
1、extern (外部)變量聲明
如果一個(gè)C程序文件要使用一些有其他文件定義的變量或者引用由嵌入式匯編程序定義的變量,那么在本程序文件中要將這些變量聲明成“extern”(外部)類型
2、volatile(易變)型變量聲明
volatile 關(guān)鍵字是標(biāo)準(zhǔn)C中沒有的,告訴PICC,這些變量是隨機(jī)的,不要對(duì)變量進(jìn)行隨機(jī)處理。
在相關(guān)的頭文件中,相關(guān)的寄存器都被定義成volatile型。
3、const (常數(shù))型變量聲明
在變量定義前冠以"const"關(guān)鍵詞,變量將成為常數(shù),程序運(yùn)行過程中不能對(duì)其進(jìn)行修改。
單片機(jī)的常數(shù)實(shí)際是存在于程序存儲(chǔ)器中的,并以查表的形式返回值。通常單片機(jī)的程序存儲(chǔ)器相對(duì)較大,可以存入較多的常數(shù)。
一個(gè)程序存儲(chǔ)器單元(字)只能存儲(chǔ)一個(gè)8位的字節(jié)常數(shù),雖然程序存儲(chǔ)器是14位的。
4、persistent(非初始化)常量聲明
聲明此類變量無須在復(fù)位時(shí)自動(dòng)清零,并且在退出某些函數(shù)時(shí)這些變量仍然保留。
5、static(靜態(tài))常量聲明
默認(rèn)的變量都是自動(dòng)變量,自動(dòng)變量指的是當(dāng)調(diào)用函數(shù)返回后這些局部變量不再保留,即不存在。若在聲明中加入靜態(tài)變量修飾詞,在退出函數(shù)后,這些變量仍然保留。
6、bank(體)選擇聲明
由于PIC16系列單片機(jī)的RAM數(shù)據(jù)存儲(chǔ)器分為4個(gè)體,因此在定義變量時(shí)要指明是哪個(gè)體,默認(rèn)為體0.用bank1~bank3指定變量存放在相應(yīng)的體。
設(shè)計(jì)者應(yīng)當(dāng)知道,自己編制的程序的數(shù)據(jù)存儲(chǔ)器占用量是多少。
在PICC的變量定義中,對(duì)于全局變量還可以指定地址。例如:char AA @0X30
PICC中支持的結(jié)構(gòu)體與共同體,與標(biāo)準(zhǔn)C沒有區(qū)別。
PICC的指針:
1、指向RAM的指針
PICC在編譯C源程序時(shí)將指向RAM的指針操作最終用FSR來實(shí)現(xiàn)間接尋址。因此在定義指針時(shí)必須明確指定該指針?biāo)m用的尋址范圍和指針變量本身存在的范圍。例如 bank3 char *bank1 zz2定義了指向bank2/3的指針,指針本身存在于bank1中。
在用指向RAM的指針時(shí),要注意體的位置匹配。
2、指向FLASHROM常數(shù)的指針
PICC定義的常數(shù)是存放在程序存儲(chǔ)器的,即FALSHROM,簡稱ROM.
指向常數(shù)的指針可以指向?qū)幫庖粋€(gè)常數(shù)而不必重復(fù)定義。