关于51单片机汇编中中断的问题,小弟写的程序出现了一些错误,没有找到准确的解决办法,求指导
下面是程序的源代码:程序代码:
//************************************************************************************** //程序名称:汇编语言的基础运用,中断打断数码管 //调试环境:proteus仿真 //作 者:CAIN //预期效果:当开关按下的时候数码管会停止变化,led灯流水显示,之后继续执行数码管程序 //创建日期:2016.2.19 //************************************************************************************** // 中断程序位置的配置 //************************************************************************************** ORG 0000H AJMP MAIN ORG 0003H LJMP IN0 ORG 0030H //************************************************************************************** // 主函数 //************************************************************************************** MAIN: SETB EA SETB EX0 SETB IT0 START: MOV A,#01H MOV R3,#9H MOV R4,#1H L1: MOV DPTR,#TABLE MOV A,R4 MOVC A,@A+DPTR MOV P2,A INC R4 ACALL DELAY DJNZ R3,L1 AJMP START //************************************************************************************** // 延时函数 //************************************************************************************** DELAY: MOV R5,#0AH L4: MOV R6,#64H L3: MOV R7,#0C8H L2: NOP NOP NOP DJNZ R7,L2 DJNZ R6,L3 DJNZ R5,L4 RET //************************************************************************************** // 外部中断0服务函数 //************************************************************************************** IN0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW MOV R2,#8H MOV A,#01H L5: MOV P1,A ACALL DELAY RL A DJNZ R2,L5 POP PSW POP DPL POP DPH POP ACC RETI //************************************************************************************** // 数码管段选数组 //************************************************************************************** TABLE: DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,40H END //************************************************************************************** // END //**************************************************************************************
程序中有以下问题:
接通单片机电源后,按下开关,执行完中断程序后会有两种错误情况,第一种是需要等待一段时间后数码管才会继续变化,另一种是执行完中断之后数码管会从1(设定的初值)开始变话
本人认为问题可能在的地方,我觉得问题是处在延时函数上,具体原因没有找到,请大神们找一找是什么原因
[此贴子已经被作者于2016-2-21 10:28编辑过]