娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月24日(星期一)

正在發(fā)生

2020年02月24日 | PIC C語言編程_PICC中的變量定義

發(fā)布者:自在逍遙 來源: eefocus關(guān)鍵字:PIC  C語言編程  PICC中  變量定義 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

簡介:PIC C語言編程_PICC中的變量定義


1)PICC中的基本變量類型


PICC支持的基本變量類型見表1。PICC遵循Little-endian標(biāo)準(zhǔn),多字節(jié)變量的低字節(jié)放在存儲空間的低地址,高字節(jié)放在高地址。

表1:PICC支持的基本變量類型

表1:PICC支持的基本變量類型


2)PICC中的高級變量


基于表1的基本變量,除了bit型位變量外,PICC完全支持?jǐn)?shù)組、結(jié)構(gòu)和聯(lián)合等復(fù)合型高級變量,這和標(biāo)準(zhǔn)的C語言所支持的高級變量類型沒有什么區(qū)別。例如:


數(shù)組:unsignedintdata[10];


結(jié)構(gòu):structcommInData{


unsignedcharinBuff[8];


unsignedchargetPtr,putPtr;


};


聯(lián)合:unionint_Byte{


unsignedcharc[2];


unsignedinti;


};


3)PICC中的局部變量


PICC把所有函數(shù)內(nèi)部定義的auto型局部變量放在bank0。為節(jié)約寶貴的存儲空間,它采用了一種被叫做“靜態(tài)覆蓋”的技術(shù)來實(shí)現(xiàn)局部變量的地址分配。其大致的原理是在編譯器編譯原代碼時(shí)掃描整個(gè)程序中函數(shù)調(diào)用的嵌套關(guān)系和層次,算出每個(gè)函數(shù)中的局部變量字節(jié)數(shù),然后為每個(gè)局部變量分配一個(gè)固定的地址,且按調(diào)用嵌套的層次關(guān)系各變量的地址可以相互重疊。利用這一技術(shù)后所有的動態(tài)局部變量都可以按已知的固定地址地進(jìn)行直接尋址,用PIC匯編指令實(shí)現(xiàn)的效率最高,但這時(shí)不能出現(xiàn)函數(shù)遞歸調(diào)用。PICC在編譯時(shí)會嚴(yán)格檢查遞歸調(diào)用的問題并認(rèn)為這是一個(gè)嚴(yán)重錯(cuò)誤而立即終止編譯過程。既然所有的局部變量將占用bank0的存儲空間,因此用戶自己定位在bank0內(nèi)的變量字節(jié)數(shù)將受到一定的限制,在實(shí)際使用時(shí)需注意。


4)PICC中的位變量


bit型位變量只能是全局的或靜態(tài)的。PICC將把定位在同一bank內(nèi)的8個(gè)位變量合并成一個(gè)字節(jié)存放于一個(gè)固定地址。因此所有針對位變量的操作將直接使用PIC單片機(jī)的位操作匯編指令高效實(shí)現(xiàn)。基于此,位變量不能是局部自動型變量,也無法將其組合成復(fù)合型高級變量。


PICC對整個(gè)數(shù)據(jù)存儲空間實(shí)行位編址,0x000單元的第0位是位地址0x0000,以此后推,每個(gè)字節(jié)有8個(gè)位地址。編制位地址的意義純粹是為了編譯器最后產(chǎn)生匯編級位操作指令而用,對編程人員來說基本可以不管。但若能了解位變量的位地址編址方式就可以在最后程序調(diào)試時(shí)方便地查找自己所定義的位變量,如果一個(gè)位變量flag1被編址為0x123,那么實(shí)際的存儲空間位于:


字節(jié)地址=0x123/8 =0x24


位偏移=0x123%8=3


即flag1位變量位于地址為0x24字節(jié)的第3位。在程序調(diào)試時(shí)如果要觀察flag1的變化,必須觀察地址為0x24的字節(jié)而不是0x123。


PIC單片機(jī)的位操作指令是非常高效的。因此,PICC在編譯原代碼時(shí)只要有可能,對普通變量的操作也將以最簡單的位操作指令來實(shí)現(xiàn)。假設(shè)一個(gè)字節(jié)變量tmp最后被定位在地址0x20,那么


tmp|=0x80 =>bsf 0x20,7


tmp&=0xf7 =>bcf 0x20,3


if(tmp&0xfe)=>btfsc0x20,0


