Red de conocimiento informático - Conocimiento de la instalación - Pregunte por el lenguaje ensamblador del microcontrolador 51 para controlar el sensor de inclinación SCA60, que se utiliza para hacer un carro balancín.

¡Está bien si puedes proporcionar una referencia si es similar! !

Pregunte por el lenguaje ensamblador del microcontrolador 51 para controlar el sensor de inclinación SCA60, que se utiliza para hacer un carro balancín.

¡Está bien si puedes proporcionar una referencia si es similar! !

Anexo 1:

Programa fuente total

***************Descripción****; ** **********************************************

;** P1.1 es la entrada del sensor izquierdo; P1.0 es la entrada del sensor derecho**

;** P1.6 detecta la inclinación hacia adelante del cuerpo. ; P1.7 detecta la inclinación del cuerpo hacia atrás**

;** Definición del puerto del cronómetro: **

;** A(P2.1): Iniciar/detener el cronometraje; ; B(P2.3): Reproducción de cada tiempo de grabación; **

;** C(P2.3): Marcar/borrar el tiempo del segmento (en estado detenido) **

;************ ************************************* **************** **********

ORG 0000H

;******* *****Programa principal********** ********************************** *********

JBGN:

LCALL TC; Detener

LCALL CSZT; ***************Comprobación del equilibrio corporal* *******************

CGQ:

LCALL QJ; avance 3S, no verifique la línea negra en el terminal A por primera vez

p>

LCALL QL ; ; Iniciar cronómetro

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL TC Detener

LCALL DELAY30; ; Eliminar balanceo

JXPD: JNB P1.6, MBXS; si se inclina hacia adelante (llegando cerca del punto C), gire el cronómetro muestra el tiempo de conducción del segmento AC

LCALL QJ; >

LCALL DELAY

LCALL TC

LCALL DELAY30; Eliminar oscilación

LJMP JXPD Continúe juzgando si llega a las proximidades del punto C

p>

MBXS:

LCALL QDJS

LCALL CDSL5 Deténgase durante 5 segundos, lea el segmento de CA y conduzca el tiempo

LCALL QL;

;Reiniciar el cronómetro

LCALL QDJS;Iniciar el cronometraje y registrar el tiempo de ajuste del equilibrio

CGQJC:

JNB P1.6, JBZHT; Si se inclina hacia adelante, gire más lento Ir; hacia atrás a alta velocidad

JNB P1.7, JBWW; si se inclina hacia atrás, gire hacia adelante a baja velocidad

LCALL DELAY1S para determinar si está realmente equilibrado

p>

LCALL DELAY1S

LCALL DELAY1S

JNB P1.6, CGQJC; si está inclinado hacia adelante, gire para continuar ajustando la balanza

JNB P1. 7, CGQJC; si está inclinado hacia atrás, gire para continuar Ajustar el equilibrio

LCALL TC; Detener

LCALL QDJS Detener el tiempo y mostrar el tiempo necesario para el ajuste del equilibrio

CLR P2.5; el zumbador suena

CLR P2.4; luces coloridas encendidas

LCALL CDSL5; gire hacia las luces del automóvil y parpadee 5 veces, indicando el tiempo de 5S

LCALL CSZT

LJMP CDB; Ir de C a B y programar hacia adelante

*************Ir a salto de longitud*** ************

JBZHT:

LJMP JBTPH

JBWW:

LJMP JBWWW

;************Ajustar saldo** *******

JBTPH:

LCALL DELAY30; oscilación del sensor

JBTP: LCALL HT

retardo de llamada

LCALL TC

LCALL DELAYTC elimina la oscilación del sensor

> JNB P1.6, JBTP

LJMP CGQJC

JBWWW:

LCALL DELAY30

JBWG: LCALL QJ

LCALL DELAY

LCALL TC

LCALL DELAYTC Eliminar oscilación del sensor

JNB P1.7, JBWG

LJMP CGQJC

p>

; ********* Programa desde el punto C hasta el final B* *********

