99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

51中斷的問題:謝謝先!51中斷的問題:謝謝先!大家看看!!大家看看!!

我想到一個問題:就是CPU有響應一個中斷后我不用RETI返回.用下面的:

   MOV R0,SP
   MOV DPH,@R0
   DEC SP
   MOV R0,SP
   MOV DPL,@R0
   DEC SP
   CLR A
   JMP @A+DPTR

這一斷替代RETI.是可以返回到程序的中斷處繼續運行,但卻不再響應下一次的中斷了,TFx為1沒有一點的反應.不轉向中斷入口.

請問,這樣我要如何來處理????
全部回復(12)
正序查看
倒序查看
xsw810810
LV.4
2
2007-06-21 17:12
如下面這個程序,響應EXT1后,我不要在繼續EXT0,直接回主程序,但T0卻再也不會中斷入口了!!

   ORG 0000H
   LJMP START
   ORG 0003H     ;外中斷0:0003H
   SETB F0
   JMP EXT0
   ORG 000BH     ;定時器0:000BH
   ;jmp TIM0
   ORG 0013H     ;外中斷1:0013H
   JMP EXT1
   ORG 001BH     ;定時器1:001BH
   ;jmp TIM1
   ORG 0023H     ;串  口 :0023H
  

START:
    MOV SP,#70H     ;SP指針指向70H
   MOV IE,#10001111B   ;EA置1,開所有中斷.
   MOV IP,#00000100B   ;08H,T1高優先.
   SETB P1.0
   NOP
   NOP
   NOP
   SJMP $
  
EXT0:  
  
   CPL P1.0
   NOP
   NOP
   NOP
   NOP
   RETI  

EXT1:  CPL P1.1
   JNB F0,EXT1_1  
   POP 7CH
   POP 7DH
   CLR F0
EXT1_1 : RETI

   END
0
回復
whatcall
LV.5
3
2007-06-21 19:00
@xsw810810
如下面這個程序,響應EXT1后,我不要在繼續EXT0,直接回主程序,但T0卻再也不會中斷入口了!!  ORG0000H  LJMPSTART  ORG0003H    ;外中斷0:0003H  SETBF0  JMPEXT0  ORG000BH    ;定時器0:000BH  ;jmpTIM0  ORG0013H    ;外中斷1:0013H  JMPEXT1  ORG001BH    ;定時器1:001BH  ;jmpTIM1  ORG0023H    ;串  口:0023H  START:    MOVSP,#70H    ;SP指針指向70H  MOVIE,#10001111B  ;EA置1,開所有中斷.  MOVIP,#00000100B  ;08H,T1高優先.  SETBP1.0  NOP  NOP  NOP  SJMP$  EXT0:      CPLP1.0  NOP  NOP  NOP  NOP  RETI  EXT1:  CPLP1.1  JNBF0,EXT1_1    POP7CH  POP7DH  CLRF0EXT1_1:RETI  END
我想是不是你的那段代碼并不能完全代替RETI的功能,中斷的某些硬件標志未被清除?
0
回復
maychang
LV.6
4
2007-06-22 00:22
RETI指令與RET指令不一樣.RET指令僅僅是將堆棧中的返回地址彈出到程序計數器和修改棧針.RETI指令除了完成RET指令的工作外,還要清中斷掛號寄存器,使得再次發生中斷請求時可以響應請求,執行中斷程序.你的這段程序不能清中斷掛號寄存器(事實上51單片機也沒有訪問中斷掛號寄存器的指令).
0
回復
110919645
LV.2
5
2007-06-22 06:03
@xsw810810
如下面這個程序,響應EXT1后,我不要在繼續EXT0,直接回主程序,但T0卻再也不會中斷入口了!!  ORG0000H  LJMPSTART  ORG0003H    ;外中斷0:0003H  SETBF0  JMPEXT0  ORG000BH    ;定時器0:000BH  ;jmpTIM0  ORG0013H    ;外中斷1:0013H  JMPEXT1  ORG001BH    ;定時器1:001BH  ;jmpTIM1  ORG0023H    ;串  口:0023H  START:    MOVSP,#70H    ;SP指針指向70H  MOVIE,#10001111B  ;EA置1,開所有中斷.  MOVIP,#00000100B  ;08H,T1高優先.  SETBP1.0  NOP  NOP  NOP  SJMP$  EXT0:      CPLP1.0  NOP  NOP  NOP  NOP  RETI  EXT1:  CPLP1.1  JNBF0,EXT1_1    POP7CH  POP7DH  CLRF0EXT1_1:RETI  END
各位大哥51我也不太懂誰愿意教我請發郵件:yongshengdianzi@126.com
0
回復
xsw810810
LV.4
6
2007-06-22 09:46
@maychang
RETI指令與RET指令不一樣.RET指令僅僅是將堆棧中的返回地址彈出到程序計數器和修改棧針.RETI指令除了完成RET指令的工作外,還要清中斷掛號寄存器,使得再次發生中斷請求時可以響應請求,執行中斷程序.你的這段程序不能清中斷掛號寄存器(事實上51單片機也沒有訪問中斷掛號寄存器的指令).
maychang  
你好!那就是說中斷之后我一定要RETI返回.不然下次就不會再發生中斷了是不是???
0
回復
xsw810810
LV.4
7
2007-06-22 14:02
@maychang
RETI指令與RET指令不一樣.RET指令僅僅是將堆棧中的返回地址彈出到程序計數器和修改棧針.RETI指令除了完成RET指令的工作外,還要清中斷掛號寄存器,使得再次發生中斷請求時可以響應請求,執行中斷程序.你的這段程序不能清中斷掛號寄存器(事實上51單片機也沒有訪問中斷掛號寄存器的指令).
您看看這個程序:

   ORG 0000H
   LJMP START
   ORG 0003H     ;外中斷0:0003H
   JMP EXT0
   ORG 000BH     ;定時器0:000BH
   ;jmp TIM0
   ORG 0013H     ;外中斷1:0013H
   JMP EXT1
   ORG 001BH     ;定時器1:001BH
   ;jmp TIM1
   ORG 0023H     ;串  口 :0023H
  

