利用這一技術后所有的動態(tài)局部變量都可以按已知的固定地址地進行直接尋址,用 PIC 匯編指令實現(xiàn)的效率最高,但這時不能出現(xiàn)函數(shù)遞歸調用。PICC 在編譯時會嚴格檢查遞歸調用的問題并認為這是一個嚴重錯誤而立即終止編譯過程。
為了使編譯器產(chǎn)生最高效的機器碼,PICC 把單片機中數(shù)據(jù)寄存器的 bank問題交由編程員自己管理,因此在定義用戶變量時你必須自己決定這些變量具體放在哪一個 bank 中。如果沒有特別指明,所定義的變量將被定位在 bank0,除了 bank0 內的變量聲明時不需特殊處理外,定義在其它 bank 內的變量前面必須加上相應的 bank序號
中檔系列 PIC 單片機數(shù)據(jù)寄存器的一個 bank 大小為 128 字節(jié),刨去前面若干字節(jié)的特殊功能寄存器區(qū)域,在 C 語言中某一 bank 內定義的變量字節(jié)總數(shù)不能超過可用 RAM 字節(jié)數(shù)。如果超過 bank 容量,在最后連接時會報錯,大致信息如下:
Error[000] : Can't find 0x12C words for psect rbss_1 in segment BANK1
連接器告訴你總共有 0x12C(300)個字節(jié)準備放到 bank1 中但 bank1 容量不夠。顯然,只有把一部分原本定位在 bank1 中的變量改放到其它 bank 中才能解決此問題。
為避免頻繁的 bank 切換以提高代碼效率,盡量把實現(xiàn)同一任務的變量定位在同一個 bank 內;對不同 bank 內的變量進行讀寫操作時也盡量把位于相同 bank 內的變量歸并在一起進行連續(xù)操作。
所有的局部變量將占用 bank0的存儲空間,因此用戶自己定位在 bank0 內的變量字節(jié)數(shù)將受到一定的限制,在實際使用時需注意。
bit 型位變量只能是全局的或靜態(tài)的。PICC 將把定位在同一 bank 內的 8 個位變量合并成一個字節(jié)存放于一個固定地址。因此所有針對位變量的操作將直接使用 PIC 單片機的位操作匯編指令高效實現(xiàn)。基于此,位變量不能是局部自動型變量,也無法將其組合成復合型高級變量。
PICC 對整個數(shù)據(jù)存儲空間實行位編址,0x000 單元的第 0 位是位地址 0x0000,以此后推,每個字節(jié)有 8 個位地址。編制位地址的意義純粹是為了編譯器最后產(chǎn)生匯編級位操作指令而用,對編程人員來說基本可以不管。但若能了解位變量的位地址編址方式就可以在最后程序調試時方便地查找自己所定義的位變量,如果一個位變量 flag1 被編址為 0x123,那么實際的存儲空間位于:
字節(jié)地址=0x123/8 = 0x24
位偏移 =0x123%8 = 3
即 flag1 位變量位于地址為 0x24 字節(jié)的第 3 位。在程序調試時如果要觀察 flag1 的變化,必須觀察地址為 0x24 的字節(jié)而不是 0x123。
unsigned char tmpData @ 0x20; //tmpData定位在地址0x20
千萬注意,PICC 對絕對定位的變量不保留地址空間。換句話說,上面變量 tmpData 的地址是 0x20,但最后 0x20 處完全有可能又被分配給了其它變量使用,這樣就發(fā)生了地址沖突。因此針對變量的絕對定位要特別小心。從筆者的應用經(jīng)驗看,在一般的程序設計中用戶自定義的變量實在是沒有絕對定位的必要。
如果需要,位變量也可以絕對定位。但必須遵循上面介紹的位變量編址的方式。如果一個普通變量已經(jīng)被絕對定位,那么此變量中的每個數(shù)據(jù)位就可以用下面的計算方式實現(xiàn)位變量指派:
unsigned char tmpData @ 0x20; //tmpData定位在地址0x20
bit tmpBit0 @ tmpData*8+0; //tmpBit0對應于tmpData第 0 位
bit tmpBit1 @ tmpData*8+1; //tmpBit0對應于tmpData第 1 位
bit tmpBit2 @ tmpData*8+2; //tmpBit0對應于tmpData第 2 位
如果 tmpData 事先沒有被絕對定位,那就不能用上面的位變量定位方式。
上一篇:PICC編譯指針詳解
下一篇:PICC——嵌入?yún)R編
推薦閱讀
史海拾趣
致強科技深知員工是企業(yè)持續(xù)發(fā)展的關鍵。因此,公司自成立以來便注重企業(yè)文化的建設,積極營造和諧、關愛的工作氛圍。公司管理層倡導“尊重人性”的理念,不僅為員工提供具有競爭力的薪酬福利,還通過EAP(員工協(xié)助計劃)等方式關注員工的心理健康和生活需求。EAP項目的實施不僅幫助員工緩解了工作壓力,還從多方面提升了員工的歸屬感和幸福感,為公司的長期發(fā)展奠定了堅實的人才基礎。
Digital Voice Systems, Inc.(DVSI)于1988年成立,當時正值數(shù)字通信技術的興起階段。公司創(chuàng)始人憑借對語音編解碼技術的深刻理解和前瞻性的市場洞察力,決定投身于這一領域。他們開發(fā)出了具有專利保護的基于魯棒性多帶激勵模型(MBE Model)的低碼率語音壓縮算法,如IMBE和AMBE編解碼系統(tǒng)。這些算法在當時的市場上獨樹一幟,為DVSI贏得了第一桶金。
在創(chuàng)立初期,DVSI面臨著資金、技術、市場等多方面的挑戰(zhàn)。然而,他們憑借著堅定的信念和不懈的努力,逐步克服了這些困難。他們不斷投入研發(fā),優(yōu)化算法,提高產(chǎn)品的性能和穩(wěn)定性;同時,他們積極開拓市場,與各大通信設備制造商建立合作關系,將產(chǎn)品推向市場。
隨著時間的推移,DVSI的產(chǎn)品逐漸在市場上獲得了認可。他們的編解碼系統(tǒng)被廣泛應用于移動通信、衛(wèi)星通信、軍事通信等領域,為客戶提供了高效、穩(wěn)定的語音通信解決方案。DVSI也因此逐漸嶄露頭角,成為了電子行業(yè)中一顆耀眼的明星。
故事二至五框架概述
- 技術創(chuàng)新與突破:DVSI在語音編解碼技術方面的持續(xù)創(chuàng)新,如推出新一代的高效壓縮算法,進一步提升了產(chǎn)品的競爭力。
- 市場拓展與國際化:隨著公司實力的增強,DVSI開始拓展國際市場,與全球多家知名企業(yè)建立合作關系,實現(xiàn)了國際化發(fā)展。
- 合作與競爭:在電子行業(yè)中,DVSI與其他企業(yè)的合作與競爭并存。他們通過合作共贏的方式,共同推動行業(yè)的發(fā)展;同時,也面臨著來自競爭對手的挑戰(zhàn)和競爭壓力。
- 企業(yè)文化與團隊建設:DVSI注重企業(yè)文化建設,倡導創(chuàng)新、協(xié)作、共贏的價值觀。他們注重團隊建設,吸引了一批優(yōu)秀人才加入公司,為公司的發(fā)展提供了有力的人才保障。
以上故事和框架概述僅供參考,您可以根據(jù)這些線索進一步挖掘和編寫關于DVSI公司的故事。
近年來,隨著環(huán)保意識的日益增強,ABC Taiwan Electronics Corp積極響應綠色生產(chǎn)的號召。公司引入了環(huán)保材料和節(jié)能技術,降低了生產(chǎn)過程中的能耗和排放。同時,公司還加強了廢棄物的處理和回收利用,實現(xiàn)了資源的循環(huán)利用。此外,ABC還積極參與社會公益活動,支持教育事業(yè)和環(huán)保事業(yè),履行了企業(yè)的社會責任。
這五個故事展示了ABC Taiwan Electronics Corp從創(chuàng)業(yè)初期的艱難起步到逐步成長為國際知名電子零件供應商的發(fā)展歷程。通過技術突破、國際化戰(zhàn)略、產(chǎn)業(yè)升級和綠色生產(chǎn)等方面的努力,ABC不斷應對市場的變化和挑戰(zhàn),實現(xiàn)了穩(wěn)健的發(fā)展。
ABC Taiwan Electronics Corp成立于上世紀八十年代,起初只是一個小型電子零件加工廠。面對激烈的市場競爭和有限的資源,公司創(chuàng)始人憑借對電子技術的深刻理解和敏銳的市場洞察力,帶領團隊不斷研發(fā)新產(chǎn)品,逐步贏得了客戶的信任。通過不斷積累經(jīng)驗和擴大規(guī)模,ABC逐漸在電子零件加工領域站穩(wěn)了腳跟。
隨著國內市場的飽和,BIT開始將目光投向國際市場。他們通過參加國際電子展會、與海外企業(yè)建立合作關系等方式,積極拓展海外市場。同時,BIT還在全球范圍內設立研發(fā)中心和生產(chǎn)基地,以便更好地滿足不同地區(qū)客戶的需求。
自1979年成立以來,E-Switch公司始終將創(chuàng)新作為發(fā)展的核心動力。在公司成立初期,面對激烈的市場競爭,E-Switch決定走差異化路線,專注于開發(fā)和生產(chǎn)高品質的開關產(chǎn)品。通過不斷的技術創(chuàng)新和產(chǎn)品優(yōu)化,E-Switch逐漸在電子行業(yè)中樹立了自己的品牌形象。
視頻監(jiān)控系統(tǒng)中矩陣切換——字符疊加的兩種實現(xiàn)方案 介紹了兩種基于不同芯片組合的矩陣切換-字符疊加系統(tǒng),包括這兩種實現(xiàn)方案的元件構成、結構框架、工作原理和它們各自的特點及應用范圍。… 查看全部問答∨ |
|
基于ROK101007型藍牙模塊和TMS320C54x型DSP的家用醫(yī)療保健智能機器人設計 1引言 數(shù)字化家庭是未來智能小區(qū)系統(tǒng)的基本單元。所謂“數(shù)字化家庭”就是基于家庭內部網(wǎng)絡提供覆蓋整個家庭的智能化服務,包括數(shù)據(jù)通信、家庭娛樂和信息家電控制功能。 數(shù)字化家庭設計的一項主要內容是通信功能的實現(xiàn),包括家庭與外界 ...… 查看全部問答∨ |
|
做產(chǎn)品時,是在103的代碼上改的,沒注意101只能到36M。 到產(chǎn)品賣出,我的101一直是跑11.0592×6M的頻率,測試都沒問題。 現(xiàn)在產(chǎn)品已經(jīng)賣出了一部分,真擔心哪天出問題啊? 101用到的資源有定時器、串口、DMA、看門狗和幾個IO口。 提心吊膽 ...… 查看全部問答∨ |
|
f4xx系列的實時時鐘(REAL TIME CLOCK)睡眠問題 請問430單片機處于低功耗模式時它的實時時鐘是否還能正常工作?我可以用它設置一個定時喚醒的模式嗎?還有就是重新上電實時時鐘是否需要重新設定時間? 剛剛看了一下F4XX的用戶手冊,在文檔中沒有找到相應的介紹。望知情者指點一二。在此感激之至!… 查看全部問答∨ |
看看這個有沒有可能用430DIY出來....超低的配置,超牛的效果:8bit電子書 Atmega32u4,2.5k RAM,32k FLASH 效果能達到這樣....我感覺換成430的話應該問題不大吧....$(\'swf_h48\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \' ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數(shù)驅動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)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 強強聯(lián)合再進階!理想AD Pro輔助駕駛正式升級搭載地平線征程6M
- 英特爾與黑芝麻智能簽署合作備忘錄,聯(lián)合發(fā)布艙駕融合平臺
- 英特爾與面壁智能宣布建立戰(zhàn)略合作伙伴關系,共同研發(fā)端側原生智能座艙
- 芯馳科技發(fā)布X10,打造全民AI時代座艙處理器新標桿
- 精準適配,輕裝全能!芯馳發(fā)布E3系列高端智控MCU三大應用場景
- 場景定義、精準創(chuàng)「芯」,芯馳全新發(fā)布AI座艙處理器和高端智控系列
- Arm 技術加持,地平線以 HSD 及征程 6P 推動汽車智能化變革
- 華為自動駕駛技術解讀
- 加速電動化轉型,邦迪汽車系統(tǒng)攜多款創(chuàng)新產(chǎn)品首秀2025上海車展
- 數(shù)據(jù)中心面臨電力約束挑戰(zhàn),推動GenAI終端發(fā)展