[原创]单片机编程的一个小问题!我急需解答!
我的单片机是at89c51,其复位电路采用的是DS1232L,接法为:
ds1232:1----------ds1232:4中间为复位开关
ds1232:3,4-------接地
ds1232:5--------89c51:rst
ds1232:7----------89c51:ale
ds1232:2,8-------+5v
我用89c51的p0.0(驱动脉冲)\p0.1(控制方向),p2.0(驱动脉冲)\p2.1(控制方向)来驱动两个步进电机,其程序如下:但是在程序运行过程中出现以下问题,我不知道该怎样解决,请各位予以帮助,我将不胜感激:
问题一:每次打开电源开关,单片机上电,程序不从头开始运行, 而从(1)处开始运行。
问题二:如果在程序结尾加上一下语句:ajmp $,(也就是让单片机只运行一遍),程序便不会出错,如果不加该语句,让单片机循环运行该程序,则会在运行第二遍时,运行到(1)处,步进电机2(也就是p2.0所驱动的电机)便会一直运行下去(不仅仅是100个脉冲),程序不再运行.进入死循环,请问为什么!
ORG 0000H
LJMP START
ORG 0030H
START: MOV R0, #100
SETB P0.1
LOOP1: CLR P0.0
ACALL DEL2
SETB P0.0
ACALL DEL1
DJNZ R0, LOOP1
acall del3
(1) MOV R7, #100
SETB P2.1
LOOP4: CLR P2.0
ACALL DEL2
SETB P2.0
ACALL DEL1
DJNZ R7, LOOP4
acall del3
MOV R5,#100
CLR P0.1
ACALL DEL1
LOOP: CLR P0.0
ACALL DEL2
SETB P0.0
ACALL DEL1
DJNZ R5,LOOP
acall del3
MOV R4,#100
CLR P2.1
ACALL DEL1
LOOP6: CLR P2.0
ACALL DEL2
SETB P2.0
ACALL DEL1
DJNZ R4,LOOP6
acall del3
DEL1: MOV A,#82
LOOP2: DEC A
JNZ LOOP2
RET
DEL2: MOV A,#249
LOOP3: DEC A
JNZ LOOP3
RET
del3: mov r3,#20
mov r2,#253
mov r1,#219
loop5: djnz r1,$
djnz r2,loop5
djnz r3,loop5
nop
ret
END
发表时间:2003年3月12日15:22:00