音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

某些地方,reti可以代替ret 嗎 ?

作者:俺從頭來(lái) 欄目:技術(shù)交流
某些地方,reti可以代替ret 嗎 ?
到底有什么本質(zhì)區(qū)別?

不在中斷處理程序中的子程序的返回能用reti嗎?

* - 本貼最后修改時(shí)間:2006-12-15 17:48:52 修改者:俺從頭來(lái)

2樓: >>參與討論
andrew.xu
應(yīng)該不能,reti會(huì)對(duì)中斷邏輯做調(diào)整
 
3樓: >>參與討論
liudewei
本質(zhì)上一樣,從匯編邏輯上它們不一樣。
ret是正常的上下級(jí)調(diào)用返回,是可預(yù)知的,而reti是不可預(yù)知性的中斷返回,它從被打斷主程序或低級(jí)中斷程序的處理返回。

4樓: >>參與討論
tyw
轉(zhuǎn)貼個(gè)東東,參考一下
RETI =  RET指令+通知CPU中斷服務(wù)已結(jié)束.

2006-11-8 20:22 一點(diǎn)不通基于51單片機(jī)中斷跳出指令“RETI”淺議

  基于51單片機(jī)中斷跳出指令“RETI”淺議

   最近在基于51單片機(jī)編程的過(guò)程中出現(xiàn)了個(gè)很奇怪的問(wèn)題“程序執(zhí)行中在寄存器EA=1,ET0=1,TR0=1條件下,單TF0=1時(shí)并沒(méi)有執(zhí)行中斷”。在有過(guò)單片機(jī)中斷編程經(jīng)歷者都知道當(dāng)EA=1,ET0=1的條件下,滿足TF0=1時(shí),如果在此期間沒(méi)有更高優(yōu)先級(jí)的中斷執(zhí)行的情況下定時(shí)器中斷0必定會(huì)產(chǎn)生中斷響應(yīng)。而在我所編寫(xiě)的程序中僅使用了定時(shí)器中斷0,一個(gè)中斷也就談不上存在優(yōu)先級(jí)問(wèn)題。經(jīng)過(guò)我對(duì)自己程序的檢查并對(duì)各教材中斷程序?qū)Ρ劝l(fā)現(xiàn)我的程序中的一個(gè)問(wèn)題:由于中斷的不可控性決定其跳出中斷返回主程序的不確定,而由于程序需要中斷跳出后能跳到指定的地址。為了解決這個(gè)問(wèn)題我在中斷結(jié)束的地方直接用了無(wú)條件跳轉(zhuǎn)指令“LJMP  ADR16”其中ADR16是我想在中斷結(jié)束后程序所運(yùn)行的地址,而沒(méi)有經(jīng)過(guò)指令“RETI”。問(wèn)題找到了這就意味著我的程序和其他程序不同的地方就是沒(méi)有執(zhí)行“RETI”而直接跳出。
   為了解決問(wèn)題所在我查閱了很多單片機(jī)方面的資料,教材。幾乎所有的教材對(duì)指令“RETI”的作用千篇一律都是:“中斷程序完成后,一定要執(zhí)行一條RETI指令,執(zhí)行這條指令后,CPU將會(huì)把堆棧中保存著的地址取出,送回PC,那么程序就會(huì)從主程序的中斷處繼續(xù)往下執(zhí)行了!比绻癛ETI”的作用僅僅在于“把堆棧中保存著的地址取出送回PC”;那么我用指令“POP  DPH”和“POP  DPL”兩條指令取代其做用不就可以達(dá)到同樣的推出地址的效果么?這樣可以解決由于只有進(jìn)堆棧指令(硬件自動(dòng)生成)沒(méi)有出堆棧所導(dǎo)致的堆棧溢出錯(cuò)誤,但是并不能解決文章開(kāi)始所提到的“進(jìn)不了中斷”問(wèn)題。這讓我更加相信書(shū)上所介紹的關(guān)于指令“RETI”作用并不完全。經(jīng)過(guò)查閱各種資料文獻(xiàn),我發(fā)現(xiàn)了個(gè)以往在介紹單片機(jī)硬件,以及寄存器上教材,老師,沒(méi)有提及的“‘優(yōu)先級(jí)生效’觸發(fā)器“的概念。資料指出“根據(jù)8051的結(jié)構(gòu)特點(diǎn),其中斷系統(tǒng)中含有兩個(gè)不可尋址的“優(yōu)先級(jí)生效”觸發(fā)器。一個(gè)用于指出CPU是否正在執(zhí)行高優(yōu)先級(jí)的中斷服務(wù)程序,這個(gè)觸發(fā)器為1時(shí),系統(tǒng)將屏蔽所有的中斷請(qǐng)求;另一個(gè)則指出CPU是否正在執(zhí)行低優(yōu)先級(jí)中斷服務(wù)程序,該觸發(fā)器為1時(shí),將阻止除高優(yōu)先級(jí)以外的一切中斷請(qǐng)求。由此可見(jiàn),若要響應(yīng)同級(jí)甚至是低級(jí)中斷請(qǐng)求,必須使得該“優(yōu)先級(jí)生效”觸發(fā)器清零。但該觸發(fā)器又是不可尋址的,所以無(wú)法用軟件直接清零!眴(wèn)題是不是在這里呢?而“優(yōu)先級(jí)生效”觸發(fā)器清零過(guò)程是怎樣執(zhí)行的呢?是在硬件自動(dòng)執(zhí)行的那么是在什么時(shí)候執(zhí)行的呢?帶著問(wèn)題我去解決問(wèn)題。假設(shè)我可以將程序滿足跳出中斷后跳到自己原來(lái)指定地址“ADR16”又滿足執(zhí)行指令“RETI”。經(jīng)過(guò)反復(fù)思考我用“DEC SP”;“DEC SP”;“MOV         DPTR,#ADR16”;“PUSH  DPL”;“PUSH        DPL”“PUSH   DPH”四條指令代替,問(wèn)題得到了解決。
   總結(jié):中斷指令“RETI”做為中斷跳出指令除了將堆棧中保存著的地址取出,送回PC;使程序從主程序的中斷處繼續(xù)往下執(zhí)行。的作用外還有將“優(yōu)先級(jí)生效”觸發(fā)器清零。自己做的程序也是出現(xiàn)了這個(gè)錯(cuò)誤,由于對(duì)“優(yōu)先級(jí)生效”觸發(fā)器清零,導(dǎo)致第二次進(jìn)不了中斷(相當(dāng)于同優(yōu)先級(jí)申請(qǐng))。
       后記:在解決這個(gè)問(wèn)題時(shí)候我所用的知識(shí)是課本上的,而又不完全是課本上的。在這個(gè)過(guò)程中我用已學(xué)的知識(shí)解決了自己的問(wèn)題,并進(jìn)一步推出中斷過(guò)程的一些新的知識(shí),我認(rèn)為新知識(shí)的學(xué)習(xí)有很大程度的要靠自己在已學(xué)過(guò)知識(shí)的基礎(chǔ)上通過(guò)運(yùn)用,總結(jié),推導(dǎo)等過(guò)程獲得新知識(shí)。著也是當(dāng)代大學(xué)生運(yùn)用知識(shí),獲取新知識(shí)的一種能力。

* - 本貼最后修改時(shí)間:2006-12-3 15:50:41 修改者:tyw

5樓: >>參與討論
computer00
reti要清除一些跟中斷相關(guān)的標(biāo)志,否則直接用ret返回,
下次的同優(yōu)先級(jí)或者低優(yōu)先級(jí)的中斷就沒(méi)辦法產(chǎn)生了,相當(dāng)于還在中斷服務(wù)程序中。只有有reti返回,才能退出中斷服務(wù)程序.

51只有兩級(jí)中斷,中斷服務(wù)程序在運(yùn)行時(shí),同級(jí)的或著低級(jí)中斷不能打斷它.

6樓: >>參與討論
maychang
樓主沒(méi)有注意到RETI要修改中斷優(yōu)先級(jí)寄存器
這個(gè)寄存器,程序不能訪問(wèn)(對(duì)使用者不透明),所以常被忽略。

7樓: >>參與討論
俺從頭來(lái)
先謝謝各位~~
謝謝andrew.xu,liudewei,tyw,00和maychang.

好像有點(diǎn)明白,待有時(shí)間仔細(xì)研究各位的帖子。。。

8樓: >>參與討論
俺從頭來(lái)
再問(wèn) 。。
中斷返回時(shí),清中斷標(biāo)志和改變“優(yōu)先級(jí)生效”觸發(fā)器是同一個(gè)操作嗎

還是覺(jué)得“有的”ret可以用reti代替:

