求助,帮我看看这个步进电机的控制程序显示部分有什么问题。
正在做一个步进电机的控制程序,实现正反转、加速和减速几个功能,这部分功能已经实现。但是要在数码管上显示当前转速,不知怎么的无法实现。有哪位大侠帮看看是那里出问题了。不胜感激啊。
ORG 00H
LJMP START
ORG 000BH
LJMP DISP ;显示中断服务
ORG 0300H
START:
MOV SP,#70H ;主程序
MOV P2,#00H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P3,#0FFH
MOV DPTR,#TAB1
MOV R4,#0 ;查表偏移量清0
MOV R5,#0 ;步进数
MOV TMOD,#01H ;定时器初始化
MOV TCON,#00H
MOV TH0,#0d8H
MOV TL0,#0f0H
MOV R0,#46H
MOV R1,#00
SETB ET0
SETB TR0
SETB EA
;/==========键扫描===识别=========/
WAIT:
; LCALL DISP
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,NEXT
AJMP WAIT
NEXT: LCALL DELAY1
MOV A,P3
CJNE A,#0FH,KEYPROCESS
AJMP WAIT
KEYPROCESS:
MOV P1,#03 ;初始角度,0度
MOV P3,#0FFH
LCALL DISP
JNB P3.0,POS ;判断键盘状态
JNB P3.1,NEG
AJMP WAIT
POS:MOV A,R4 ;指向第一个控制字,正转9度
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R4
AJMP KEY
NEG:MOV R4,#4 ;修改偏移量,查反向控制字反转9度
MOV A,R4
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
ACALL DISP
AJMP KEY
AJMP WAIT
KEY:MOV P3,#0FH ;读键盘情况
JNB P3.2,SPUP;
JNB P3.3,SPDOWN;
L1:JB P3.0,FZ1
CJNE R4,#6,LOOPZ ;是结束标志
MOV R4,#0
LOOPZ:MOV A,R4
MOVC A,@A+DPTR
MOV P1,A ;输出控制脉冲
ACALL DELAY ;程序延时
INC R4 ;地址加1
AJMP KEY
FZ1:JB P3.1,KEY
CJNE R4,#255,LOOPF ;是结束标志
MOV R4,#7
LOOPF:DEC R4
MOV A,R4
MOVC A,@A+DPTR
MOV P1,A ;输出控制脉冲
ACALL DELAY ;程序延时
AJMP KEY
SPUP:MOV A,R5
ADD A,#5
CJNE A,#45,L2
SUBB A,#5
L2:MOV R5,A
AJMP L1
SPDOWN:CJNE R5,#0,L3
AJMP L1
L3:MOV A,R5
SUBB A,#5
MOV R5,A
AJMP L1
;/************显示子程序**************/
DISP:
PUSH DPH
PUSH DPL
PUSH ACC
PUSH PSW
CLR TR0
MOV TH0,#0d8H
MOV TL0,#0ffH
MOV A,R4 ;秒处理
ANL A,#0FH
MOV 2FH,A ;低4位存在2FH里
MOV A,R4
ANL A,#0F0H
SWAP A
MOV 2EH,A
MOV 2DH,#0AH ;显示一个“-”
;对显示数据译码
MOV R0,#2FH
MOV R3,#04H
MOV DPTR,#TABLE
MOV A,#0FEH
LOOP2:
MOV B,A
MOV P2,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
DEC R0
MOV A,B
RL A
DJNZ R3,LOOP2
POP PSW
POP ACC
POP DPL
POP DPH
RETI
table:
DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,
DB 90h,88h,83h,0c6h,0a1h,86h,8eh,8ch,0c1h,
DB 0ceh,91h,89h,0c7h,0ffh
TAB1: DB 02H,06H,04H,0CH
DB 08H,09H,01H,03H ;正转模型资料
DELAY:MOV 40H,#5
DD1:MOV 41H,#080H
DD2:MOV 42H,R5 ;(为什么延长R5的值会加快呢?不是延时时间变长就变慢吗#┛
DD3:DJNZ 42H,DD3
DJNZ 41H,DD2
DJNZ 40H,DD1
RET
DELAY1:
MOV R6,#19H
DL1:
MOV R7,#25H
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
END
发表时间:2009年3月8日1:15:00