1樓:匿名使用者
意思就是說,如果微控制器在執行中被幹擾了,程式跳轉到你沒有使用的中斷向量的位置上。比如現在你寫一個程式,外部中斷0(int0)這個中斷你並沒有使用,實際上你根本就不用去理它了。比如微控制器的復位地址為$000,中斷0向量int0地址是$002,程式就是應該是這樣
.org $000 ;復位
rjmp reset ;跳轉
.org $02a ;$000—$02a都是中斷向量地址這裡就開始了正常的程式了。
正常情況下因為你沒有使用中斷0,它地址的$001,因為.org $02a已經跳過去了。又因為你沒有使用這個中斷,它是不會跑到$001的。
但是實際上由於各種干擾的存在,就算你沒有使用這個中斷,也不可能說微控制器不會被誤觸發進入中斷0。這樣被幹擾後它進入了中斷0地址$001開始執行,問題是你沒有指令讓它退出,它就直接往下跑,跑到$02a,如何就相當復位了。所以就算你沒用它,也要在它的地址上放個退出指令,就算誤觸發,它進入中斷馬上就退出。
不會讓程式跑亂。
2樓:匿名使用者
1,比如你程式裡開了不小心開了int0的上升沿中斷,既然是不小心那就沒有對應的中斷處理**,即中斷向量表裡int0沒有正確的跳轉**。
那如果發生int0上升沿 ,cpu就會去跳轉到相應的中斷向量表去執行,如果裡面是reti的話就直接退出中斷了,如果是jmp指令則跳到相應的中斷處理程式,如果什麼也不是,那就執行亂了。
2,那是程式中的疏忽,小心一點就可以避免,但微控制器執行環境有的很惡劣,有能就自己執行過去了。
所以有必要太填寫reti,或寫jmp reset 看情況而定了
微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?
3樓:匿名使用者
reti 是中斷返回指令;
ret 是子程式返回指令;
reti比ret多一步清除中斷優先順序狀態位,讓同級別的中斷有機會得到響應。
中斷指令「reti」做為中斷跳出指令除了將堆疊中儲存著的地址取出,送回pc;使程式從主程式的中斷處繼續往下執行的作用外,還有將「優先順序生效」觸發器清零的功能。
4樓:做而論道
ret 是子程式返回指令。
reti 是中斷服務程式返回指令。
兩者,用途不同。
5樓:匿名使用者
ret是子程式返回指令,返回到呼叫該子程式處的下一條指令執行,返回的地址是從ret執行前的sp中最後兩個值。
reti是中斷服務程式返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從reti執行前的sp中最後兩個值。
6樓:匿名使用者
ret是普通子程式的返回指令,而不能用reti,所以,ret不是中斷返回指令,就是子程式返回指令。
而reti是用在中斷子程式的返回指令,必須用這個,這才叫中為返回指令,而不能用ret,這就是區別。
7樓:匿名使用者
ret是子程式返回指令,將堆疊中的地址彈出,而reti是中斷返回指令,除了將地址彈出,還將標誌彈出
微控制器中子程式和中斷服務程式有何異同?為什麼子程式返回指令ret和中斷返回指令reti不能相互替代?
微控制器組合語言reti的用法
8樓:匿名使用者
微控制器組合語言中,reti指令用於從中斷程式中返回。用法只有一個,就是放在中斷服務程式的最後,實現從中斷程式中返回。示例如下:
;定時器1中斷服務程式;
t1int: push psw ;保護現場push acc ;
;mov th1,#0eeh ;重新整理速率200/4=50qt1: pop acc ;恢復現場pop psw ;
reti ;;
9樓:頹廢_小胖
reti指令可以返回到任何一條指令上,當中斷髮生時,自動將斷點入口入棧,於是最後使用reti就可以返回到程式斷點處,繼續執行下面的指令。
10樓:匿名使用者
reti只能用於中斷返回。在**發生中斷,就返回到**。子程式返回要用ret就可以了
11樓:**飄渺迷人
就返回到( sjmp $;等待!! )這條指令這裡.
微控制器彙編指令中reti和ret的區別
12樓:火虎
1、方式不同
當某一中斷源響應後,微控制器中的reti將會自動置位,用於阻止比它低階內或同級的中斷觸容發。reti可以清除「優先順序啟用觸發器」(即flag暫存器),以保證後續中斷源的及時響應。
所以,當把reti替換為ret後,該程式在第一次執行時可能不會出錯,但在第二次執行時就會出錯了。
2、過程不同
ret是從子程式返回,返回到lcall或acall指令下一條指令處繼續執行程式。reti是從中斷服務子程式返回,返回到中斷時的斷點處繼續執行程式,斷點未知。
13樓:匿名使用者
ret是從子程式返回,返回到lcall或acall指令下一條指令處繼續執行程式。
reti是從中斷服務子程式返回,返回到中斷時的斷點處繼續執行程式,斷點未知。
mcs51微控制器,中斷服務程式的返回指令和子程式的返回指令有什麼區別?是多少?
14樓:
中斷服務程式的返回指令 彙編助記符 reti 機器指令 32h
子程式的返回指令 彙編助記符 ret 機器指令 22h
15樓:馬洋陌越
ret用於
一般程式的返回
reti用於中斷函式的返回
以上是一般微控制器書籍簡紹的,然而在實際應用中,我發現,在程式返回中一樣可以使用reti,而在中斷返回中卻無法使用ret,究其原因是因為reti比ret多做一件事情就是將「優先順序生效」觸發器清零
原來在8051構架中--中斷系統中含有兩個不可定址的「優先順序生效」觸發器。一個用於指出cpu是否正在執行高優先順序的中斷服務程式,這個觸發器為1時,系統將遮蔽所有的中斷請求;另一個則指出cpu是否正在執行低優先順序中斷服務程式,該觸發器為1時,將阻止除高優先順序以外的一切中斷請求。由此可見,若要響應同級甚至是低階中斷請求,必須使得該「優先順序生效」觸發器清零。
但該觸發器又是不可定址的,所以無法用軟體直接清零。」
微控制器組合語言程式設計,全國微控制器組合語言程式設計師
org 0000h main mov dptr,3000h clr r0 clr r1 clr r2 mov r3,100 loop mov a,dptr clr c cjne a,0h,loop1 inc r0 djnz r3,loop loop1 rl a jc fushu inc r1 djn...
微控制器彙編程式出錯
圖太不清晰了 問題可能在p0口的上拉電阻上 過小了 執行時暫停下,看p0口的邏輯電平。再一個就是檢查 網路標號了 低階錯誤 ls,對此程式而言,好像延時沒有必要!程式,我看沒問題,就看你電路的連線了。我proteus剛關掉,我就不試了,關注該問題進展。怎麼沒見你寫對數碼管的選址指令啊?數碼管顯示一位...
微控制器大神請進,51微控制器彙編程式,程式可發至
生活如歌 1 p1口做輸出口,編寫程式,使p1口接的8個發光二極體l1 l8按16進位制加一方式點亮發光二極體。程式如下 org 0540h ha1s mov a,00h a初值為0 ha1s1 jb p3.3,ha1s1 如果p3.3為1則等待 有脈衝變0一次 mov r2,20h r2賦值為20...