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

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

51單片機可以從T0中斷程序中直接跳到程序開始嗎?

作者:半導體 欄目:單片機
51單片機可以從T0中斷程序中直接跳到程序開始嗎?
51單片機可以從T0中斷程序中用LJMP命令直接跳到程序開始嗎?
我做一個東西,需要從T0中斷中直接跳到程序開始處,用仿真器察看,中斷打開后,程序不再進入任何中斷,有什么方法么?

2樓: >>參與討論
computer00
為什么不用RETI返回?
   怎么我發(fā)現(xiàn)有些人做東西,總會搞一些古怪的東西呢?我怎么就從來沒遇到這樣的問題?
   我要返回,就直接一個return(C語言)。

* - 本貼最后修改時間:2005-3-7 18:18:01 修改者:computer00

3樓: >>參與討論
半導體
某一種狀態(tài)下,我需要CPU從頭運行
哦,忘了說了,我也有RETI返回,
只是某一種狀態(tài)下,我需要CPU從頭運行,不知用什么方式比較好

4樓: >>參與討論
音樂樂樂
在reti之前把0x0000地址壓入堆棧
 這樣返回后即可以退出中斷,又可以跳回0地址執(zhí)行

51好像有兩級中斷,所以需要用類似方法reti兩次,以前有帖子討論過這個問題。

5樓: >>參與討論
worminight
偶有個想法
偶有個想法:(匯編)

int_t0:        ;t0終端服務(wù)程序
               
;重啟動標志位條件滿足。彈出堆棧其他入棧數(shù)據(jù)sp=int_t0中斷地址+2  

pop a
pop a
PUSH  目標高地址          ;重啟高地址
PUSH  目標低地址          ;重啟低地址
reti

反正思想就是想辦法吧存入堆棧的int地址變?yōu)橹貑幽繕说刂肪托辛恕?br>不知行不?

6樓: >>參與討論
maychang
worminight的方法可行
 
7樓: >>參與討論
dengm
可以這樣
     。。。
     DEC SP
     DEC SP
     ACALL INTRET
     ACALL INTRET
     LJMP 0000

INTRET:
     RETI


8樓: >>參與討論
hotpower
方法太多
 
9樓: >>參與討論
worminight
也可以這樣,真有意思
     DEC SP
     DEC SP

     PUSH  目標高地址          ;重啟高地址
     PUSH  目標低地址          ;重啟低地址
    
     RETI

嘻嘻,有點意思了

10樓: >>參與討論
renmingcan
非也非也
 
11樓: >>參與討論
hotpower
2次reti比較好
可以這樣(學習鄧苗好榜樣)

     。。。
;    DEC SP;此句不好,會破壞數(shù)據(jù)區(qū)(假定此時在主程序中)
;    DEC SP;此句不好,會破壞數(shù)據(jù)區(qū)(假定此時在主程序中)
     ACALL INTRET;此句執(zhí)行1次RETI
;    ACALL INTRET;此句+LJMP 0000不如改后3句
;    LJMP 0000;此句不如以下3句
     CLR   A
     PUSH  ACC
     PUSH  ACC
INTRET:
     RETI




* - 本貼最后修改時間:2005-3-9 1:16:52 修改者:hotpower

12樓: >>參與討論
canycao
不能這樣
51單片機中斷時有些位是通過硬件置位的,必須執(zhí)行RETI時才能進行清位,所以要解決這樣的問題常采用改寫堆棧或置位查詢的方式進行

13樓: >>參與討論
雁舞白沙
強行進入!
 
14樓: >>參與討論
juery1197
為何不想辦法讓mcu復(fù)位?
想個辦法讓mcu在你要的那特定條件下復(fù)位就可以了。

15樓: >>參與討論
danielsh04
可以的
可以直接跳到程序開始,最好在程序開始處清一下堆棧,并注意中斷標志位。

16樓: >>參與討論
sharks
52單片機非常好辦。
  52有內(nèi)狗,打開,餓死。8192周期,很短

17樓: >>參與討論
c_a_j
復(fù)位
如果有看門夠的話,在程序里延時,使看門狗復(fù)位就行了。

18樓: >>參與討論
njp508
re
可以,只要處理好堆棧的問題就可以.

19樓: >>參與討論
tldong
請教高手
我的畢業(yè)設(shè)計課題是關(guān)于485串口通信及嵌入式系統(tǒng)應(yīng)用,在此請那位高手能給點資料.謝謝!tldong_1982@163.com

20樓: >>參與討論
erp21com
這樣做也許更好!
isr_t0:
      lcall   DUMMY_reti
      pop    a    ;;注意sp
    pop    a
    ljmp   anywhere  
DUMMY;_reti


21樓: >>參與討論
dx1021
當然可以,這種應(yīng)用場合完全可以不用這樣程序結(jié)構(gòu)阿,總之不提倡
 
22樓: >>參與討論
jinlongzhu
修改程序計數(shù)器或用長跳轉(zhuǎn)語句
修改程序計數(shù)器


23樓: >>參與討論
xwj
有看門狗就餓死狗狗,沒有就用一個IO加一個電阻一個PNP管復(fù)位
 
24樓: >>參與討論
wolaiye3
我是這樣做的!
MOV   A,#0
PUSH  ACC
PUSH  ACC
RETI

這樣就可以了
在我的系統(tǒng)中已經(jīng)可以用了

25樓: >>參與討論
李冬發(fā)
為什么要這樣做?是為了標新立意還是其它?
我認為還是用正統(tǒng)的程序結(jié)構(gòu)為好!

26樓: >>參與討論
ligpin
111
111

