国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年01月05日(星期日)

正在發(fā)生

2018年01月05日 | C51程序設(shè)計(jì)中斷及寄存器使用方法

發(fā)布者:代碼漫游者 來源: eefocus關(guān)鍵字:C51  程序設(shè)計(jì)  中斷  寄存器 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

如果在中斷服務(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)行速度。


關(guān)鍵字:C51  程序設(shè)計(jì)  中斷  寄存器 引用地址:C51程序設(shè)計(jì)中斷及寄存器使用方法

上一篇:在C51程序設(shè)計(jì)中變量的空間分配幾個(gè)方法
下一篇:C51在程序設(shè)計(jì)中的頭文件用法

推薦閱讀

支持ISP的51單片機(jī)AT89S系列 ATMEL公司新推出的可在編程的MCS51兼容單片機(jī)AT89S51/52將全面替代AT89C51/52單片機(jī)。 AT89S系列單片機(jī)有以下特點(diǎn): 兼容MCS51微控制器 4/8K字節(jié)FLASH存貯器支持在系統(tǒng)編程ISP1000次擦寫周期 128/256字節(jié)片內(nèi)RAM 工作電壓4.0V到5.5V 全靜態(tài)時(shí)鐘0 Hz 到33 MHz 三級(jí)程序加密 ...
集微網(wǎng)消息 合眾思?jí)寻l(fā)布公告稱,公司控股股東、實(shí)際控制人郭信平(甲方)于2019年1月3日與北京市海淀區(qū)國有資本運(yùn)營管理中心(乙方)簽訂了《股權(quán)轉(zhuǎn)讓意向協(xié)議》。據(jù)悉,北京市海淀區(qū)人民政府國有資產(chǎn)監(jiān)督管理委員會(huì)持有北京市海淀區(qū)國有資本經(jīng)營管理中心100%的股權(quán)。 協(xié)議中提到,乙方將聯(lián)合央企以及指定的關(guān)聯(lián)企業(yè),擬采取現(xiàn)金收購的方式,適時(shí)收購甲...
(文章來源:趣玩旅行) 如今科技發(fā)展的程度是非常難以讓我們想象的,曾經(jīng)人工智能對(duì)于人類來說還只是一個(gè)幻想,不知不覺人類就已經(jīng)將人工智能發(fā)展了起來,并且逐漸普及,讓我們的生活越來越智能,越來越方便,比如掃地機(jī)器人、洗碗機(jī)就很好地解放了我們的雙手,多少人被家務(wù)束縛,感到煩惱啊,人工智能的存在絕對(duì)造福了人類。 人工智能的發(fā)展也是相當(dāng)...
集微網(wǎng)1月4日消息,近日OPPO官方公布了ColorOS11在2021年Q1升級(jí)適配計(jì)劃,像Reno Ace等機(jī)型在Q1將升級(jí)ColorOS11正式版,具體如下:我們來了解一下ColorOS 11的情況,它有以下特性:1、個(gè)性化定制:無限熄屏提供多種不同筆觸與圖形樣式,多級(jí)暗色提供柔和、舒適、增強(qiáng)三種對(duì)比度,圖標(biāo)和壁紙亮度也隨之調(diào)整。此外,鈴聲也支持定制創(chuàng)作,通過簡(jiǎn)單設(shè)置就能...

史海拾趣

問答坊 | AI 解惑

基于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)行互 ...…

查看全部問答∨

15074006

老師,我對(duì)匯編不怎么懂呢…

查看全部問答∨

高頻信號(hào)發(fā)生器

本帖最后由 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)與要求如下 ...…

查看全部問答∨

【Labview】波形圖與波形國表相關(guān)例程

例程請(qǐng)仔細(xì)看有什么不同…

查看全部問答∨

請(qǐng)教關(guān)于C8051F060的問題

在用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è)試功率的原理

想問下關(guān)于功率測(cè)試的原理,用什么系列的芯片,可以用什么樣的單片機(jī),程序流程應(yīng)該如何走 這功能是不是要分別測(cè)出電流和電壓然后來計(jì)算得出呢…

查看全部問答∨

BQ27510套件交換

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ā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

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

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved