当前位置: 代码迷 >> 单片机 >> 外部中断汇编代码求解释,求大侠!该怎么处理
  详细解决方案

外部中断汇编代码求解释,求大侠!该怎么处理

热度:195   发布时间:2016-04-28 16:33:13.0
外部中断汇编代码求解释,求大侠!
下面是一段外部响应外部中断0让流水灯向左“流水”三次的汇编代码:
INT0_SUB:
PUSH ACC
PUSH 52H
PUSH 53H
PUSH 54H
CLR RS1
SETB RS0
MOV 50H,#24
MOV A,#00000001H
IN1:
MOV P0,A
CALL DELAY
RL A
DJNZ 50H,IN1
CLR RS1
CLR RS0
CLR P1.0
SETB P1.0
POP 54H
POP 53H
POP 52H
POP ACC
RETI
有几个问题不大懂:
1)头尾的PUSH POP是啥作用?(我不是问PUSH和POP指令,是指这里为啥要PUSH跟POP)
2)对RS0 RS1清零是选择相应暂存器,为什么要这样做,还有先清零P1.0后置一又是为什么?

------解决方案--------------------
1)在这个程序中,PUSH和POP 52,53,54,现在没有用(有可能,原先的中断程序中,使用了52~54,所以需要保护/恢复)。PUSH和POP A是必须的;
2)存在错误,缺少对PSW的保护;
3) RS0和RS1,用来选择工作组R0~R7,可能DELAY程序中使用了R0~R7.不选的话,中断可能和主程序冲突;
4)P1.0输出一个尖负脉冲。
  相关解决方案