27樓: >>參與討論
12864
這并不影響“正統(tǒng)”的程序結(jié)構(gòu)
需要軟復(fù)位,于是就這樣做,無需理由

28樓: >>參與討論
caijie
好玩的一個程序  寄存器等相關(guān)內(nèi)容自己要保存
這是我做來好玩的一個程序
你可以在中斷中跳到你想的地方 想數(shù)據(jù)之類的保存處理 等等 你自己要保證再次能用就行


DD1 = 1234H
DD2 = 2345H
DD3 = 3456H

RR1 = 0*8+0 ;
RR2 = 1*8+0
RR3 = 2*8+0

TT1 = 30H
TT2 = 31H

SYSRUN_SIG = 20H.1

SYSTIME = 0F830H
FLAG = 20H.0

             ORG   0000H
             LJMP  main
             ORG   000BH
             LJMP  ISR_TIMER0

main:        MOV   A,#45H
             MOV   B,#10
             DIV   AB




             CPL   RR1
             CPL   RR2
             CPL   RR3
             MOV   A,TT1
             CPL   A
             MOV   TT1,A
             MOV   A,TT2
             CPL   A
             MOV   TT2,A
            ; SJMP  main
             JB    SYSRUN_SIG,SYSERROR
             MOV   SP,#60H
             LCALL DELAY
             ORL   TMOD,#01H    ; Timer 0 Mode 1
             MOV   TL0,#LOW(SYSTIME)
             MOV   TH0,#HIGH (SYSTIME)
             SETB  TR0
             SETB  EA
             SETB  ET0
             JMP   $    ;Wait startup fu1

SYSERROR:    NOP
             MOV   A,#0
             PUSH  A
             MOV   A,#0
             PUSH  A
             CLR   SYSRUN_SIG
             CLR   TR0
             CLR   EA
             RETI

             ORG   DD1
fu1:         NOP
             JMP   $


29樓: >>參與討論
雁舞白沙
ligpin  你是???
 
30樓: >>參與討論
fen_mo
有這個必要嗎?
 
31樓: >>參與討論
lipyxj
辦法很簡單
要用匯編,在RETI指令前,現(xiàn)將0000h壓入堆棧就可以了

32樓: >>參與討論
td578zz
我看可以
在RETI返回之前,修改壓棧的返回地址(也就是把行號地址壓棧),中斷返回后就回到你期望得地方.

33樓: >>參與討論
hexiaoxiao
有必要嗎?
 
34樓: >>參與討論
wolaiye3
好用
 
35樓: >>參與討論
hawker2001
可以倒是可以,不過……
這樣的中斷會亂掉的,因為大部分51在片內(nèi)有對用戶不可見的一些中斷寄存器,如果不用reti卻用跳轉(zhuǎn)指令或者ret之類的指令的話,會使中斷亂掉的。

36樓: >>參與討論
worminight
哥哥呀,其實就是把中斷返回地址改寫成目標地址就ok,然后reti
有關(guān)系嗎? 如果非要 用狗的話可能ram數(shù)據(jù)不保阿
當然小心別搞中斷嵌套,很麻煩

* - 本貼最后修改時間:2005-3-16 2:19:51 修改者:worminight

37樓: >>參與討論
jin2558
看門狗復(fù)位最簡單
 
38樓: >>參與討論
fanyunxiao
可以的,但要重新初始化堆棧
 
39樓: >>參與討論
gbchang
謝謝hotpower蚌,我曾經(jīng)用過你的概念做過一件功在當代,利在千秋的
謝謝hotpower蚌,我曾經(jīng)用過你的概念做過一件功在當代,利在千秋的事呢!

是這樣的:
W78E58的ISP,在串行中斷中收到標志了,就要進入休眠,可是在中斷中直接休不了,就只好只做一個標志,再在主程序中休,

用了你的方法后,程序就好辦了,第一次彈出,清掉中斷標志,同時跳到行休眠指令處.真爽.

謝謝啊.


40樓: >>參與討論
nuptni
請教樓主
  如何用單片機實現(xiàn)自檢?
    拜托!

41樓: >>參與討論
l_a
pop兩次,然后ljmp 0
 
42樓: >>參與討論
wxs_1
幫幫忙!!
  我的畢業(yè)設(shè)計是關(guān)于51單片機的無線通信,用C語言編程
  請各位高手賜教點關(guān)于這方面的資料或網(wǎng)站。謝謝!!

43樓: >>參與討論
sophist98
應(yīng)該可以
應(yīng)該可以。但CPU響應(yīng)中斷時要保護現(xiàn)場,這樣會造成空間不足。故中斷服務(wù)時應(yīng)清堆棧。不過我還沒試過這樣做。

44樓: >>參與討論
mengzs
達到同一目的通常有多種途徑!
總結(jié)各位大俠論點:達到同一目的通常有多種途徑,當一種方法行不通時,可以尋求其他途徑解決。主要還是將單片機的使用規(guī)則爛熟于胸然后多動手多思考,當把問題思考得差不多時還是不成,這時再問,往往一點就透。
不知對否。

45樓: >>參與討論
nongcunren
!。。。。。。。。。!
 worminight 老兄。
那樣不可以啊!
會死機的

46樓: >>參與討論
54liugang
為什么不直接跳到0000呢?
為什么不直接跳呢?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問有89c51的開發(fā)板嗎?
做個東西送MM,有個小問題,在線求教
請大蝦介紹幾種帶有雙串口的單片機,急用,謝謝
M50119P-01的紅外格式是怎樣的?
誰有sed1335控制器資料
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


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