Pídele a Dios que traduzca el lenguaje ensamblador.

ENA EQU p 2.0; habilitar el puerto a

ENB EQU p 2.1; habilitar el puerto b

ENC EQU p 2.2; habilitar el puerto c

CLK EQU p 1.0; puerto de reloj

EQU estándar p 1.1; puerto de entrada de datos

EQU conteo 0FH variable de conteo

cishu EQU 2EH grado variable

ORG; 0000H

Controlador AJMP

ORG 0003H

AJMP INT0

ORG 000BH

AJMP I0

Principal: recuento de MOV, n.° 0; contador inicializado a 0

libro de palabras MOV, n.° 12;

Llamada L2; inicialización de llamada L2

Esperando: entrada de llamada LCALL IN

Aparece la piedra LCALL;

Espera SJMP; en su lugar

L2: MOV R3, # 0AH inicializa R3=0aH.

MOV R4, #55; de la misma manera; de manera similar

MOV R5, #59; de la misma manera

MOV R6, #11; de la misma manera; de manera similar

MOV TMOD, #11H; ambos temporizadores están en 1 modo.

MOV TH0, #03CH El valor inicial del temporizador 0 es 65536-50000.

MOV TL0, #0B0H

SETB IT0; la interrupción externa 0 se activa por flanco.

SETB EX0; activa la interrupción externa 0

SETB ET0; activa el temporizador 0

SETB EA; interrumpe

SETB TR0; iniciar temporizador 0

RET

en:

MOV A, R6=R6

MOV B, # 0AHB=10

DIV ABA/B

MOV·DPTR, # dirección de encabezado TAB envía puntero de datos

MOVC A, @ A+DPTR búsqueda de tabla

<; p>MOV 6FH,A; el resultado se almacena en 6FH.

MOV A, B; la parte restante de A/B se envía a A.

MOV·DPTR, # dirección del encabezado TAB envía puntero de datos

MOVC A, @ A+DPTR; consulta la tabla

MOV 6EH, A; es 6EH guardado.

MOV A, # 0BFHA=BFH

MOV 70H, A; (70H)=A

MOV A, R5=R5

MOV B, # 0AHB=10

DIV AB separado

MOV·DPTR, # Dirección de encabezado TAB para enviar puntero de datos

MOVC A, @ A +DPTR; consultar tabla

MOV 72H, A; los resultados se almacenan durante 72 horas.

MOV A, B; envía el resto a

MOV·DPTR, # dirección de la tabla TAB

MOVC A, @ A+DPTR;

p>

MOV 71H, A; el resultado se guarda en 71H.

MOV A, # 0BFHA=BFH

MOV 73H, A; (73H)=A

MOV A, R4=R4

MOV B, # 0AHB=10

DIV AB separado

MOV·DPTR, # dirección de tabla TAB

MOVC A, @ A+DPTR; Tabla de búsqueda

MOV 75H, A; los resultados se guardan durante 75 horas.

MOV A, B; envía el resto a

MOV·DPTR, # dirección de la tabla TAB

MOVC A, @ A+DPTR;

p>

MOV 74H, A; los resultados se almacenan durante 74 horas.

Remojado en agua para suavizar

Shixian:; mostrar subrutina

CLR ENA

SETB·ENB;

SETB ENC; desactivar habilitar c

MOV r 1.6eh Envía la primera dirección del contenido mostrado a R1.

Bucle 3:

MOV A, @ r 1; toma el primer número

MOV R0, # 08H***8 dígitos

p>

Bucle 2:

Bucle LCALL; visualización del bucle de llamada

INC r 1; dirección más 1

CJNE R1, #76H, LOOP3 Vaya a LOOP3 en menos de 76 horas.

SETB·ENA; apaga y habilita un

Remojar en agua para suavizarlo

I0: DJNZ R3, bucle 1 no es igual a; BUCLE1.

MOV R3, #14H; R3=20

R4 más 1

CJNE R4, #60, bucle 1 no es igual a 60; rpm BUCLE1.

MOV·R4, clasificado 0; R4=0

INC R5R5 más 1

CJNE R5, #60, bucle 1 no es igual a 60; rpm BUCLE1.

R6; R6 más 1

MOV R5, # 0; R5=0

MOV A, R6; CJNE A, Cishu, bucle 1; a no es igual al orden de LOOP1.

MOV·R6, clasificado 0; R6=0

LOOP1:

MOV TH0, # 03CH reasigna valor inicial

MOV TL0 , # 0B0H

SETB TR0; Iniciar temporizador 0

Reti

Bucle: RLC A; Una banda lleva hacia la izquierda

MOV D, C; puerto de transferencia de datos

instrucción nula NOP

no proporcionada de otro modo (para) a menos que se especifique lo contrario

SETB·CLK;

no se proporciona de otra manera (para) a menos que se especifique lo contrario

no se proporciona de otra manera (para) a menos que se especifique lo contrario

El reloj CLR CLK está limpio.

DJNZ R0, bucle; R0 menos 1, la posición 0 va al bucle.

Remojar en agua para suavizar

INT0:

Recuento INC; agregue 1 a la variable del contador

Familia MOV, cuente; enviar uno

MOV B, # 2; B=2

DIV ABA/B

MOV A, B=B

CJNE A, # 0, L3; a no es 0 a L3.

L1: Diccionario MOV, # 12; CISHU=12

Reti

L3: Diccionario MOV, # 24; >Reti

TAB:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H

Fin