如果一個(gè)子程序不在中斷處理程序中,那么它的返回應(yīng)該可以用RETI返回啊,這時(shí)的“優(yōu)先級(jí)生效”觸發(fā)器肯定為0。



* - 本貼最后修改時(shí)間:2006-12-4 10:44:15 修改者:俺從頭來(lái)

9樓: >>參與討論
computer00
清中斷不在reti時(shí)發(fā)生。
對(duì)于硬件清中斷標(biāo)志的中斷,在響應(yīng)中斷時(shí)就會(huì)清中斷標(biāo)志;對(duì)于軟件清中斷標(biāo)志的,必須軟件清除,硬件不會(huì)自動(dòng)清除。


到處都用reti,豈不要亂套了?例如在中斷里面調(diào)用一個(gè)函數(shù),結(jié)果被這個(gè)函數(shù)把reti搶了去。


反正你又不是做CPU設(shè)計(jì)的,管這么多干啥,它說(shuō)在哪用,你就在哪用得了,不用理會(huì)這個(gè)。

10樓: >>參與討論
俺從頭來(lái)
hehe~~~
有一個(gè)用在產(chǎn)品的程序,在一處子程序中返回時(shí),由于疏忽,錯(cuò)用了RETI。
但沒(méi)有發(fā)現(xiàn)異常。。。

有點(diǎn)奇怪。

應(yīng)該是這段程序沒(méi)有處在中斷處理程序中吧、、

11樓: >>參與討論
hotpower
哈哈~~~在主循環(huán)中沒(méi)問(wèn)題,有時(shí)是故意寫(xiě)成RETI把敵人搞暈倒~~~
 
12樓: >>參與討論
sfd123
明白了,謝謝啊
 
13樓: >>參與討論
whb565938
這都不會(huì)還出來(lái)混
 
14樓: >>參與討論
cnchip
“它說(shuō)在哪用,你就在哪用得了,不用理會(huì)這個(gè)”。!
幫著強(qiáng)調(diào)一下。。

15樓: >>參與討論
wshftyc
越說(shuō)越暈
 
16樓: >>參與討論
楊真人
小程序尚且如此混亂,大程序豈不亂成一團(tuán)?
回復(fù)主題:reti可以代替ret 嗎 ?
如果可以,RETI和RET當(dāng)中任意一個(gè)可以消失!然而真的可以么?返回地址可能不相同有考慮到嗎?

17樓: >>參與討論
俺從頭來(lái)
謝謝大家
前兩天,看了各大俠的回帖,感覺(jué)明白。

但剛剛又被樣真人整暈了!

返回地址當(dāng)然一樣,不是嗎

18樓: >>參與討論
highway
我在老外的程序中看到,壓入堆棧2個(gè)字節(jié)后,然后RETI:)
 
19樓: >>參與討論
HWM
18樓:你所看到的是“特定地址中斷返回”。
 
20樓: >>參與討論
楊真人
問(wèn)得出這樣的問(wèn)題本身就暈了。
別人只想把你弄醒.

21樓: >>參與討論
楊真人
建議
建議樓主先學(xué)學(xué)流程圖,精通以后再學(xué)狀態(tài)機(jī).

22樓: >>參與討論
俺從頭來(lái)

俺還在入門(mén)ing階段,所以經(jīng)常發(fā)些個(gè)自己很暈但你們大牛看來(lái)不值一問(wèn)的菜問(wèn)題,還請(qǐng)眾位以后多多指教。

本來(lái)這些個(gè)簡(jiǎn)單的東東在初學(xué)課本時(shí)就應(yīng)該熟練的,可是,俺大學(xué)虛度了,F(xiàn)在就只能厚著臉皮到這里發(fā)帖了、、

關(guān)于這個(gè)問(wèn)題,我想我比較清楚了。

謝謝眾大俠

23樓: >>參與討論
楊真人
感情上你可以完全用GOTO而不用GOSUB
之不過(guò)如果你不知道GO哪里,那是你自己的問(wèn)題.

24樓: >>參與討論
平常人
有些單片機(jī),RETI和RET從堆棧彈出的字節(jié)數(shù)目不一樣,混用要出錯(cuò)
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教關(guān)于運(yùn)放LM358的工作頻率
如何選電感?
DELL PPL筆記本電腦屏幕反色是怎么回事?
電子產(chǎn)品散熱對(duì)導(dǎo)熱材料的選用
求lth1550-01的資料
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)