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

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

請問各位大俠一個我不懂的問題?

作者:lifengshun 欄目:單片機
請問各位大俠一個我不懂的問題?
你好!
     請問當我的程序有中斷產(chǎn)生后,運行中斷服務程序,運行完后它會自動反回到被中斷程序繼續(xù)往下執(zhí)行,但是如果我在中斷程序中已經(jīng)達到我的目的,不想它返回到被中斷程序繼續(xù)往下執(zhí)行,而是回到程式的最頂端從頭開始,問我用怎么樣的辦法才可以.

2樓: >>參與討論
tyw
直接"LJMP 000H"好象應該沒多大問題
進中斷時,CPU把當時的PC指針壓入堆棧,而把相應的中斷矢量地址裝入PC,而正常RETI中斷返回時僅清除"優(yōu)先級激活"觸發(fā)器(該觸發(fā)器在響應中斷時被置位),以及從堆棧中彈出下一條指令地址裝入PC.這些動作若是程序從000H開始的話,影響不大,PC變00H了,IP在初始化中會重設,只是堆棧指針沒有復原.所以你只要比較一下,這種"熱啟動"與上電復位"冷啟動"的區(qū)別,不影響程序繼續(xù)正常運行,是可以直接"LJMP 000H"的.
記得初始化中要有堆棧指針SP定位的指令哦,否則你的"熱啟動"會讓你的堆棧溢出的拉.

* - 本貼最后修改時間:2007-5-13 19:05:57 修改者:tyw

3樓: >>參與討論
conwh
用比較保險的,操作又簡單的,就是將返回地址改為你的目標地址
 
4樓: >>參與討論
tyw
to conwh: 問題是LZ的中斷結果有兩種可能
若中斷未達到目的時,并不希望返到000H

LZ能說說這種非正常動作的原因嗎?因為你這是在給自已找麻煩哦

* - 本貼最后修改時間:2007-5-13 19:03:23 修改者:tyw

5樓: >>參與討論
xwj
判斷后彈出2字節(jié)(原返回地址),再把跳轉(zhuǎn)地址壓入棧,再RETI
 
6樓: >>參與討論
computer00
把堆棧里面的返回地址改為0,然后RETI應該就可以了吧
 
7樓: >>參與討論
tyw
LS高家莊滴很哦

一看就知道是個不守墨規(guī)的分子,哈哈




* - 本貼最后修改時間:2007-5-13 19:17:55 修改者:tyw

8樓: >>參與討論
xwj
蛋蛋的那種做法實際用時會存在很多問題哦
 
9樓: >>參與討論
conwh
呵呵,主要是LZ是新手,對直接返回0時有些特殊位要進行操作
所以我說用修改返回地址的辦法,這樣就不用考慮什么了。如果是多項選擇,可以用特殊標志也就可以了。

10樓: >>參與討論
myfaith
這很簡單啊
把你要進行中斷處理的部分寫一個子程序,中斷后滿足條件了就$,還沒滿足就繼續(xù)執(zhí)行程序,你只要在中斷服務程序里轉(zhuǎn)到那個子程序去執(zhí)行,不就OK了

11樓: >>參與討論
bg6nw
也曾有同樣的困惑
我剛開始學編程的時候也在這方面絆倒過,后來壇子里的幾位前輩給指點的,才解決了想破頭也沒解決的問題。我當時也是這樣想的,在中斷里面判斷條件,符合條件后直接返回主程序頭部,但是當時學藝不精,返回的時候沒有用reti命令,而是直接jmp,導致第二次中斷時失去反應,因為在中斷時被置位的中斷優(yōu)先級觸發(fā)器必須靠reti指令釋放,在上一次中斷后直接跳出去,第二次就不靈光啦。
實際上這種動作應該是軟復位我認為,但是軟復位不是那么簡單的,如果程序比較大的話,半路上單片機里面的很多狀態(tài)都改變了,包括觸發(fā)器寄存器等等,在主程序頭部要一一設定好才穩(wěn)妥。這樣在reti到程序頂端的時候不至于出現(xiàn)意想不到的莫名其妙的故障。
我現(xiàn)在大部分的設計都是用這樣的方法:(獨創(chuàng)的,LS的前輩見笑了)
找一個閑置的端口,用電阻限流后接一個三極管的基極,三極管集電極和發(fā)射機和復位電容并聯(lián),在需要回到主程序頂端的時候,直接把這個端口置位,就可以引發(fā)硬件復位,這樣單片機的所有寄存器和鎖存器都置位了,降低了寫程序的難度,減少了不可預見的故障。自認為此法不錯,屢試不爽。


12樓: >>參與討論
conwh
呵呵,LS的真有心。只要各種情況都考慮好了,也就不必要這樣做了
一般很少在程序執(zhí)行中,再從0開始執(zhí)行的。即便是這樣(要這樣)做,還不如把狗給餓死,不也就達到你的要求了。

13樓: >>參與討論
conwh
呵呵,還有愛護小動物協(xié)會的,再等一會躺
 
14樓: >>參與討論
ayb_ice
用軟件復位最好....
 
15樓: >>參與討論
xwj
哪有小動物?拉過來看看...
 
16樓: >>參與討論
lifengshun
多謝各位高手的回答,我先去找點書參考參考.
多謝各位高手的回答,我已經(jīng)知道答案的方向了,我先去找點這方面的書參考參考.特別感謝tyw與bg6nw的回答,你們回答得很祥細,給了我方向.謝謝


17樓: >>參與討論
懶人
搞不懂為什么非得這樣做,,,奇思妙想
 
18樓: >>參與討論
寒雨飛揚
使用軟件陷阱
在中斷程序的開始首先進行壓棧:
PUSH 00h
PUSH 00h

不要寫出棧語句,這樣可以自動回到程序最頂端。

19樓: >>參與討論
ayb_ice
隨便說說
直接(或間接)跳轉(zhuǎn)到00H處雖可以運行,但SFR沒有被初始化...

20樓: >>參與討論
shiaf
實在不明白為什么一定要這么干?
51 MCU 還好辦,象 PIC 這種硬件堆棧,還真不知道怎么弄。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
大蝦們:2051和373的問題
雙積分測量程式編寫方法_最后一句不明白啊!!!
為什么我的12232LCD讀數(shù)顯示會出現(xiàn)小數(shù)點漂移?
rf1702sl的問題,做過的幫看看呀!
電梯的單片機控制資料(源碼、電路圖)
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號