作者wodada (wodada)
看板ASM
标题[问题] 关於中断副程式问题
时间Wed Dec 26 20:26:21 2012
各位版友前辈,大家好
小弟最近在研究8051,所用的语言为ASM
目前研究中断部分,但有几个问题相当不解
程式码如下:
ORG 0000H ;主程式起始位址
JMP Main
ORG 0013H ;外部中断1起始位址
JMP INT_01
Main:
MOV SP,#60H ;将堆叠指标移到高位元
MOV TCON,
#00000000B ;设定INT1为低准位触发
SETB EA ;致能中断系统
SETB EX1 ;致能外部中断1
SETB P3.3 ;设定INT1接脚为输入脚
CLR P2.0 ;
LOOP:
MOV A,
#00000000B ;设定LED灯全亮
MOV P1,A
CALL DELAY ;呼叫延迟副程式
CALL DELAY
MOV A,
#11111111B ;设定LED灯全灭
MOV P1,A
CALL DELAY ;呼叫延迟副程式
CALL DELAY
JMP LOOP
;========Interrupt 1 ===========================
INT_01:
PUSH ACC
CLR EA
PB_DOWN:
CALL DELAY_1
JB P3.3,PB_DOWN
MOV R2,#10
MOV A,
#11110000B ;设定中断显示灯号
LOOP1:
MOV P1,A
MOV R3,#10
WAIT: CALL DELAY
DJNZ R3,WAIT
CPL A
DJNZ R2,LOOP1
;
PB_UP:
CALL DELAY_1
JNB P3.3,PB_UP
SETB EA
POP ACC
RETI
;======Delay function ===========
DELAY:
MOV R0,#250
DL1: MOV R1,#200
DL2: DJNZ R1,DL2
DJNZ R0,DL1
RET
;
DELAY_1:
MOV R0,#250 ;延迟中断侦测
DJNZ R0,$
RET
;
END
小弟目前有个问题:
1.当我主程式跳到中断副程式执行时,正常来说执行完应该会回到主程式
可是当我P3.3一用下去,除非再拔起来,要不然会一直停留在副程式区域
请问各位前辈,我的程式哪里出了问题???
谢谢!!
PS:由於我的P3.3是接脚,我以我用杜邦线,一边接地,另一边接P3.3
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.177.40.244
1F:→ hongsiangfu:只要P3.3处於低态,就会一直执行中断函式。 12/26 21:00
2F:→ hongsiangfu:要不要改用负缘触发,这样就只会执行一次。 12/26 21:01
3F:→ wodada:感谢h大,我成功了 12/28 17:53