Microcontrolador 51, cómo realizar la rotación cíclica hacia adelante y hacia atrás del motor paso a paso
Los lectores pueden hacer algunas modificaciones. Por ejemplo, yo uso una instrucción de salto y los lectores pueden cambiarla a una instrucción de llamada al ingresar al ciclo de aceleración y desaceleración. La velocidad del motor también se puede modificar para que no tenga límite inferior.
Y también puedes tener tu propio método para juzgar el proceso de presionar la tecla. Puede que me resulte más problemático juzgar la presión y la liberación.
Lo que configuré en la tabla de datos es que gire 9 para cada pulso. También puedes modificar tu propia tabla de datos según las necesidades reales.
Para este programa, me referí a P25 de "Ejemplos clásicos de diseño práctico de sistemas y simulación de microcontroladores" (Editor: Zhou Jingrun y Liu Xiaoxia). Los lectores interesados pueden pedir prestado este libro en la biblioteca.
ORG 0000H
Director General de LJMP
ORG 0030H
Negocio principal: MOV 30H, # 05H control de velocidad de aceleración y desaceleración, control retraso Número de ciclos (valor inicial)
MOV DPTR, # pestaña 1; método de búsqueda en la tabla para asignar valores a P2
MOV R0, # 03HP2 valor inicial
MOV R4, # 00H valor del puntero de la tabla de búsqueda
MOV·P2, R0; valoración
Esperando: MOV P0, # 0FFHP0 necesita generar un 1 antes de poder ingresar .
JNB P0.0, Canción 3; compruebe si se presiona la tecla, la canción indica si se suelta la tecla; de lo contrario, el programa se confundirá.
JNB P0.1, Canción 4; la canción en el programa significa lo anterior.
SJMP espera; si no presiona este botón, no se iniciará.
Canción 3: JB p 0.0, Zheng; entrada de rotación hacia adelante
Canción 3 de SJMP;
Canción 4: JB p 0.1, entrada de ventilador hacia atrás
p>
Canción SJMP 4;
Zheng:01H; iniciar búsqueda en la tabla
bucle 1:JB p 0.1, nube estrella 1, verifique si está invertido, si no, presione; el botón de marcha atrás y funciona normalmente.
Canción 1: JNB p 0.1, Fan; presiona la marcha atrás para soltar y entrar en marcha atrás.
Canción SJMP 1;
Yunxing 1:MOV A, R4; consultar tabla
MOVC A, @ A+DPTR;
MOV·P2;
Retraso de llamada; ingresar al programa de retardo para controlar la velocidad del motor.
JB P0.3, cool 1; detecta si se presiona el botón de desaceleración, si no, detecta si se presiona el botón de aceleración.
Canción 5: JNB p 0.3, disminuir en 1; pulsar para entrar en el programa de retardo y modificar el número de ciclos.
Canción SJMP 5;
cool 1:JB p 0.2, normal 1; detecta si se presiona el botón del acelerador; de lo contrario, funcionará normalmente.
Canción 6: JNB p 0.2, arriba 1; presione la tecla del acelerador para ingresar al programa de retardo y modificar el número de ciclos.
Canción SJMP 6;
nomal 1:INC R4; Verifique los datos siguientes
CJNE R4, #09H, bucle 1; Después de eso, restablezca el valor de R4; si no está marcado, no reinicie R4.
Zheng; bucle hacia adelante
Ventiladores: R4, # 07H valor inicial de R4 inverso
bucle 2: JB p 0.0, Yunxing 2 detección positiva Si la flecha Se presiona la tecla, si no, ejecute el programa inverso normalmente.
Canción 2: p 0.0, Zheng; presione el botón de rotación hacia adelante y suéltelo para ingresar al programa de rotación hacia adelante.
Canción SJMP 2;
Yun Xing 2: MOV A, R4; empieza a buscar en la tabla
MOVC A, @ A+DPTR;
MOV·P2;
Retraso de llamada; ingresar al programa de retardo para controlar la velocidad del motor.
JB P0.3, COOL2 detecta si se presiona el botón de desaceleración. En caso contrario, detecta si se presiona el botón de aceleración.
Canción 7: JNB p 0.3, reducido en 2; pulsar para entrar en el programa de retardo y modificar el número de ciclos.
Canción SJMP 7;
cool 2: JB p 0.2, normal 2; detecta si se presiona el botón del acelerador; de lo contrario, funcionará normalmente.
Canción 8: JNB p 0.2, pulsa UP2 para entrar al programa de retardo y modificar el número de ciclos.
SJMP Song 8;
Normal 2:R4 DEC; Tabla de búsqueda circular
CJNE R4, #00H, LOOP2 Después de verificar nuevamente, reinicie y reinicie. datos.
Especificación SJMP; bucle inverso
Retardo: MOV R6, # 05H
DD1: MOV R5, # 080H
DD2 :MOV R7, # 05H
DD3:DJNZ R7, DD3;
DJNZ R5
DJNZ R6, DD 1; retardo fijo
DJNZ R1, retardo; controlar la velocidad del motor cambiando el tiempo de ciclo del programa de retardo.
Velocidad: MOV r 1.30h; ingrese el valor de velocidad de cada ciclo en R1.
SJMP está de vuelta;
abajo 1:INC 30H; la velocidad se reduce porque el número de ciclo es +1.
CJNE R1, #10H, normal 1; el límite de velocidad inferior es 10. Si es menos de 10, puede continuar reduciendo la velocidad.
MOV 30H,#10H; cuando llega al límite inferior no puede reducir la velocidad, siempre es 10.
SJMP Normal 1; Regreso al ciclo de rotación hacia adelante
Arriba 1: 30 de diciembre La velocidad aumenta porque el número de ciclo es -1.
CJNE R1, #01H, normal 1; el límite de velocidad superior es 1. Si es menor que 1, puedes continuar acelerando.
MOV 30H, #01H; cuando la velocidad alcanza el límite superior, no se puede acelerar y siempre es 1.
SJMP Normal 1; Retorno al ciclo de rotación hacia adelante
abajo 2: INC 30H La velocidad se reduce porque el número de ciclos es +1.
CJNE R1, #10H, normal 2; el límite inferior de velocidad es 10. Si es menos de 10, puede continuar reduciendo la velocidad.
MOV 30H, # 10H; no puede reducir la velocidad cuando alcanza el límite inferior, siempre es 10.
SJMP·Norma 2; Regreso al ciclo opuesto
UP2: 30 de diciembre h La velocidad aumenta porque el número de ciclo es -1.
CJNE R1, #01H, normal 2; el límite de velocidad superior es 1. Si es menor que 1, puedes continuar acelerando.
MOV 30H, #01H; cuando la velocidad alcanza el límite superior, no se puede acelerar y siempre es 1.
SJMP·Norma 2; Regreso al ciclo opuesto
Retorno: Retorno retardado de subrutina RET
pestaña 1: DB 00H, 02H, 06H, 04H p>
DB 0CH, 08H, 09H, 01H, 03H es una tabla numérica que controla cada secuencia de encendido.
Fin; fin