1樓:
主要問題在於現場保護做的不完整,漏掉了對r0 r1 r2的保護,程式修改如下,已除錯通過。
org 0000h
sjmp main
org 0003h
ajmp int2;int0_isr
org 0013h
ajmp int3;int1_isr
org 0030h
main:
setb ex0
setb ex1
setb ea
setb px0 ;將外部中斷0設定為高階中斷setb it0 ;外部中斷0引腳負跳變有效; clr it0 ;外部中斷0低電平有效,將ie0置1,否則將ie0清零。
mov a,#0feh ;1111 1110loop:
setb 20h.0
mov p0,a
rl a
acall delay
sjmp loop
int3:
push psw
push acc
push 00h;push r0;【增加】push 01h;push r1;【增加】push 02h;push r2;【增加】; mov r0,a;【去掉】
mov a,#7fh
loop1:
mov p1,a
rr a
acall delay
jb 20h.0,loop1
pop 02h;pop r2;【增加】
pop 01h;pop r1;【增加】
pop 00h;pop r0;【增加】
pop acc
pop psw
reti
int2:
push psw
push acc
push 00h;push r0;【增加】push 01h;push r1;【增加】push 02h;push r2 ;【增加】clr 20h.0
jnb p3.2,$ ;等待int0恢復高電平(按鍵彈起)pop 02h;pop r2;【增加】
pop 01h;pop r1;【增加】
pop 00h;pop r0;【增加】
pop acc
pop psw
reti
delay:
mov r0,#5
del1:
mov r1,#250
del2:
mov r2,#250
djnz r2,$
djnz r1,del2
djnz r0,del1
retend
2樓:匿名使用者
程式挺亂的 再多看看書 再重寫一下 這個程式並不複雜 會成功的
如果都告訴你了還練什麼
51微控制器,有關中斷問題,為什麼進入不了第二個中斷,而是一直執行第一個中斷的程式而已 5
3樓:du知道君
mov tmod,#31h,mov ie,92h,應是立即數 這兩條指令錯了,定時器t1沒有方式3,只有t0才有的。t0工作在方式1,t1工作在方式2就可以了,改成:mov tmod,#21h,t1,t0都允許中斷,則ei=8ah,改成:
mov ie,#8ah。 還有: brt1:
clr ea cpl p2.0 mov th1,0ffh ,應是#0ffh,是立即數 mov tl1,#0ech setb ea
51微控制器中斷怎麼跳出去繼續執行主程式的問題
4樓:無畏無知者
中斷函式執行完成退出後,便自動返回主程式繼續下一個指令的執行的;
在中斷函式裡,不要做太多的事情,更不要有延時函式,除非其延時值比中斷間隙要小,否則中斷會亂套的;
51微控制器怎麼同時開啟兩個中斷的問題?
5樓:朝霞英語
高優先順序中斷執行過程中低的不能執行。
中斷使能,中斷允許即此中斷已開啟。但cpu不可以同時執行兩個中斷。所以中斷分優先順序。
要優先於高階中斷,再開低階中斷。
當系統有個定時中斷。比如定時採集溫度值,然後通過串列埠傳送到上位機。這樣程式裡要用到定時中斷和串列埠中斷。
處理了定時中斷後,再處理的串列埠中斷。
6樓:匿名使用者
中斷使能,中斷允許即此中斷已開啟。但cpu不可以同時執行兩個中斷。所以中斷分優先順序。
7樓:向廣川
一箇中斷怎麼寫,第二個中斷就怎麼寫啊!!只是要注意兩個中斷不能同時響應!!所以要注意一下就好了
51微控制器,外部中斷一直迴圈跳不出來
8樓:匿名使用者
你可能將外部中斷0初始化成低電平觸發模式了。改為沿觸發就好。it0=1;
9樓:匿名使用者
main函式前要將p3^2和p1^4置1了嗎?
10樓:似水流年丶
解決了嗎 我也遇到這個問題了
請問51微控制器能不能暫停中斷程式並跳轉至其它程式中、執行完後跳回中斷繼續執行中斷
11樓:匿名使用者
嚴格說起來,從中斷程式跳轉到其他程式執行一段時間,然後再返回中斷,這個專是可以做到的。屬
實事上,嵌入式的作業系統的時間片輪轉,就是用定時中斷,進入定時中斷判斷並切換上下文,切換到別的任務,執行一段時間再返回原來的流程繼續執行。
但請注意,正常設計程式時,不要這麼做。
如果遇到程式中需要用到這種流程控制,有兩個辦法,重新設計流程,
使用嵌入式作業系統。
12樓:匿名使用者
高一級別的中斷可以中斷低一級別的中斷,執行完後再跳回到低階中斷中執行
有個問題,51微控制器中外部中斷採用跳沿觸發方式,為什麼中斷執行完後得等好長時間主程式才開始恢復執行
13樓:落漠so漠落
因為你的中斷程式執行的時間太長了吧!如果是大量的工作最好不要寫在中斷程式中內
執行,那樣容
容易丟失中斷事件!還有就是雖然用的是跳變沿出發,但是觸發一次就要執行一次中斷程式,結束之後才回到主程式的!希望可以幫到你
14樓:天天想你
額。。。。問題是你的主程式是不是包含一個死迴圈,如果沒有的話,主程式會預設的往後執行,在儲存空間裡有很大的一部分空間你沒有放**,可是程式還是去執行,等執行完之後 才會從地址0開始執行
15樓:匿名使用者
得看看你程式才行,這樣不好說
51微控制器寫個程式,好像在中斷裡面出不來了,主程式只執行了一部分,之後一直在中斷裡面執行
16樓:如此簡單
跟我之來前一樣,對中斷,定源
時器瞭解的不夠透徹,被老師訓了之後查資料搞實驗後終於搞清楚了,下面說說我的看法:千萬不要在中斷函式中做多餘的事!!!只能做最基本的操作,比如置標誌位,讓一個數加一等,與延時有關的操作千萬不要做!
你10ms進一次中斷,在裡面又掃描按鍵,又顯示液晶,這裡面花的時間遠遠地超過10ms,它肯定死在中斷裡出不來啊,因為你不關閉中斷的話它一直10ms進去,最好在中斷裡設定幾個標誌位,進中斷就讓標誌位置1,然後出中斷,在主迴圈裡判斷標誌位,如果標誌位置1了,就清零標誌位,然後做其他的動作。好好想一想,思路一定要清晰!
17樓:匿名使用者
如果真如你所說,那麼問題出在keyscan()函式。
18樓:雪芃長流如
開中斷以後,在中斷服務子程式中設定一箇中斷次數計數器,統計達到2次後
中斷次數計數器清0,然後再把莫暫存器加一。
微控制器中斷的意思,51微控制器外部中斷到底什麼意思?
八哥說科技 中斷就是指處理機執行過程中,出現某些意外情況需主機干預時,機器能自動停止正在執行的程式並轉入處理新情況的程式,處理完畢後又返回原被暫停的程式繼續執行。中斷就是微控制器處理任務a時,發生了觸發中斷的條件停下來執行另一個任務b,觸發中斷的條件就屬於中斷源,任務b就是中斷任務 中斷服務函式 當...
51微控制器串列埠通訊中斷的問題,51微控制器串列埠通訊問題
肯定不會執行while ti 0 下面的程式的,因為你的中斷開著,程式跳到中斷服務程式裡面了,然後中斷處理結束了之後,ti自動清零了,所以一直在while ti 0 無限迴圈。程式裡面,既然開通了中斷功能,那你就一直使用中斷功能,為什麼你還要使用查詢功能呢?甚至有時把中斷給禁止了,這裡面容易出現問題...
MCS 51微控制器的中斷問題,MCS 51微控制器問題?
中斷系統中有兩個 使用者不能使用的 優先順序狀態觸發器 其中一個,置1時,表示正在執行高優先順序的中斷,遮蔽所有中斷請求 還有一個,置1時,表示正在執行低優先順序的中斷,遮蔽同級中斷請求.明白了吧?其實就是說這兩個觸發器,是使用者無法訪問到的,是內建且自動賦值的.一旦有高優先順序的中斷執行了,第一個...