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 p >
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