簡介:PIC C語言編程_PICC中的變量定義
1)PICC中的基本變量類型
PICC支持的基本變量類型見表1。PICC遵循Little-endian標(biāo)準(zhǔn),多字節(jié)變量的低字節(jié)放在存儲空間的低地址,高字節(jié)放在高地址。
表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)位位中帶出返回。
上一篇:PIC單片機(jī)C語言編程的基本框架
下一篇:PIC C語言編程_PICC中的指針
推薦閱讀
史海拾趣
ALLEN BRADLEY 公司是一家享有盛譽(yù)的電子行業(yè)企業(yè),其發(fā)展歷程有許多引人注目的里程碑。以下是關(guān)于 ALLEN BRADLEY 公司發(fā)展的五個(gè)相關(guān)故事:
公司成立和早期發(fā)展: ALLEN BRADLEY 公司于1903年由Lynde Bradley和Dr. Stanton Allen 在美國威斯康星州的密爾沃基市成立。最初,公司主要從事制造電氣開關(guān)、繼電器和其他電氣控制設(shè)備。他們的產(chǎn)品質(zhì)量和可靠性使其迅速成為當(dāng)時(shí)工業(yè)領(lǐng)域的領(lǐng)先供應(yīng)商之一。
工業(yè)自動化的先驅(qū): 在20世紀(jì)上半葉,ALLEN BRADLEY 公司成為工業(yè)自動化領(lǐng)域的先驅(qū)之一。他們開發(fā)了許多創(chuàng)新的產(chǎn)品和技術(shù),如PLC(可編程邏輯控制器),這項(xiàng)技術(shù)徹底改變了工廠和生產(chǎn)線的運(yùn)作方式。PLC的普及使得生產(chǎn)自動化水平大幅提高,為工業(yè)生產(chǎn)效率的提升做出了重要貢獻(xiàn)。
公司的擴(kuò)張與國際化: 隨著業(yè)務(wù)的不斷壯大,ALLEN BRADLEY 公司開始向全球擴(kuò)張。他們在世界各地建立了銷售和服務(wù)網(wǎng)絡(luò),為客戶提供更加全面的支持。逐步建立的全球業(yè)務(wù)網(wǎng)絡(luò)使得 ALLEN BRADLEY 成為了全球工業(yè)自動化領(lǐng)域的領(lǐng)先品牌之一。
匯豐電氣(Rockwell Automation)的收購: 1990年,匯豐電氣公司(Rockwell International)收購了 ALLEN BRADLEY 公司。這一收購加強(qiáng)了兩家公司在工業(yè)自動化領(lǐng)域的實(shí)力,并進(jìn)一步鞏固了其在全球市場上的地位。匯豐電氣公司將 ALLEN BRADLEY 公司的產(chǎn)品整合到其工業(yè)自動化解決方案中,為客戶提供更加全面的解決方案和服務(wù)。
持續(xù)創(chuàng)新與發(fā)展: ALLEN BRADLEY 公司一直致力于持續(xù)創(chuàng)新和技術(shù)發(fā)展。他們不斷推出新產(chǎn)品,引領(lǐng)著工業(yè)自動化技術(shù)的發(fā)展方向。通過不斷地投資研發(fā)和技術(shù)創(chuàng)新,ALLEN BRADLEY 公司在工業(yè)自動化領(lǐng)域保持著領(lǐng)先地位,并為客戶提供更加先進(jìn)、高效的解決方案。
以上是 ALLEN BRADLEY 公司發(fā)展的五個(gè)相關(guān)故事,這些故事展示了該公司在電子行業(yè)中的重要地位和不斷發(fā)展壯大的歷程。
Analogic Corporation 是一家總部位于美國馬薩諸塞州的跨國公司,成立于1967年,主要從事醫(yī)療影像和航空安全領(lǐng)域的高性能技術(shù)產(chǎn)品的設(shè)計(jì)、制造和銷售。以下是 Analogic Corporation 公司發(fā)展的相關(guān)故事:
成立與初期階段:Analogic Corporation 成立于1967年,由 Bernard M. Gordon 博士和 Raymond J. Stata 博士等人共同創(chuàng)立。公司最初的業(yè)務(wù)重點(diǎn)是設(shè)計(jì)和制造用于醫(yī)學(xué)影像診斷的模擬計(jì)算機(jī)設(shè)備。這些設(shè)備利用先進(jìn)的模擬電子技術(shù),幫助醫(yī)生進(jìn)行 X 射線、超聲波和核磁共振成像等醫(yī)學(xué)檢查。
技術(shù)創(chuàng)新與產(chǎn)品優(yōu)化:Analogic Corporation 在技術(shù)創(chuàng)新方面一直處于行業(yè)前沿。公司不斷投入研發(fā),并開發(fā)出一系列先進(jìn)的醫(yī)療影像產(chǎn)品和航空安全技術(shù)。其產(chǎn)品包括 CT 掃描儀、核磁共振成像設(shè)備、安全檢測設(shè)備等。這些產(chǎn)品以其高分辨率、高性能和可靠性而聞名,被廣泛應(yīng)用于醫(yī)療保健和安全檢測領(lǐng)域。
市場拓展與全球業(yè)務(wù):Analogic Corporation 在全球范圍內(nèi)建立了廣泛的銷售網(wǎng)絡(luò)和合作伙伴關(guān)系。公司的產(chǎn)品遠(yuǎn)銷世界各地,包括北美、歐洲、亞洲等地區(qū)。通過與國際合作伙伴的合作,Analogic Corporation 不斷拓展業(yè)務(wù)范圍,提升產(chǎn)品的市場占有率和影響力。
應(yīng)用領(lǐng)域與客戶合作:Analogic Corporation 的產(chǎn)品被廣泛應(yīng)用于醫(yī)療保健和航空安全領(lǐng)域。公司與全球各大醫(yī)院、診所、航空公司和安檢機(jī)構(gòu)等客戶建立了長期穩(wěn)定的合作關(guān)系。通過與客戶的緊密合作,Analogic Corporation 不斷了解市場需求,提供定制化的解決方案,滿足客戶的特定需求。
持續(xù)發(fā)展與未來展望:作為一家具有悠久歷史和豐富經(jīng)驗(yàn)的公司,Analogic Corporation 將繼續(xù)致力于技術(shù)創(chuàng)新和產(chǎn)品研發(fā),以滿足不斷變化的市場需求。公司將繼續(xù)加強(qiáng)與客戶和合作伙伴的合作關(guān)系,不斷拓展業(yè)務(wù)領(lǐng)域,進(jìn)一步提升產(chǎn)品性能和服務(wù)水平。在未來,Analogic Corporation 將繼續(xù)保持行業(yè)領(lǐng)先地位,為客戶提供更加優(yōu)質(zhì)和可靠的解決方案。
盡管Crystek公司在發(fā)展過程中取得了顯著的成就,但也面臨著一些挑戰(zhàn)和困難。例如,隨著行業(yè)競爭的加劇和市場需求的不斷變化,公司需要不斷調(diào)整戰(zhàn)略方向和產(chǎn)品結(jié)構(gòu)以適應(yīng)市場的變化。同時(shí),公司還需要加強(qiáng)人才培養(yǎng)和團(tuán)隊(duì)建設(shè),提升員工的技能水平和創(chuàng)新能力。然而,Crystek公司始終保持著積極進(jìn)取的態(tài)度和勇于面對挑戰(zhàn)的精神,相信在未來的發(fā)展中,公司將繼續(xù)保持領(lǐng)先地位并創(chuàng)造更加輝煌的業(yè)績。
這五個(gè)故事展示了Crystek公司在電子行業(yè)中的發(fā)展歷程和取得的成就。從創(chuàng)業(yè)起步到技術(shù)創(chuàng)新、市場拓展、部門專業(yè)化以及應(yīng)對挑戰(zhàn)和未來發(fā)展,Crystek公司始終保持著積極進(jìn)取的精神和不斷創(chuàng)新的態(tài)度,為電子行業(yè)的發(fā)展做出了重要貢獻(xiàn)。
品質(zhì)是Comtech AHA Corp的生命線。公司始終堅(jiān)持嚴(yán)格的品質(zhì)管理,從原材料采購到生產(chǎn)流程,再到成品檢驗(yàn),每一個(gè)環(huán)節(jié)都嚴(yán)格把關(guān)。正是這種對品質(zhì)的執(zhí)著追求,使得Comtech AHA Corp的產(chǎn)品在市場上贏得了良好的口碑。許多知名企業(yè)紛紛與Comtech AHA Corp建立長期合作關(guān)系,進(jìn)一步推動了公司的發(fā)展。
隨著國內(nèi)市場的飽和,Comtech AHA Corp開始積極尋求國際化發(fā)展。公司先后在多個(gè)國家和地區(qū)設(shè)立了分支機(jī)構(gòu),拓展國際市場。通過與國際知名企業(yè)的合作與交流,Comtech AHA Corp不斷提升自身的技術(shù)水平和市場競爭力。如今,公司的產(chǎn)品已經(jīng)遠(yuǎn)銷海外多個(gè)國家和地區(qū),國際化戰(zhàn)略取得了顯著成效。
隨著公司技術(shù)的不斷成熟和產(chǎn)品的不斷優(yōu)化,EMS GmbH公司開始積極拓展市場。公司不僅在歐洲市場取得了顯著的成績,還逐漸將業(yè)務(wù)拓展至全球范圍。通過參加國際展會、與合作伙伴建立戰(zhàn)略合作關(guān)系等方式,EMS GmbH公司不斷提升品牌知名度和影響力。同時(shí),公司還注重產(chǎn)品質(zhì)量和服務(wù)質(zhì)量的提升,以確保在激烈的市場競爭中保持競爭優(yōu)勢。
模擬電路設(shè)計(jì)黃金時(shí)代結(jié)束了嗎? 在ISSCC大會開幕的頭一天晚上,按照慣例舉辦了一場晚間技術(shù)研討會。其中,由模擬技術(shù)研究領(lǐng)域的著名研究員們進(jìn)行研討的模擬電路技術(shù)專題研討會,是每次都有眾多人員參加的重頭會議。今年的主題是“模擬電路設(shè)計(jì)的黃金時(shí)代結(jié)束了嗎?(Is the Golden ...… 查看全部問答∨ |
IAR 編譯環(huán)境中編譯AVR單片機(jī)的C語言有如下一種定義: extern void StoreDefChar(unsigned char id, unsigned char __flash * pat ); 請問在這句定義中的:unsigned char __flash * 是什么意思? 請問怎么樣轉(zhuǎn)換到GCC中去。 ...… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:00 編輯 請大家繼續(xù)追加、我會整理出清單。 一、國內(nèi)TV DESIGN HOUSE: 上海這邊的有全景、 奇普、英諾、pixelworks、 trident、ST、高清、 天柏、復(fù)旦微電子、先鋒、上廣電、大亞、戎訊、協(xié)和、華 ...… 查看全部問答∨ |
|
本帖最后由 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)顯示組成: ...… 查看全部問答∨ |
|
【設(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ā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 強(qiáng)強(qiáng)聯(lián)合再進(jìn)階!理想AD Pro輔助駕駛正式升級搭載地平線征程6M
- 英特爾與黑芝麻智能簽署合作備忘錄,聯(lián)合發(fā)布艙駕融合平臺
- 英特爾與面壁智能宣布建立戰(zhàn)略合作伙伴關(guān)系,共同研發(fā)端側(cè)原生智能座艙
- 芯馳科技發(fā)布X10,打造全民AI時(shí)代座艙處理器新標(biāo)桿
- 精準(zhǔn)適配,輕裝全能!芯馳發(fā)布E3系列高端智控MCU三大應(yīng)用場景
- 場景定義、精準(zhǔn)創(chuàng)「芯」,芯馳全新發(fā)布AI座艙處理器和高端智控系列
- Arm 技術(shù)加持,地平線以 HSD 及征程 6P 推動汽車智能化變革
- 華為自動駕駛技術(shù)解讀
- 加速電動化轉(zhuǎn)型,邦迪汽車系統(tǒng)攜多款創(chuàng)新產(chǎn)品首秀2025上海車展
- 數(shù)據(jù)中心面臨電力約束挑戰(zhàn),推動GenAI終端發(fā)展
- 直播已結(jié)束【解鎖 TI Sitara AM2x MCU 在電機(jī)驅(qū)動中的新可能】
- 恩智浦跨界處理器能玩出多少應(yīng)用
- Intel白皮書下載有獎
- ST電機(jī)評測有獎大作戰(zhàn):領(lǐng)取任務(wù)卡,一起啃電機(jī)驅(qū)動難題!
- 瑞薩電子最新觸控微控制器R7F0C208入門套件免費(fèi)申請,參與申請還能贏好禮!
- 2024安路科技FPGA技術(shù)研討會-廣州站 火熱報(bào)名中
- 有獎直播:是德科技高速芯片設(shè)計(jì)新技術(shù)研討會
- 2024 DigiKey 應(yīng)用說:樹莓派 5 在視頻直播中的應(yīng)用
- 看MCU精品課程,讓你立馬變身考試達(dá)人!
- Quartus Prime設(shè)計(jì)軟件15.1版 帶你體驗(yàn)革命性的設(shè)計(jì)生涯
- 貴州大數(shù)據(jù)創(chuàng)新基地獲批建設(shè) 籌建工作明年完成
- 中國集成電路產(chǎn)業(yè)發(fā)展史
- 無錫堅(jiān)守集成電路產(chǎn)業(yè) “東方硅谷”澎湃“芯動力”
- 2017年全球十大半導(dǎo)體廠排名:三星首次登頂
- GE照明正式進(jìn)入拍賣程序:究竟會花落誰家?
- 每臺小米手機(jī)僅賺2美元 蘋果是它的76倍
- 一加5T砂巖白正式發(fā)布:3499元的熊貓機(jī)旗艦,帥到?jīng)]朋友
- 三星全球智能機(jī)出貨預(yù)測下調(diào) 影響產(chǎn)業(yè)鏈廠商
- 宏達(dá)電下滑近三成
- 續(xù)航大提升!三星S8/S8+再次迎來安卓8.0更新
- 分享:基于DSP的人臉識別設(shè)計(jì)論文
- 【設(shè)計(jì)工具】Xilinx新版FPGA設(shè)計(jì)工具使FPGA可重復(fù)編程
- 國內(nèi)designhouse清單
- LED魔術(shù)搖棒設(shè)計(jì)
- ~ccs總提示debug assertion failed
- 為什么運(yùn)放一般要反比例放大?
- LCD顯示!
- 又沒那個(gè)網(wǎng)址是對通用定時(shí)器原理圖詳細(xì)的講解,能否發(fā)一下
- 再發(fā)一個(gè)pid的學(xué)習(xí)好資料,不看別后悔哦!~!!
- 模擬電路設(shè)計(jì)黃金時(shí)代結(jié)束了嗎?