START:
    MOV SP,#70H     ;SP指針指向70H
   SETB EA
   SETB EX0     ;開外中斷0
   MOV IP,#00000100B   ;08H,T1高優先.
   SETB P1.0
   SJMP $
  
EXT0:  
   CLR EX0      ;關外中斷0    
   SETB EX1     ;開外中斷1
   CPL P1.0
   MOV R7,#100
D1:   MOV R6,#20
D2:   MOV R5,#248
   DJNZ R5,$
   DJNZ R6,D2
   DJNZ R7,D1
   jmp ext0  

EXT1:    
   CLR EX1         ;關外中斷1
   CLR IE0
   POP 7CH
   POP 7DH
   SETB EX0      ;開外中斷0
   RETI

   END  

START開INT 0中斷.也就是說INT0是起動鍵.INT1是暫停鍵,返回SJMP $處一直循環.等待INT0再觸發!

這是我在一本書上看到的,但就是仿不了.第一次INT0是可以起動.但暫停之后再INT0沒有一點反應了.是不是程序有什么問題.還望說說!!!
0
回復
maychang
LV.6
8
2007-06-24 12:04
@xsw810810
maychang  你好!那就是說中斷之后我一定要RETI返回.不然下次就不會再發生中斷了是不是???
就是.中斷之后一定要RETI返回.不然下次中斷無法執行.
0
回復
xsw810810
LV.4
9
2007-07-31 09:30
@xsw810810
您看看這個程序:  ORG0000H  LJMPSTART  ORG0003H    ;外中斷0:0003H  JMPEXT0  ORG000BH    ;定時器0:000BH  ;jmpTIM0  ORG0013H    ;外中斷1:0013H  JMPEXT1  ORG001BH    ;定時器1:001BH  ;jmpTIM1  ORG0023H    ;串  口:0023H  START:    MOVSP,#70H    ;SP指針指向70H  SETBEA  SETBEX0    ;開外中斷0  MOVIP,#00000100B  ;08H,T1高優先.  SETBP1.0  SJMP$  EXT0:    CLREX0      ;關外中斷0      SETBEX1    ;開外中斷1  CPLP1.0  MOVR7,#100D1:  MOVR6,#20D2:  MOVR5,#248  DJNZR5,$  DJNZR6,D2  DJNZR7,D1  jmpext0  EXT1:      CLREX1        ;關外中斷1  CLRIE0  POP7CH  POP7DH  SETBEX0      ;開外中斷0  RETI  END  START開INT0中斷.也就是說INT0是起動鍵.INT1是暫停鍵,返回SJMP$處一直循環.等待INT0再觸發!這是我在一本書上看到的,但就是仿不了.第一次INT0是可以起動.但暫停之后再INT0沒有一點反應了.是不是程序有什么問題.還望說說!!!
高人指點一二啊!!!
0
回復
maychang
LV.6
10
2007-08-06 02:58
@xsw810810
您看看這個程序:  ORG0000H  LJMPSTART  ORG0003H    ;外中斷0:0003H  JMPEXT0  ORG000BH    ;定時器0:000BH  ;jmpTIM0  ORG0013H    ;外中斷1:0013H  JMPEXT1  ORG001BH    ;定時器1:001BH  ;jmpTIM1  ORG0023H    ;串  口:0023H  START:    MOVSP,#70H    ;SP指針指向70H  SETBEA  SETBEX0    ;開外中斷0  MOVIP,#00000100B  ;08H,T1高優先.  SETBP1.0  SJMP$  EXT0:    CLREX0      ;關外中斷0      SETBEX1    ;開外中斷1  CPLP1.0  MOVR7,#100D1:  MOVR6,#20D2:  MOVR5,#248  DJNZR5,$  DJNZR6,D2  DJNZR7,D1  jmpext0  EXT1:      CLREX1        ;關外中斷1  CLRIE0  POP7CH  POP7DH  SETBEX0      ;開外中斷0  RETI  END  START開INT0中斷.也就是說INT0是起動鍵.INT1是暫停鍵,返回SJMP$處一直循環.等待INT0再觸發!這是我在一本書上看到的,但就是仿不了.第一次INT0是可以起動.但暫停之后再INT0沒有一點反應了.是不是程序有什么問題.還望說說!!!
這個程序顯然不能執行到外中斷1.
外中斷0未退出,而外中斷0和外中斷1同一優先級,外中斷0不退出外中斷1是不會得到響應的.
0
回復
xsw810810
LV.4
11
2007-08-09 14:49
@maychang
這個程序顯然不能執行到外中斷1.外中斷0未退出,而外中斷0和外中斷1同一優先級,外中斷0不退出外中斷1是不會得到響應的.
謝謝了啊1!!!
0
回復
tang7273
LV.1
12
2007-08-11 19:46
@xsw810810
高人指點一二啊!!!
如果你的功底不好的話,建議你使用C語言寫程序比較的好,關鍵就是快啊,一開始上手用匯編可能搞搞就沒有信心了,怎么搞都搞不定啊!
0
回復
110919645
LV.2
13
2007-12-20 19:26
@xsw810810
高人指點一二啊!!!
123
0
回復
主站蜘蛛池模板: 久做在线视频免费观看 | 亚洲麻豆精品 | 日本aⅴ日本高清视频影片www | 欧美4区 | 5252aⅴhaose我爱久久 | 激情亚洲AV无码日韩色 | 在线免费一级片 | 曰韩av在线| 成人性生交大片免费看中国A片 | 婷婷影院在线综合免费视频 | 国产精品久久久不卡 | 欧美一级免费高清 | 国内A级毛片免费观看 | 日韩精品a在线观看 | 国产日韩在线 | 国产成人综合自拍 | 久久国产热视频 | 日韩熟女精品一区二区三区 | 91福利网站在线观看 | 国产精品久久久久久久久吹潮 | 国产强伦姧人妻毛片 | 亚洲精品一区二区另类图片 | 日本黄页网站免费大全1688 | 美女扒开腿让男人桶爽网站 | 一级黄色特级片 | 99热这里只有精品最新地址获取 | 国产片一区二区三区 | 久久97超碰色中文字幕蜜芽 | 国产亚洲一区二区手机在线观看 | 久久国产精品成人免费网站 | 神马午夜窝窝 | 9191久久久久久久久久久 | 手机在线中文字幕 | 2019中文字幕久久 | 欧美亚洲中日韩中文字幕在线 | 偷窥国产亚洲免费视频 | 飘雪影院免费版在线观看视频 | 中文在线综合 | 男男GV白嫩小受GV在线播放 | 精品国产鲁一鲁一区二区三区 | 在线高清理伦片a |