CDB:

LCALL QL ; reinicio del cronómetro

LCALL QDJS

LCALL QJ

DT: JB P1.0, DT si el lado derecho encuentra una línea negra, verifique el lado izquierdo; (ejecución secuencial); de lo contrario, continúe revisando el lado izquierdo

JB

P1.1, DT

LCALL TC

LCALL QDJS; Detener el cronometraje y mostrar el tiempo de C a B

LCALL CDSL5;

LCALL HT; después de 5 segundos de estacionamiento, retroceda y regrese

LCALL QL

LCALL QDJS

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

DDTT: JB P1.0, DDTT; si el lado derecho encuentra una línea negra, verifique el lado izquierdo (ejecución secuencial); de lo contrario, continúe verificando el lado izquierdo

JB P1.1, DDTT

; INC A

; CJNE A, #2H, DDTT Al regresar de la terminal B a la terminal A, no es necesario detectar la línea negra del terminal B

p>

LCALL TC ha regresado a A, detener

LCALL QDJS Detiene el cronometraje y muestra el tiempo necesario para regresar; B a A

; ******** ****************Funciones básicas e interfaz de programa para desarrollar piezas******* ********************* *************

LCALL CDSL5; retraso 5S, esperando entrar a la obra programa de pieza

LCALL CSZT

CLR P2.4 ;La luz de estado está encendida durante 5S

LCALL DELAY1S

LCALL DELAY1S

CLR P2.5 ;El timbre suena durante 3S

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL CSZT; apague la luz de estado e ingrese al programa de reproducción

; ********** *******************Reproducir parte del programa principal************************************ *********** **

FHBF:

LCALL QJ

QJXHX:

JNB P1, JX1; línea negra), continúe consultando P1.0 (si se encuentra una línea negra a la izquierda, verifique el estado a la derecha)

JNB P1.0, JX2 si P1 .0 es 0 (negro) línea), luego continúe consultando P1.1 (cuando encuentre una línea negra a la derecha, verifique el estado a la izquierda)

LJMP QJXHX

JX1:

JNB P1.0, PHCL

LJMP CZZW; si P1.0 también es una línea negra, equilibre, de lo contrario gire a la izquierda

JX2:

JNB

P1.1, PHCL

LJMP CYZW

CZZW:

LCALL ZZW

LCALL ZWSJ tiempo de giro

LCALL TC

LCALL DELAY30

LCALL QJ

LJMP QJXHX

CYZW:

LCALL YZW

LCALL ZWSJ; tiempo de giro

LCALL TC

LCALL DELAY30

LCALL QJ

LJMP QJXHX

;******************Ajuste de saldo************************

PHCL:

LCALL QJ adelante 3S

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL TC

LCALL DELAY30; Eliminar la oscilación del sensor

FHPHTZ:

JNB P1.6, FHZHT; p>

JNB P1.7, FHZQJ; si se inclina hacia atrás, gire hacia adelante lentamente

LCALL DELAY1S; Retraso para determinar si está realmente equilibrado

LCALL DELAY1S

LCALL DELAY1S

JNB P1.6, FHPHTZ; si está inclinado hacia adelante, gire para continuar ajustando la balanza

JNB P1.7, FHPHTZ si está inclinado hacia atrás, gire hacia continúe ajustando el equilibrio

LCALL TC; Detener

LCALL QDJS; detenga el tiempo y muestre el tiempo necesario para el ajuste del equilibrio

CLR P2.5 suena el zumbador; /p>

CLR P2.4; luces de colores encendidas

LCALL CDSL5; gire los faros para parpadear 5 veces, indicando tiempo 5S

LJMP FHPHTZ; /p>

;***** ******Transferencia a salto de longitud************

FHZQJ:

LCALL CSZT ; el estado inicial apaga la alarma

LJMP FHWWW

FHZHT:

LCALL CSZT el estado inicial apaga la alarma

LJ;

MP FHTPH

;**********Ajustar saldo*********

FHTPH:

