精品国产一区在线_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
回復
主站蜘蛛池模板: 午夜免费激情视频 | 91传媒在线播放 | 免费毛片一级 | 中国丰满少妇人妻XXX性董鑫洁 | 大屁股人妻女教师撅着屁股 | 日本69熟| www.国产网站| 欧美一级黄色片 | 国产无套露脸视频在线观看 | 国产一区不卡在线观看 | 免费无码的av片在线观看 | 亚洲成AV人无码中文字幕 | 纲手被扒开腿坐做视频 | porn亚洲| 五月天婷婷在线视频 | 一区二区三区在线视频播放 | 日韩色婷婷 | 日韩久久无码一区二区 | 国产胸大一区二区三区粉嫩思欲 | 欧美精品在线一区二区三区 | www.日韩高清 | 欧美高大丰满freesex | 成人天堂资源www在线 | 毛片软件大全 | 老妇free性videosxx | 国产重口老太与小伙子 | 69堂视频在线观看免费 | 男男gay裸体调教打屁股网站 | 国产99久久精品一区二区永久免费 | 丰满少妇又紧又爽 | 黑丝一级片 | 黄网站欧美内射 | 香港三日本8A三级少妇三级99 | 偷拍做爰吃奶视频免费看 | 91爱爱免费观看 | 日韩经典电影免费 | 最近免费2019中文字幕大全 | 伊人亚洲综合网 | 日本中文字幕在线播放 | 亚洲av爆乳精品一区二区中文 | 亚洲a级精品 |