单片机控制三相四线步进电机的汇编及C程序

2025-01-03 00:08:11
推荐回答(2个)
回答1:

首先建议你先别学汇编了,现在工程上都用的C语言多
ORG 0000H
LJMP START
ORG 0030H
START: MOV P3,#0FFH
MOV A,P3
ANL A,#30H
SWAP A
RL A
MOV R1,A
INC A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
PUSH ACC
MOV A,R1
MOVC A,@A+DPTR
PUSH ACC
RET

ORG 0050H
TABLE: DW BR0
DW BR1
DW BR2
DW BR3

ORG 0060H
BR0: MOV P1,#03H
LCALL DELAY1
MOV P1,#06H
LCALL DELAY1
MOV P1,#0CH
LCALL DELAY1
MOV P1,#09H
LCALL DELAY1
SJMP START

ORG 0080H
BR1: MOV P1,#03H
LCALL DELAY1
MOV P1,#09H
LCALL DELAY1
MOV P1,#0CH
LCALL DELAY1
MOV P1,#06H
LCALL DELAY1
SJMP START

ORG 00A0H
BR2: MOV P1,#03H
LCALL DELAY2
MOV P1,#06H
LCALL DELAY2
MOV P1,#0CH
LCALL DELAY2
MOV P1,#09H
LCALL DELAY2
LJMP START

ORG 00C0H
BR3: MOV P1,#03H
LCALL DELAY2
MOV P1,#09H
LCALL DELAY2
MOV P1,#0CH
LCALL DELAY2
MOV P1,#06H
LCALL DELAY2
LJMP START

ORG 0100H
DELAY1: MOV R7,#100
LP1: MOV R6,#123
NOP
LP2: DJNZ R6,LP2
DJNZ R7,LP1
RET

ORG 0150H
DELAY2: MOV R7,#20
L1: MOV R6,#123
NOP
L2: DJNZ R6,L2
DJNZ R7,L1
RET
END

回答2:

ORG 0000H
LJMP START
ORG 0030H
START: MOV P3,#0FFH
MOV A,P3
ANL A,#30H
SWAP A
RL A
MOV R1,A
INC A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
PUSH ACC
MOV A,R1
MOVC A,@A+DPTR
PUSH ACC
RET

ORG 0050H
TABLE: DW BR0
DW BR1
DW BR2
DW BR3

ORG 0060H
BR0: MOV P1,#03H
LCALL DELAY1
MOV P1,#06H
LCALL DELAY1
MOV P1,#0CH
LCALL DELAY1
MOV P1,#09H
LCALL DELAY1
SJMP START

ORG 0080H
BR1: MOV P1,#03H
LCALL DELAY1
MOV P1,#09H
LCALL DELAY1
MOV P1,#0CH
LCALL DELAY1
MOV P1,#06H
LCALL DELAY1
SJMP START

ORG 00A0H
BR2: MOV P1,#03H
LCALL DELAY2
MOV P1,#06H
LCALL DELAY2
MOV P1,#0CH
LCALL DELAY2
MOV P1,#09H
LCALL DELAY2
LJMP START

ORG 00C0H
BR3: MOV P1,#03H
LCALL DELAY2
MOV P1,#09H
LCALL DELAY2
MOV P1,#0CH
LCALL DELAY2
MOV P1,#06H
LCALL DELAY2
LJMP START

ORG 0100H
DELAY1: MOV R7,#100
LP1: MOV R6,#123
NOP
LP2: DJNZ R6,LP2
DJNZ R7,LP1
RET

ORG 0150H
DELAY2: MOV R7,#20
L1: MOV R6,#123
NOP
L2: DJNZ R6,L2
DJNZ R7,L1
RET
END

这是我以前做过的实验 是用四个按键控制 可以控制转向和转速的 你看看行不?不行的话我再改改