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

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

省電模式被定時器中斷喚醒,中斷結束后返回何處?

作者:sambie 欄目:單片機
省電模式被定時器中斷喚醒,中斷結束后返回何處?
keil的仿真結果是返回到斷點的下一句,但萬利的仿真器返回到別的地方。到底應該到哪里?請高手發(fā)表看法

2樓: >>參與討論
xwj
返回到被中斷的主程序,就是設置省電模式語句的下一句
因此中斷喚醒的系統(tǒng)應該把“設置省電模式語句”設為無限循環(huán),退出中斷后就又會進入省電模式

3樓: >>參與討論
computer00
當然要返回到該回的地方了,不然程序不是出錯了。。。
從哪進的中斷,就應該要回到哪(上了操作系統(tǒng)的除外)。

4樓: >>參與討論
sambie
好像不對。。。
請看下面的程序:
    org 0000h
    sjmp    main
    org    000bh
    sjmp    t0int
    
main:    mov    sp,#3fh
    MOV    TMOD,#11H    
    setb     ea
loop:
    clr    tf0
    CLR    TR0
    SETB    ET0        
    MOV    TH0,#0H
    MOV    TL0,#0H    
    SETB    TR0    
psaving:    orl    pcon,#1b
    clr    p1.3
    setb    p1.3
    sjmp    loop
t0int:    PUSH    psw
    PUSH    acc
    pop acc
    pop psw
    reti
    end

我用軟件仿真時,定時器中斷返回到 clr p1.3 這句(即使不發(fā)生中斷,當單步執(zhí)行下一步即clr p1.3時,仍然能執(zhí)行,不知道為什么--因為已經進入省電模式,按理CPU不應該執(zhí)行這一步。),可是如果接上目標板,當執(zhí)行到psaving 時就跳到t0int(即使中斷并未發(fā)生),并且pcon.0也不為1。根本不會執(zhí)行到下一句。我猜想定時器中斷不能用于喚醒CPU,只能在中斷服務程序里打轉。請高手們指正。

5樓: >>參與討論
computer00
re:好好讀讀8951的datasheet吧。
在設置進入掉電模式的語句后面,不能用訪問端口的指令。

6樓: >>參與討論
sambie
即使換成mov a, #1h,也還是一樣啊
感謝圈圈的提醒。

7樓: >>參與討論
sambie
有沒有哪位高手解釋一下為什么省電模式被定時器中斷喚醒
后,不能返回到設置省電模式語句的下一句的原因?謝謝

8樓: >>參與討論
xwj
不要全信仿真器,很多仿真器都不是(或不能)完全仿真單片機的
 
9樓: >>參與討論
descriptor
re樓主
用軟件仿真時,執(zhí)行orl pcon,#1b后,仍然能執(zhí)行下一句clr p1.3,不知道為什么?已經進入省電模式,按理CPU不應該執(zhí)行這一步。
--因為仿真軟件沒有這么聰明。

如果接上目標板,當執(zhí)行到psaving 時就跳到t0int(即使中斷并未發(fā)生),并且pcon.0也不為1。根本不會執(zhí)行到下一句。
--執(zhí)行SETB TR0后,T0是硬件,T0立即運行,并不理會你單步與否,并且瞬間溢出引起中斷。退出中斷時,T0仍然會溢出,所以表現(xiàn)為在中斷里打轉,根本不會執(zhí)行到下一句。這是完全正確的結果。所以說不是在所有的地方都能設置斷點。

10樓: >>參與討論
sambie
樓上言之有理。就是說,用定時器無法喚醒省電模式?
 
11樓: >>參與討論
computer00
省電模式?是不是idle模式?還是POWER down模式?
idle模式是可以通過中斷來喚醒的;而POWER down模式則只有reset才能喚醒。
這個在51的datasheet上應該寫得很清楚。

12樓: >>參與討論
descriptor
sambie,我都快被你氣死了
我覺得講得夠明白了。
不是用定時器無法喚醒idle模式,而是你不能在此設斷點。

13樓: >>參與討論
sambie
樓上息怒。恕我愚頑不化。我還是不能從您的回復中
找到我需要的答案。我想用定時器中斷來喚醒idle,希望中斷返回到設置idle語句的下一句,可是如您所說,程序總在中斷服務程序中打轉,無法跳出。這樣idle不是永遠都喚不醒嗎?我在中斷程序中把pcon.0置0也不管用。還有,我把程序燒進89C2051試也沒有見到被喚醒。
各位高手都說可以喚醒,那一定是我那兒搞錯了,可問題出在哪里呢?謝謝

14樓: >>參與討論
noahwj
肯定可以,我用過,orl pcon,#1b改為MOV PCON,#01H
 
15樓: >>參與討論
fushaobing
sambie
有關“中斷”和“定時器”的問題是很難用仿真器仿真的,因為仿真器永遠代替不了MCU。比如,你走單步時,即使你看到了定時器的計數(shù)器在變化,那也是不真實的。
descriptor說的已經很清楚了,你仔細體會一下。
如果你想得到你想要的結果,必須燒到MCU里面去。至于你說的燒了以后也看不到你要的結果,我想應該想想其他的辦法。因為“computer00”說了“在設置進入掉電模式的語句后面,不能用訪問端口的指令”。