即所有只對變量中某一位操作的C語句代碼將被直接編譯成匯編的位操作指令。雖然編程時(shí)可以不用太關(guān)心,但如果能了解編譯器是如何工作的,那將有助于引導(dǎo)我們寫出高效簡介的C語言原程序。在有些應(yīng)用中需要將一組位變量放在同一個(gè)字節(jié)中以便需要時(shí)一次性地進(jìn)行讀寫,這一功能可以通過定義一個(gè)位域結(jié)構(gòu)和一個(gè)字節(jié)變量的聯(lián)合來實(shí)現(xiàn),例如:


union{


struct{


unsignedb0:1;


unsignedb1:1;


unsignedb2:1;


unsignedb3:1;


unsignedb4:1;


unsignedb5:1;


unsigned:2;//最高兩位保留


}oneBit;


unsignedcharallBits;


}myFlag;


需要存取其中某一位時(shí)可以


myFlag.oneBit.b3=1;//b3位置1


一次性將全部位清零時(shí)可以


myFlag.allBits=0;//全部位變量清0


當(dāng)程序中把非位變量進(jìn)行強(qiáng)制類型轉(zhuǎn)換成位變量時(shí),要注意編譯器只對普通變量的最低位做判別:如果最低位是0,則轉(zhuǎn)換成位變量0;如果最低位是1,則轉(zhuǎn)換成位變量1。而標(biāo)準(zhǔn)的ANSI-C做法是判整個(gè)變量值是否為0。另外,函數(shù)可以返回一個(gè)位變量,實(shí)際上此返回的位變量將存放于單片機(jī)的進(jìn)位位中帶出返回。

關(guān)鍵字:PIC  C語言編程  PICC中  變量定義 引用地址:PIC C語言編程_PICC中的變量定義

上一篇:PIC單片機(jī)C語言編程的基本框架
下一篇:PIC C語言編程_PICC中的指針

推薦閱讀

CEVA,全球領(lǐng)先的智能和互聯(lián)設(shè)備的信號處理IP授權(quán)許可廠商 (納斯達(dá)克股票交易所代碼:CEVA) 宣布推出用于增強(qiáng)型移動寬帶(eMBB)的綜合5G知識產(chǎn)權(quán)(IP)平臺PentaG?。 PentaG符合3GPP 5G新無線電(NR)版本15并且軟件可升級到版本16,瞄準(zhǔn)智能手機(jī)、固定無線接入設(shè)備和各種嵌入式設(shè)備,以利用千兆級數(shù)據(jù)傳輸速率實(shí)現(xiàn)不同服務(wù)如 4K視頻流、增強(qiáng)現(xiàn)實(shí)、虛擬現(xiàn)...
如果有關(guān)注與VR相關(guān)的技術(shù)文章,你可能曾多次見過“二次投影(reprojection)”這個(gè)術(shù)語,如交錯(cuò)二次投影或異步二次投影。二次投影是為了解決VR游戲的苛刻性能要求,旨在填補(bǔ)無法及時(shí)渲染的幀。比方說一款游戲不能達(dá)到標(biāo)準(zhǔn)的90fps,這時(shí)交錯(cuò)二次投影將“強(qiáng)迫”其降至45fps,并在這基礎(chǔ)下每隔一幀進(jìn)行一次重新投影,從而實(shí)現(xiàn)90fps的幀率。作為交錯(cuò)二次投影...
增量配電改革推進(jìn)三年多時(shí)間,一直有不同聲音質(zhì)疑改革效果。大家往往把目光聚焦在了微觀試點(diǎn)項(xiàng)目身上,卻忽視了增量配電改革發(fā)揮的全局作用。增量配電改革是整個(gè)電力體制改革甚至能源革命密不可分的重要一環(huán),它的成效分析不僅僅是試點(diǎn)項(xiàng)目有沒有落地、投資有沒有錢賺、用戶電價(jià)有沒有降低等具體問題,更需要從全局視角審視其對于電力體制改革和能源革命...
當(dāng)材料的一端被加熱,另一端保持冷卻時(shí),熱電能源轉(zhuǎn)換就能夠產(chǎn)生電壓。對于科學(xué)家而言,找到一種高效的材料實(shí)現(xiàn)該科學(xué)原理一直是一項(xiàng)艱巨的任務(wù),需要材料具備三種看似不同的特性,即金屬的高導(dǎo)電性、半導(dǎo)體的高熱電靈敏度以及玻璃的低導(dǎo)熱性。迄今為止,科學(xué)家們研發(fā)的大多數(shù)高效熱電材料都采用鉛(Pb)為主要成分,這也限制了其應(yīng)用于大眾市場。熱電材料...

