Pídale al ensamblador que me ayude a traducir el significado de este programa.

Datos BPOT 20H

Datos ML 21H

Datos MH 22H

Datos FL 23H

Datos FH

HL Datos 25H

Datos HH 26H

Datos de modo 27H

Datos DM 28H establece nueve unidades de trabajo.

; -

ORG 0H especifica la entrada del programa

SJMP Main transfiere el programa principal

ORG 23H entrada de interrupción

LJMP T0SVRTurn controlador de interrupciones

; -

Principal: instrucción NOP vacía

MOV SP, #50H Supongamos que la parte inferior de la pila de baterías está Una batería de 50H.

MOV TH0, #0D9H

MOV TL0, # 01AH; el valor inicial del recuento T0 es D91AH.

MOV TMOD, # 01H; modo de funcionamiento T0 1 (recuento de 16 bits)

MOV IE, # 82H activa la interrupción y permite la interrupción de desbordamiento T0.

SETB TR0; empezar a contar

CLR A

MOV R0, N° 8

MAIN1: MOV R1, #BPOT

MOV @R1, A

INC R1

DJNZ R0, principal 1; ponga a cero las nueve unidades de trabajo de la colección.

$sjmp;esperar interrupción

--

t 0 SVR: CLR TR0 apagado para contar.

Presione ACC para guardar ACC

MOV TH0, # 0D9H Los ocho bits superiores del valor inicial del recuento de recarga T0 son D9H.

MOV A, #034H

CLR C

SUBB A, TL0

MOV TL0, A; recarga el valor inicial del recuento T0 Los ocho bits inferiores son la diferencia entre el valor original y la reducción de acarreo de 34H.

SETB TR0; empezar a contar

INC DMDM ​​recuento

MOV A, Deutsche Mark

CJNE A, #100, t 0 SVR 2; la cantidad de DM no es suficiente para activar T0SVR2 100 veces.

CLR A

MOV DM, A; Borrar recuento de DM

INC ML Recuento de mililitros

MOV, MI

CJNE A, #10, t 0 SVR 2; el conteo de ML no es suficiente para 10 turnos T0SVR2.

CLR A

MOV ML, A; recuento claro de mililitros

Recuento INC MHMH

MOV A, MH

CJNE A, #6, el recuento de T0SVR2MH no es suficiente 6 para pasar a T0SVR2.

CLR A

MOV MH, A; borrar recuento de MH

Recuento INC FLFL

MOV City, FL

CJNE A, #10, t 0 SVR 2; el conteo de FL no es suficiente para 6 vueltas hasta T0SVR2.

CLR A

FL MOV; CLEAR FL COUNT

INC FH Conteo de saltos

CJNE A, #6, T0SVR2FH Conteo insuficiente 6 vaya a T0SVR2.

CLR A

MOV FH, A; recuento de FH claro

T0SVR2: MOV P3, #0C3H

MOV No. 1

p>

Agregue uno, BPOT

MOV R0,A

MOV A,@R0 forma el desplazamiento de la tabla de lectura.

MOV DPTR, # tabla; tabla de direcciones de encabezado numérico

MOVC A, @ A+DPTR; leer números en la tabla

CPL A

MOV P1,A; el número leído se invierte y luego se emite por P1.

MOV A, BPOT

CJNE A, #2, T0SVR3 El conteo de BPOT no es suficiente para 2 vueltas hasta T0SVR3.

MOV A, Deutsche Mark

SETB C; Establecer 1 bit c

SUBB A, # 50; valor de conteo actual de DM cuando lleva menos 50H.

CPL C

MOV P1.7, C; salida 0 a P1.7.

MOV A, BPOT El valor de recuento actual de BPOT es el desplazamiento de la tabla de lectura.

T0SVR3: MOV DPTR, #BITC; dirección de encabezado BITC de la tabla

MOVC A,@A+DPTR número de lectura de BITC en la tabla

MOV· P3; ; Envíe este número a P3.

INC BPOT Recuento de BPOT

MOV A, BPOT

CJNE A, #4, t 0 SVR 1 el recuento de BPOT no es suficiente. Publicado nuevamente en tosvr 1 4 veces.

CLR A

MOV BPOT, A; borrar recuento de BPOT

t 0 SVR 1:POP ACC; reanudar

RETI; Retorno

; -

BITC: DB 0E3H, 0D3H, 0CBH, 0C7H

Tabla: DB 3FH, 6H, 5BH, 4FH, 66H, 6DH, 7DH , 7H, 7FH, 6FH

Fin