16樓: >>參與討論
computer00
我用keil軟仿真過了,可以進入中斷的。我用的是外部中斷0
設置進入idle模式后,就停在了下面的一條語句。然后中斷到來時,就進入中斷服務程序。
返回就返回到了idle下面的那條語句,繼續(xù)執(zhí)行。

17樓: >>參與討論
sambie
看到這么多高手都回了帖子,真是感激。
computer00, 用外部中斷肯定沒問題?晌沂窍胗枚〞r器。我的本意是想讓MCU 執(zhí)行一些操作后 IDLE 一段時間如1小時后被定時器喚醒,再循環(huán)?沙绦蚶鲜遣恍。大俠論壇上有人說這很難實現(xiàn),需要用RTC。而這里的眾高手說可行,我用仿真器得不到結果,MCU也不行,還惹煩了幾位,真是罪過。要不你用定時器試試?謝謝了

18樓: >>參與討論
computer00
用定時器也可以,我用了定時器2,10mS中斷一次,可以從idle喚醒
你的系統(tǒng)時鐘是多少?idle一小時?定時器可能弄不了那長時間啊,加軟件計數(shù)還差不多。


另外,我用你的程序仿真,運行結果也正確啊。

orl    pcon,#1b
clr    p1.3  ;程序運行到這里暫停。一定時間后,進入中斷服務程序,運行完ISR后,繼續(xù)從這里往下運行。

19樓: >>參與討論
sambie
我猜想你是用keil軟件仿真,對吧?軟件仿真是可以
硬件仿真和燒到mcu中去就不行了。

20樓: >>參與討論
computer00
我硬件上也行啊,
   while(i)
    {
     LCD_printc(0xFF);
     PCON|=0x01;PCON|=0x01;PCON|=0x01;PCON|=0x01;PCON|=0x01;
     //我用LCD顯示的,加了幾個進來,顯示速度明顯變慢了。定時器2每隔10mS中斷一次
     i--;
    }
   LCD_printc(1+TEMP%5);

21樓: >>參與討論
javie
問題的關鍵就在于你們太相信萬歷的仿真器了
尤其在中斷和定時的時候

我們只能相信MCU本身

而不能把希望寄托在萬歷身上

22樓: >>參與討論
descriptor
sambie,我服了你了
不能在硬件仿真時在SETB TR0后加入斷點(或單步等)。
你加了斷點,程序暫時停止,可是T0并不會停止,所以在你盯著屏幕發(fā)呆的時候,T0已經溢出申請中斷。再執(zhí)行下一步時,就進了中斷。中斷返回時情況相同,所以表現(xiàn)為在中斷里打轉,永遠執(zhí)行不了psaving: orl pcon,#1b。
如果全速運行,或者燒成片子,執(zhí)行完SETB TR0后自然會執(zhí)行psaving: orl pcon,#1b,結果將完全正確。
還是那句話:不是用定時器無法喚醒idle模式,而是你不能在此設斷點。






23樓: >>參與討論
descriptor
建議你把程序改成
中斷
點亮LED
中斷返回

主循環(huán)
延時約1S
關閉LED
idle

這樣你燒成片子或者全速就能看到喚醒的效果了。T0決定LED熄滅的時間,如果太短,人眼將看不出來。


* - 本貼最后修改時間:2006-1-3 18:09:59 修改者:descriptor

24樓: >>參與討論
jackf125
看MCU的資料,多有交代
看MCU的資料,多有交代

25樓: >>參與討論
martial
學習!ing
 
26樓: >>參與討論
wolfererer
樓上幾位真是熱心人啊,佩服,佩服
 
27樓: >>參與討論
sambie
感謝各位指點,特別是descriptor,
出了趟差,沒有及時回復大家,sorry。我發(fā)現(xiàn)了原來程序中一個很可笑的錯誤:我在中斷程序中將中斷次數(shù)保存為某個變量,在主程序中用R0與它進行比較,如果相等,則引發(fā)IDLE?墒钱斨鞒绦驁(zhí)行到這里的時候,變量的值已經超過了R0,這就是為什么老不進入idle的原因。仿真時看到的卻是程序總在中斷程序中打轉。后來我改了程序,也看到了正確的結果。。。說實話,在此之前我還不知道怎么設置斷點呢,當然理解不了Descriptor的意思啦。不過也從幾位高人這里學到了東西,特別加深了對仿真的理解,謝謝。


參與討論
昵稱:
討論內容:
 
 
相關帖子
我想要用單片機的5V輸出來控制12V的通斷。
為什么51單片機IO口在輸入時要先置高電平
[轉帖]Keil和Proteus結合實例之一
77E58 pcon中smod與WDCON中SMOD_1的區(qū)別
大家介紹一款有usb的單片機。
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入


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