汇编语言中的中断程序是如何执行的

;利用中断的99秒计时器 ,动态扫描两位数码管
ORG 00H
JMP START
ORG 0BH
JMP TIM0
START:MOV R3,#00 ;中断循环次数
MOV R4,#00H ;时间初值
MOV DPTR,#TABLE
MOV SP,#40H
MOV TMOD,#01H ;定时器工作方式
MOV TH0,#HIGH(65536-3800)
MOV TL0,#LOW(65536-3800) ;初值4MS
SETB TR0
MOV IE,#82H ;开中断
TIM0:
MOV TH0,#HIGH(65536-3800)
MOV TL0,#LOW(65536-3800)
INC R3
CJNE R3,#250,X1 ;1S
MOV R3,#00
MOV A,R4 ;十进制转换
MOV B,#10H
DIV AB
MOV 20H,B ; 个位
MOV 21H,A ; 十位
MOV A,R4
ADD A,#01H
DA A
MOV R4,A
CALL SCAN ;调用数码管扫描
X1: PUSH ACC
PUSH PSW
CALL SCAN
POP PSW
POP ACC
RETI
SCAN:MOV P2,#0 ;扫描子程序
MOV A,21H
MOVC A,@A+DPTR
MOV P0,A
CALL DELAY1
MOV P2,#1 ;0代表选通该位数码管
MOV A,20H
MOVC A,@A+DPTR
MOV P0,A
CALL DELAY1
RET
DELAY:MOV R5,#50 ;典型延时程序
D1: MOV R6,#40
D2: MOV R7,#248
CALL SCAN
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
DELAY1:MOV R6,#4 ;扫描延时
D3: MOV R7,#248
DJNZ R7,$
DJNZ R6,D3
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴字码表
END
它的中断是怎样执行的????

就是计数器溢出
出现中断标志才产生中断 当然前提是你必须打开中断控制位和总中断
有的好一点的单片机进入中断会自动执行关闭总中断 和清除标志
中断返回自动打开总中断.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-27
这个程序有点乱
1主程序与中断程序没分开;
2中断程序调用别的子程序SCAN;
3SCAN子程序又调用另一个子程序
建议删除重写追问

我用Keil uVision2软件一步执行程序没看到执行中断程序????

追答

因为初始化完后就直接进中断程序(TIM0那句)。

相似回答