Constellation Knowledge Network - Conocimiento de chismes - Microcontrolador 51, cómo realizar la rotación cíclica hacia adelante y hacia atrás del motor paso a paso

Microcontrolador 51, cómo realizar la rotación cíclica hacia adelante y hacia atrás del motor paso a paso

El siguiente programa fue escrito por mí durante el experimento y casi todos tienen comentarios detallados. Creo que los estudiantes que han estudiado microcontroladores pueden entenderlo fácilmente.

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

DB 0CH, 08H, 09H, 01H, 03H es una tabla numérica que controla cada secuencia de encendido.

Fin; fin

上篇: mayo de 2012 下篇: El Duque de Zhou soñó con una serpiente. ¿Qué significa cuando el Duque de Zhou soñó con una serpiente?
Artículos populares