请大家帮忙看下,我的程序和仿真有什么问题以及可以改进的地方,谢谢了
这个是仿真原理图
代码如下,主要问题就是由于我写的AD转换汇编代码太长,导致我无法减小定时器0的定时时间,导致定时器0的中断程序控制下的步进电机无法实现正常转动,就是反转的时候只能反转零点几度,然后就又正转了。晶振是12MHz的,步进电机准备使用28BYJ-48。
org 0000h
jmp MAIN
ORG 000BH
LJMP QU
org 0030h
MAIN:MOV TMOD,#22H
MOV TH0,#038H
MOV TL0,#038H
MOV TH1,#0ECH
MOV TL1,#0ECH
SETB ET0
SETB EA
SETB TR1
SETB TR0
ACT:MOV A,#00H
CLR C
MOV R0,#8
SETB TR0
CLR P1.0
SETB P1.1
SETB P1.2
JNB TF1,$
CLR P1.1
JNB TF1,$
SETB P1.1
JNB TF1,$
CLR P1.1
CLR P1.2
JNB TF1,$
SETB P1.1
JNB TF1,$
CLR P1.1
SETB P1.2
QU1: JNB TF1,$
SETB P1.1
MOV C,P1.3
RLC A
JNB TF1,$
CLR P1.1
DJNZ R0,QU1
SETB P1.0
CLR TR1
MOV R1,A
MOV A,#00H
MOV R0,#8
MOV R5,#3
SETB TR1
CLR P1.0
SETB P1.1
SETB P1.2
QU2: JNB TF1,$
CLR P1.1
JNB TF1,$
SETB P1.1
DJNZ R5,QU2
QU3: SETB P1.1
MOV C,P1.3
RLC A
JNB TF1,$
CLR P1.1
DJNZ R0,QU3
SETB P1.0
CLR TR1
MOV R2,A
MOV P2,R2
MOV P3,R1
MOV B,R1
MOV A,R2
CLR C;1
SUBB A,B;1
JZ TON;2
JNC BIG;2
JC SAM;2
MOV R3,#2
TON: MOV R3,#0;1
JNB TF0,$
LCALL ACT ;2
BIG: MOV R3,#1;1
JNB TF0,$
LCALL ACT ;2
SAM:MOV R3,#2;1
JNB TF0,$
LCALL ACT ;2
QU: MOV A,#00H
MOV R0,#00H
CJNE R3,#1,BBB
MOV DPTR,#STEP1
SJMP CCC
BBB: CJNE R3,#2,EEE
MOV DPTR,#STEP2
CCC: MOVC A,@A+DPTR
MOV P0,A
INC A
INC R0
CJNE R0,#8,CCC
CLR A
RETI
EEE: CJNE R3,#0,RETURN
JB P1.4,$
RETURN:RETI
STEP1: DB 01H,03H,02H,06H,04H,0CH,08H,09H
STEP2: DB 09H,08H,0CH,04H,06H,02H,03H,01H