精品国产一区在线_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
回復
主站蜘蛛池模板: 在线免费高清一区二区三区 | 在线免费观看污视频 | 国产精品日本亚洲777 | 日韩一区二区三区在线观看 | 精品人妻无码一区二区三区软件 | 欧美1区2区在线观看 | 青草综合网 | 日本一区二区久久免费黑人精品 | 青草视频久久 | 天天射综合网站 | 国产精品电影一区二区三区 | 男生女生差差差30分钟 | 小荡货你夹的老师好紧 | 国产偷久久 | 日韩黄色视屏 | 柠檬福利第一导航在线 | 日本国产精品视频 | 久久精品国产最新地址 | 国产精品理人伦一区二区三区 | 国产在线中文字幕 | 99视频九九精品视频在线观看 | 婷婷六月久久综合丁香 | 岛国av大片 | 国产欧美另类久久久精品丝瓜 | 欧美乱日| 俄罗斯18hd | 最新免费av在线观看 | 国产成人在线一区二区 | 男女无遮挡高清性视频 | 国产乱人乱精一区二视频 | 成人午夜av | 逆天至尊在线 | 女人扒开屁股桶爽6o分钟美女 | 91精品一区二区三区久久久久久 | 性熟妇XIDEOS另类HD | 国产色系视频在线观看 | 亚洲成在人线AV无码 | 小泽玛利亚一区二区免费 | 中国精品18videosex性中国 | 国产精品19乱码一区二区三区 | 无码人妻aⅴ一区二区三区麻豆 |