如果在中斷服務(wù)函數(shù)ISR中使用寄存器,那么必須處理好using的使用問題:
1、中斷服務(wù)函數(shù)使用using指定與主函數(shù)不同的寄存器組(主函數(shù)一般使用Register bank 0)。
2、中斷優(yōu)先級(jí)相同的ISR可用using指定相同的寄存器組,但優(yōu)先級(jí)不同的ISR必須使用不同的寄存器組,在ISR中被調(diào)用的函數(shù)也要使用using指定與中斷函數(shù)相同的寄存器組。用reentranr指明可重入函數(shù)。
3、如果不用using指定,在ISR的入口,C51默認(rèn)選擇寄存器組0,這相當(dāng)于中斷服務(wù)程序的入口首先執(zhí)行指令:
MOV PSW #0
這點(diǎn)保證了,沒使用using指定的高優(yōu)先級(jí)中斷。可以中斷使用不同的寄存器組的低優(yōu)先級(jí)中斷。
4、使用using關(guān)鍵字給中斷指定寄存器組,這樣直接切換寄存器組而不必進(jìn)行大量的PUSH和POP操作,可以節(jié)省RAM空間,加速M(fèi)CU執(zhí)行時(shí)間。寄存器組的切換,總的來說比較容易出錯(cuò),要對(duì)內(nèi)存的使用情況有比較清晰的認(rèn)識(shí),其正確性要由你自己來保證。特別在程序中有直接地址訪問的時(shí)候,一定要小心謹(jǐn)慎!至于“什么時(shí)候要用到寄存器組切換”,一種情況是:當(dāng)你試圖讓兩個(gè)(或以上)作業(yè)同時(shí)運(yùn)行,而且它們的現(xiàn)場(chǎng)需要一些隔離的時(shí)候,就會(huì)用上了。在ISR或使用實(shí)時(shí)操作系統(tǒng)RTOS中,寄存器非常有用。
寄存器組使用的原則:
1、8051的最低32個(gè)字節(jié)分成4組8寄存器。分別為寄存器R0到R7。寄存器組由PSW的低兩位選擇。在ISR中,MCU可以切換到一個(gè)不同的寄存器組。對(duì)寄存器組的訪問不可位尋址,C51編譯器規(guī)定使用using或禁止中斷的函數(shù)(#pragma dISAble)均不能返回bit類型的值。
2、主程序(main函數(shù))使用一組,如bank 0;低中斷優(yōu)先級(jí)的所有中斷均使用第二組,如bank 1;高中斷優(yōu)先級(jí)的所有中斷均使用再另外一組,如bank 2。顯然,同級(jí)別的中斷使用同一組寄存器不會(huì)有問題,因?yàn)椴粫?huì)發(fā)生中斷嵌套;而高優(yōu)先級(jí)的中斷則要使用與低優(yōu)先級(jí)中斷不同的一組,因?yàn)橛锌赡艹霈F(xiàn)在低優(yōu)先級(jí)中斷中發(fā)生高優(yōu)先級(jí)中斷的情況。編譯器會(huì)自動(dòng)判斷何時(shí)可使用絕對(duì)寄存器存取。
3、在ISR中調(diào)用其它函數(shù),必須和中斷使用相同的寄存器組。當(dāng)沒用NOAREGS命令做明確的聲明,編譯器將使用絕對(duì)寄存器尋址方式訪問函數(shù)選定(即用using或REGISTERBANK指定)的寄存器組,當(dāng)函數(shù)假定的和實(shí)際所選的寄存器組不同時(shí),將產(chǎn)生不可預(yù)知的結(jié)果,從而可能出現(xiàn)參數(shù)傳遞錯(cuò)誤,返回值可能會(huì)在錯(cuò)誤的寄存器組中。
舉一例子:當(dāng)需要在中斷內(nèi)和中斷外調(diào)用同一個(gè)函數(shù),假定按照程序的流程控制,不會(huì)出現(xiàn)函數(shù)的遞歸調(diào)用現(xiàn)象,這樣的調(diào)用會(huì)不會(huì)出現(xiàn)問題?若確定不會(huì)發(fā)生重入情況,則有以下兩種情況:
1、如果ISR和主程序使用同一寄存器組(主程序缺省使用BANK 0,若ISR沒有使用using為其指定寄存器區(qū),則缺省也使用BANK 0),則不需其他設(shè)置。
2、如果ISR和主程序使用不同的寄存器組(主程序缺省使用BANK 0,ISR使用using指定了其他BANK),則被調(diào)用函數(shù)必須放在:
#pragma NOAREGS
#pragma AREGS
控制參數(shù)對(duì)中,指定編譯器不要對(duì)該函數(shù)使用絕對(duì)寄存器尋址方式;或者也可在Options->C51,選中“Dont use absolute register aCCesses”,使所有代碼均不使用絕對(duì)寄存器尋址方式(這樣,執(zhí)行效率將稍有降低)。不論以上的哪一種情況,編譯器均會(huì)給出重入警告,需手工更改OVERLAY參數(shù),做重入說明。
3、還有一種辦法:如果被調(diào)用函數(shù)的代碼不是很長,還是將該函數(shù)復(fù)制一份,用不同的函數(shù)名代替,這種情況適合ROM有足夠多余的空間。
因此,對(duì)using關(guān)鍵字的使用,如果沒把握,寧可不用,交給編譯系統(tǒng)自己去處理好了。
#pragma disable
在函數(shù)前聲明,只對(duì)一個(gè)函數(shù)有用,該函數(shù)調(diào)用過程中,將不可被中斷。
遞歸或可重入函數(shù)指定
在主程序和中斷程序都調(diào)用的函數(shù)容易出現(xiàn)問題,用寄存器傳遞參數(shù),內(nèi)部變量在RAM中,函數(shù)重入時(shí)候,會(huì)破壞上次的數(shù)據(jù),用下面兩種方法解決函數(shù)重入問題:
在相應(yīng)的函數(shù)前,加“#pramga disable”聲明,只允許主程序或者中斷之一調(diào)用該函數(shù);
將該函數(shù)說明為可重入:VOID func(para..) reentrant;
指定存儲(chǔ)模式
由small comPACt及l(fā)arge說明,例如:
void fun1(void) small { }
提示:small說明的函數(shù)內(nèi)部變量全部使用內(nèi)部RAM。關(guān)鍵的經(jīng)常性的耗時(shí)的
地方可以這樣聲明,以提高運(yùn)行速度。
上一篇:在C51程序設(shè)計(jì)中變量的空間分配幾個(gè)方法
下一篇:C51在程序設(shè)計(jì)中的頭文件用法
推薦閱讀
史海拾趣
虹冠電子始終秉持著節(jié)能環(huán)保的理念,將這一理念融入到產(chǎn)品研發(fā)和生產(chǎn)過程中。公司推出的電源管理IC產(chǎn)品,不僅具有高效能、低能耗的特點(diǎn),還具備類零電壓切換PFC與PWM技術(shù),進(jìn)一步提高了電源的使用效率。虹冠電子的產(chǎn)品廣泛應(yīng)用于個(gè)人計(jì)算機(jī)、云端運(yùn)算服務(wù)器、LED顯示屏等領(lǐng)域,為全球節(jié)能減排事業(yè)做出了積極貢獻(xiàn)。
隨著電子技術(shù)的快速發(fā)展,Aydin Corp意識(shí)到只有不斷創(chuàng)新才能在市場(chǎng)中立于不敗之地。公司投入大量資源用于研發(fā),不斷推出具有創(chuàng)新性和競(jìng)爭(zhēng)力的產(chǎn)品。這些產(chǎn)品不僅性能卓越,而且設(shè)計(jì)獨(dú)特,迅速贏得了消費(fèi)者的青睞。同時(shí),Aydin Corp還注重產(chǎn)品升級(jí)和迭代,以滿足市場(chǎng)不斷變化的需求。
啟攀微電子(Chiphomer)公司成立于2003年,當(dāng)時(shí)正值中國集成電路產(chǎn)業(yè)快速發(fā)展的初期。創(chuàng)始人張楊帶領(lǐng)著一支由英美歸國的留學(xué)精英和國內(nèi)資深管理與技術(shù)人員組成的團(tuán)隊(duì),立志要在這一領(lǐng)域闖出一片天地。然而,初創(chuàng)時(shí)期的資金短缺、技術(shù)壁壘和市場(chǎng)認(rèn)可度低等問題,讓公司面臨著巨大的挑戰(zhàn)。然而,他們憑借著對(duì)技術(shù)的執(zhí)著追求和對(duì)市場(chǎng)的敏銳洞察,成功推出了首款SDH通信芯片,為公司的后續(xù)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
隨著環(huán)保意識(shí)的不斷提高,ELM Technology Corporation積極響應(yīng)國家號(hào)召,將環(huán)保理念融入企業(yè)發(fā)展中。公司投入大量資金研發(fā)環(huán)保型電子產(chǎn)品,努力降低產(chǎn)品對(duì)環(huán)境的影響。同時(shí),ELM還積極參與各類環(huán)?;顒?dòng),推動(dòng)電子行業(yè)的綠色發(fā)展。這種對(duì)環(huán)保的執(zhí)著追求讓ELM在行業(yè)中樹立了良好的形象。
為了進(jìn)一步提升公司的競(jìng)爭(zhēng)力和市場(chǎng)份額,F(xiàn)DI實(shí)施了國際化戰(zhàn)略。他們積極拓展海外市場(chǎng),與多個(gè)國家和地區(qū)的客戶建立了合作關(guān)系。通過參加國際展會(huì)、設(shè)立海外分支機(jī)構(gòu)等方式,F(xiàn)DI不斷提升品牌知名度和影響力。同時(shí),他們還加強(qiáng)與當(dāng)?shù)毓?yīng)商和合作伙伴的合作,共同開拓市場(chǎng),實(shí)現(xiàn)互利共贏。這些努力使得FDI在全球電子行業(yè)中的地位日益穩(wěn)固。
基于TC45的車載語音導(dǎo)航終端的硬件設(shè)計(jì) 一 引言 我國的智能交通系統(tǒng)的建設(shè)仍處于初級(jí)階段。作為其組成部分的導(dǎo)航系統(tǒng),由三大部分組成:導(dǎo)航終端、數(shù)字地圖、導(dǎo)航平臺(tái)。【1】導(dǎo)航終端是我國衛(wèi)星導(dǎo)航大批量應(yīng)用市場(chǎng)的兩大主項(xiàng)之一,它是目前中國導(dǎo)航市場(chǎng)的主體?!?】導(dǎo) ...… 查看全部問答∨ |
2005年 MSP430全球頂級(jí)技術(shù)研討會(huì),全球MSP430精英的技術(shù)盛典 在全球(包括美國、亞洲及歐洲各地)舉行的高級(jí)技術(shù)年會(huì)(ATC)上,您將體驗(yàn)最前沿的超低功耗技術(shù),率先掌握MSP430系列超低功耗微控制器最新、最具價(jià)值的信息。 增強(qiáng)您對(duì)MSP430系列器件的了解,同時(shí)在輕松的非正式場(chǎng)合下進(jìn)行互 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:21 編輯 題目要求:高頻信號(hào)發(fā)生器主要用來向各種電子設(shè)備和電路提供高頻能量或高頻標(biāo)準(zhǔn)信號(hào),以便測(cè)試各種電子設(shè)備和電路的電氣特性。在電路結(jié)構(gòu)上,高頻信號(hào)發(fā)生器和高頻發(fā)射機(jī)很相似。技術(shù)指標(biāo)與要求如下 ...… 查看全部問答∨ |
|
在用c8051f060時(shí),我想用該單片機(jī)控制鍵盤與顯示,利用8279來完成。 單片機(jī)沒有外接外部存儲(chǔ)器。 我想問的是對(duì)8279的讀寫是不是相當(dāng)于對(duì)外部存儲(chǔ)器的讀寫? 用的是數(shù)據(jù)地址非復(fù)用模式(EMIF接到高端口P4-P7) 對(duì)EMIF怎樣配置才能使(ALE),P4^6(R ...… 查看全部問答∨ |
EVC或vc2005如何創(chuàng)建一個(gè)帶有自定義類和該類方法的lib,以及如何開發(fā)使用和部署到pda上? EVC或vc2005如何創(chuàng)建一個(gè)帶有自定義類和該類方法的lib,以及如何開發(fā)使用和部署到pda上?… 查看全部問答∨ |
想問下關(guān)于功率測(cè)試的原理,用什么系列的芯片,可以用什么樣的單片機(jī),程序流程應(yīng)該如何走 這功能是不是要分別測(cè)出電流和電壓然后來計(jì)算得出呢… 查看全部問答∨ |
TI原裝的BQ27510套件,一個(gè)鋰電池電量監(jiān)測(cè)的工具,只打開過,所以說套件幾乎是全新的。想用來交換一個(gè)TI的LM3S9B96開發(fā)套件,有人愿意交換嗎? 請(qǐng)站內(nèi)發(fā)信或者M(jìn)SN:brucege888@hotmail.com… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 國芯科技發(fā)布全球首款48V安全氣囊芯片,引領(lǐng)智能汽車新紀(jì)元
- 亞馬遜全球部署100萬臺(tái)機(jī)器人
- 自動(dòng)駕駛只用激光雷達(dá)進(jìn)行感知會(huì)有哪些問題?
- 為什么電源紋波測(cè)試結(jié)果與理論設(shè)計(jì)如此之大?
- UWB信標(biāo)與LoRa基站網(wǎng)關(guān)數(shù)據(jù)區(qū)別在哪里?
- 什么是AI 同傳技術(shù)
- 人工智能處理器和加速器到底是什么?
- PWM控制(脈沖寬度調(diào)制)的基本原理是什么
- 如何設(shè)計(jì)帶集成運(yùn)放構(gòu)成的方波發(fā)生器
- DSP調(diào)度算法的基本概念和原理
- 與PI一起探索 LinkSwitch-TN2 的秘密看視頻答題贏好禮!
- 下載MPS汽車電機(jī)控制技術(shù)干貨,贏【Keep體脂秤、自動(dòng)洗手機(jī)套裝、小米保溫杯】,開啟汽車技術(shù)進(jìn)階之旅!
- 分享你遇到的那些bug和解決技巧,贏萬圣節(jié)小驚喜!
- 泰克任意波形發(fā)生器,跨越成本極限,克服挑戰(zhàn)
- 今日競(jìng)拍:TI SimpleLink Wifi CC3220S
- TI毫米波雷達(dá)技術(shù)在工業(yè)上的應(yīng)用
- TI C2000TM的信號(hào)鏈實(shí)時(shí)性評(píng)測(cè)和使用教程
- “泰”想開車 智能篇:智能網(wǎng)聯(lián)汽車,實(shí)現(xiàn)無憂駕駛
- TI 樣片免費(fèi)申請(qǐng),曬樣片贏好禮!
- TE智能工廠解決方案,助力工業(yè)數(shù)字化轉(zhuǎn)型
- 業(yè)務(wù)規(guī)模穩(wěn)定增長,國電南瑞預(yù)計(jì)上半年凈利增27%-37%
- PCB龍頭臻鼎:今年啟動(dòng)四座新園區(qū)建設(shè) 載板營收或翻倍
- 韓政府宣布將為芯片制造業(yè)擴(kuò)大稅收優(yōu)惠并放松監(jiān)管
- 國民技術(shù):MCU產(chǎn)品已經(jīng)導(dǎo)入華為/大疆等客戶
- 真空封裝領(lǐng)域企業(yè) 中科同幟獲得數(shù)千萬元Pre-A輪融資
- Counterpoint:2020Q2中國手機(jī)平均售價(jià)漲13%
- 小尺寸高速度,光迅科技100G光傳輸模塊
- 住友光纖連接器技術(shù)揭秘
- 官方最新:華為起火建筑內(nèi)發(fā)現(xiàn)3名死者 核實(shí)后是他們
- 科學(xué)家研發(fā)出磁驅(qū)動(dòng)高速軟體機(jī)器人:會(huì)行走、懸浮、捉蒼蠅
- PXA310的SPI控制MCP2515不能讀取?
- 日企力推3D電視疑為設(shè)局 中韓企業(yè)警惕產(chǎn)業(yè)前端遭暗算
- omap3503簡(jiǎn)單問題,初學(xué),大家指教。
- 求一個(gè)QFN的封裝庫,越全越好
- 打斷循環(huán)(VxWorks)
- 靜止變換式航空地面電源PWM電壓控制器的設(shè)計(jì)
- 一圖看懂5G比4G強(qiáng)在哪,附帶一項(xiàng)挑戰(zhàn)
- ADI DiffAmpCalc™設(shè)計(jì)差分放大器電路
- 【新品快遞】超低價(jià)GM6802 單路鎳氫電池快速充電管理解決方案
- dm9000網(wǎng)卡的幾個(gè)問題!!