Programa de ensamblaje para controlar el motor paso a paso mediante microcontrolador
ORG 00H
INICIO: MOV DPTR, #TAB1
MOV R0, #03H
MOV R1, #4H
MOV R4, #00H
MOV P0, #03H
ESPERAR: MOV P0, R0
MOV P0, #0FFH
JNB P3.4, TIZ ; Cuando P3.4 tiene presionado el botón de parada, salta a la subrutina de parada
JNB P3.0, ZHENG ; Cuando P3.0 tiene presionado el botón de inicio hacia adelante, , salta para detener la subrutina
JNB P3.1,FAN
SJMP WAIT
ZHENG: ;Adelante subrutina
MOV A ,R4
MOVC A,@A+DPTR
RETARDO DE LLAMADA
INC R4
LLAVE AJMP
VENTILADOR: ;Subrutina inversa
MOV R4,#6
MOV A,R4
MOVC A,@A+DPTR
MOV P3, A ;
ACALL DELAY
AJMP KEY
KEY: MOV P3,#0FFH ;Detección de LLAVE, asignar valor inicial
JB P3 .4,ZZ1
AJMP TIZ
TIZ: MOV P0,#00H ;Detener subrutina
TECLA AJMP
ZZ1: JB P3 .0, FZ1; detección de tecla de rotación hacia adelante, si se presiona una tecla, irá a FZI
CJNE R4, #8, LOOPZ Si el número de ciclos es 8, si es 8, borre; a 0 p>
MOV R4,#0
LOOPZ: MOV A,R4 ;Leer pantalla de estado del motor
MOVC A,@A+DPTR
MOV P0,A ;Asignar a P0, mostrar 1 para rotación hacia adelante, 2 para rotación inversa, 3 para aceleración, 4 para desaceleración
SETB P1.1 ;Asignar nivel alto, apagar el luz de estado de marcha atrás
p>CPL P1.0; enciende la luz de estado de avance
JNB P3.2, subrutina de aceleración JNB P3.3; , JIANSUZ; subrutina de desaceleración
ACALL DELAY
INC R4
TECLA AJMP
FZ1:
JB P3 .1,CLAVE p>
CJNE R4,#255,LOOPF
MOV R4,#8
LOOPF: DEC R4
MOV
A,R4
MOVC A,@A+DPTR ;Leer pulso
MOV P0,A ;Pulso de entrada al motor paso a paso
SETB P1.0< / p>
CPL P1.1
JNB P3.2,JIASUF;detección del botón de aceleración
JNB P3.3,JIANSUF;detección del botón de desaceleración
ACALL DELAY
AJMP KEY ;Saltar a subrutina de detección de LLAVE
DELAY:MOV A,R1;Retraso de subrutina
MOV R6,A
RETARDO2:MOV R5,#6H
DD2:MOV R7,#0
DD3:DJNZ R7,DD3
DJNZ R5, DD2
DJNZ R6,DELAY2
RET
DELAY1:
MOV R6,#20H
DD4: MOV R5,#02H
DD5: MOV R7,#0
DD6: DJNZ R7,DD6
DJNZ R5,DD5
DJNZ R6,DD4
RET
JIASUZ: ;Detección de clave acelerada
ACALL DELAY1
CJNE R1,#02,L1
JMP L2
L1: DEC R1
L2: JMP LOOPZ
JIANSUZ: ;Detección de tecla de desaceleración
ACALL DELAY1
CJNE R1,#08H,L3
JMP L4
L3: INC R1
L4: JMP LOOPZ ;Retorno LOOPZ, bucle
JIASUF: ;Subrutina de aceleración
ACALL DELAY1
CJNE R1,#02H,L5
JMP L6 p>
L5: DEC R1
L6: JMP LOOPF
JIANSUF: ;Subrutina de desaceleración
ACALL DELAY1
CJNE R1,#08H,L7
JMP L8
L7: INC R1
L8: JMP LOOPF
TAB1:DB 02H,06H ,04H,0CH
DB 08H,09H,01H,03H
FIN