史海拾趣

問答坊 | AI 解惑

模擬電路設(shè)計(jì)黃金時(shí)代結(jié)束了嗎?

在ISSCC大會開幕的頭一天晚上,按照慣例舉辦了一場晚間技術(shù)研討會。其中,由模擬技術(shù)研究領(lǐng)域的著名研究員們進(jìn)行研討的模擬電路技術(shù)專題研討會,是每次都有眾多人員參加的重頭會議。今年的主題是“模擬電路設(shè)計(jì)的黃金時(shí)代結(jié)束了嗎?(Is the Golden ...…

查看全部問答∨

IAR AVR單片機(jī)的編寫方法是什么作用?

IAR 編譯環(huán)境中編譯AVR單片機(jī)的C語言有如下一種定義: extern void StoreDefChar(unsigned char id, unsigned char __flash * pat ); 請問在這句定義中的:unsigned char __flash * 是什么意思? 請問怎么樣轉(zhuǎn)換到GCC中去。 ...…

查看全部問答∨

國內(nèi)designhouse清單

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 編輯 請大家繼續(xù)追加、我會整理出清單。 一、國內(nèi)TV DESIGN HOUSE: 上海這邊的有全景、 奇普、英諾、pixelworks、 trident、ST、高清、 天柏、復(fù)旦微電子、先鋒、上廣電、大亞、戎訊、協(xié)和、華 ...…

查看全部問答∨

LED魔術(shù)搖棒設(shè)計(jì)

本帖最后由 paulhyde 于 2014-9-15 09:06 編輯 在網(wǎng)上找到的一個(gè)設(shè)計(jì)任務(wù),大家一起來討論一下啊! 1.設(shè)計(jì)任務(wù) 設(shè)計(jì)一個(gè)LED魔術(shù)搖棒。 2.設(shè)計(jì)要求 (1)系統(tǒng)供電:2節(jié)AA電池; (2)CPU:采用MCS-51系列單片機(jī)89C2051; (3)顯示組成: ...…

查看全部問答∨

節(jié)能燈的標(biāo)準(zhǔn)長度

節(jié)能燈的標(biāo)準(zhǔn)長度怎么規(guī)定?有標(biāo)準(zhǔn)的規(guī)定嗎?…

查看全部問答∨

LCD顯示!

嘿 各位: 誰有形如下面的字庫嗎? 有的話發(fā)給我好嗎? 我的油箱 xumanchenjun@126.com unsigned char LCD_Num1[LCDCHLENGTH][LCDCHWIDTH]= {                0,0,1,0,0,       &n ...…

查看全部問答∨

cpld資源問題討論

cpld在編碼和譯碼的時(shí)候占用的資源很大,不知哪位大蝦可有什么妙法來減少資源的使用嗎?如何較少宏單元的使用呢?…

查看全部問答∨

MSP430F449 接455K晶振問題

不能起振,有解決辦法嗎? 同樣的板,有的可以,有的不行 電容配多少合適?…

查看全部問答∨

【設(shè)計(jì)工具】Xilinx新版FPGA設(shè)計(jì)工具使FPGA可重復(fù)編程

賽靈思(Xilinx)公司推出新版FPGA設(shè)計(jì)的實(shí)時(shí)調(diào)試和驗(yàn)證軟件。該公司的ChipScope Pro 6.2i使FPGA可重復(fù)編程,對于邏輯和嵌入式系統(tǒng)的調(diào)試可靈活和快速地完成。該軟件的主要性能是附加了ATC2核,可將ChipScope Pro 6.2i與Agilent公司的16900、1690和16 ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 和平县| 元氏县| 任丘市| 涿鹿县| 吉林市| 正蓝旗| 溧水县| 江西省| 松溪县| 布拖县| 双城市| 大新县| 交口县| 南漳县| 汽车| 巴林左旗| 吴川市| 陇西县| 隆子县| 五常市| 南丰县| 浙江省| 宜城市| 嘉禾县| 小金县| 沙湾县| 翁牛特旗| 明水县| 卫辉市| 连云港市| 泗水县| 清远市| 资兴市| 双牌县| 阳山县| 连城县| 乐安县| 克什克腾旗| 宜宾市| 罗甸县| 玛多县|