PICC變量的類型與定義
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為何類型的變量
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,簡(jiǎn)稱ROM.
指向常數(shù)的指針可以指向?qū)幫庖粋€(gè)常數(shù)而不必重復(fù)定義。
上一篇:PIC16F887 SPI CAN 傳輸,操作MCP2515
下一篇:MPLAB X XC8編譯器件入門 基于PIC18F45K80
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 高性能電動(dòng)滑板車 BLDC 電機(jī)驅(qū)動(dòng)器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計(jì)算+AI推理”一體化設(shè)計(jì),PLC協(xié)議解析與缺陷檢測(cè)的實(shí)時(shí)聯(lián)動(dòng)
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實(shí)時(shí)疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計(jì)
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢(shì)”多模態(tài)交互設(shè)計(jì)
- 工業(yè)機(jī)器人高精度力控的“雙模融合”傳感器設(shè)計(jì)
- 工業(yè)機(jī)器人集群的“數(shù)字孿生-物理實(shí)體”閉環(huán)優(yōu)化
- 工業(yè)以太網(wǎng)交換機(jī)的“時(shí)間敏感網(wǎng)絡(luò)(TSN)”改造
- 工業(yè)現(xiàn)場(chǎng)信號(hào)測(cè)試:耦合方式選擇實(shí)戰(zhàn)案例
- AWorks編程—如何使用socket API建立服務(wù)器與客戶端
- 技術(shù)文章—AWorks編程:嵌入式C語言的內(nèi)存管理
- 協(xié)作機(jī)器人在汽車產(chǎn)業(yè)找到新應(yīng)用場(chǎng)景
- 純視覺派“掌控”自動(dòng)駕駛話語權(quán),系統(tǒng)連接如何設(shè)計(jì)
- 云朵在天空中流動(dòng)—led藝術(shù)圓盤營(yíng)造空間氛圍
- 馬來西亞管制或牽動(dòng)被動(dòng)元件下半年的供需格局
- 總投50億元,電科北方集成電路材料產(chǎn)業(yè)基地項(xiàng)目開工
- 美格納自愿配合美國(guó)審查,智路資本海外并購又生變數(shù)
- 50%新iPhone或支持5G毫米波
- 日本將聯(lián)合美歐限制半導(dǎo)體與人工智能等技術(shù)出口
- TFFS文件系統(tǒng)COPY符號(hào)未定義。
- Altera-SoCFPGA-HelloWorld-Linux-GNU
- uboot燒寫問題,大家指教。初學(xué)。謝謝大家了。
- 剛剛參加工作,電源研發(fā)方向。求相關(guān)視頻。。。
- 【嗮樣片】TI樣片申請(qǐng)
- EEWORLD大學(xué)堂----SIMPLE SWITCHER易電源寬溫電源模塊跌蕩測(cè)試
- 誰能轉(zhuǎn)我20個(gè)E金幣,我直接支付寶轉(zhuǎn)給你現(xiàn)金20元。
- 浮點(diǎn)型與4字節(jié)互相轉(zhuǎn)換程序
- TMS320F2812工作機(jī)制及指令周期測(cè)試
- 今天在深圳遇到強(qiáng)仔了