|
刚刚明明是一个绑定的QQ号,结果弄到另一个号上了现在重发今天刚学的8051会汇编的中断部分,发现写完的程序存在一些问题,希望大家能帮我解决一下
下面是程序的源代码:
//**************************************************************************************
//程序名称:汇编语言的基础运用,中断打断数码管
//调试环境: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(设定的初值)开始变话
本人认为问题可能在的地方,我觉得问题是处在延时函数上,具体原因没有找到,请大神们找一找是什么原因。
|
|