首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-05 
外部中断汇编代码求解释,求大侠!下面是一段外部响应外部中断0让流水灯向左“流水”三次的汇编代码:INT0_SUB:

外部中断汇编代码求解释,求大侠!
下面是一段外部响应外部中断0让流水灯向左“流水”三次的汇编代码:
INT0_SUB:
PUSHACC
PUSH52H
PUSH53H
PUSH54H
CLRRS1
SETBRS0
MOV50H,#24
MOVA,#00000001H
IN1:
MOVP0,A
CALLDELAY
RLA
DJNZ50H,IN1
CLRRS1
CLRRS0
CLRP1.0
SETBP1.0
POP54H
POP53H
POP52H
POPACC
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输出一个尖负脉冲。

热点排行