LCALL DELAY30 ; Eliminar la oscilación del sensor

TP: LCALL HT

LCALL DELAY

LCALL TC

LCALL DELAYTC ;Eliminar la oscilación del sensor

JNB P1.6, TP

LJMP FHPHTZ

FHWWW:

LCALL DELAY30; eliminar oscilación del sensor

DH: LCALL QJ

LCALL DELAY

LCALL TC

LCALL DELAYTC; eliminar oscilación del sensor

JNB P1.7, DH

LJMP FHPHTZ

;******************subrutina****************** ** ********************************

;******* ****Configuración Estado inicial**********

CSZT:

SETB P2.6 apagar las luces

SETB; P2.7

SETB P2.4

SETB P2.5; apagar el timbre

RET

;**** **** ***Detener************************

TC:

CLR P1.2

CLR P1.3

CLR P1.4

CLR P1.5

RET

;* ***** ****Adelante************************

QJ:

CLR P1 .2

SETB P1.3

CLR P1.4

SETB P1.5

RET

;****** ****Volver************************

HT:

SETB P1.2

CLR P1.3

SETB P1.4

CLR P1.5

RET

;****** ***Gira a la izquierda******************

ZZW:

CLR P1.2

CLR P1.3

CLR P1.4

SETB P1.5

RET

<

p>;************Gire a la derecha******************

YZW:

CLR P1 .2

SETB P1.3

CLR P1.4

CLR P1.5

RET

;************Control de cronómetro************************

;** *** **Iniciar/detener temporización************

QDJS:

CLR P2.1

LCALL DELAY10

RETARDO LLAMADA10

RETARDO LLAMADA10

RETARDO LLAMADA10

SETB P2.1

RET

;* *************Pantalla borrada******************

QL:

CLR P2.3

RETARDO LLAMADA LC10

RETARDO LLAMADA LC10

RETARDO LLAMADA LC10

RETARDO LLAMADA LC10

SETB P2.3

RET

;************Programa de retardo****************** ****

;****Retraso 1 segundo******

DELAY1S:

MOV R3, #02H

DEL1: MOV R2, #0FAH

DEL2: MOV R1, #0FAH

DEL3: DJNZ R1, DEL3

NOP

DJNZ R2, DEL2

p>

DJNZ R3, DEL1

RET

;****Retraso 10 milisegundos*****

DELAY10:

MOV R2, #20

DB1: MOV R1, #248

DB2: DJNZ R1, DB2

DJNZ R2, DB1

RET

;**********tiempo de avance o retroceso************

RETARDO:

MOV R2, #30

DD1: MOV R1, #200

DD2: DJNZ R1, DD2

DJNZ R2, DD1

RET

;************Tiempo de estacionamiento****************** *

DELAYTC:

MOV R2, #100

D11: MOV R1, #200

D22: DJNZ R1, D22

DJNZ R2, D11

RET

;****

*****Programa de retraso******************

**********Retraso 0,5 segundos****<; /p>

DELAY30:

MOV R2, #250

DL2: MOV R1, #250

DL1: DJNZ R1, DL1

DJNZ R2, DL2

RET

;************Tiempo de giro 32MS************

ZWSJ:

MOV R2, #50

D1: MOV R1, #100

D2: DJNZ R1, D2

DJNZ R2, D1

RET

; ****Retraso de unos 250 milisegundos (oscilador de cristal de 12M)****

DELAY250:

MOV R3, #2

L3: MOV R2, #250

L1: MOV R1, #250

L2: DJNZ R1, L2

DJNZ R2, L1

DJNZ R3, L3

RET

*****Utilice la luz de estado para mostrar el punto final y parada durante 5 segundos Tiempo (se ilumina 5 veces)*****

CDSL5:

MOV R5, #5H

PY: SETB P2 .6

SETB P2.7

RETARDO LLAMADA LC250

RETARDO LLAMADA LC250

CLR P2.6

CLR P2.7

LCALL DELAY250

LCALL DELAY250

DJNZ R5, PY

RET

END