Problema de ensamblaje, esperando en línea~~~
INC 11H
JNB PSW.p> INC 11H
SI1: MOV 12H,A
MOV A,R1 p>
MOV R0,A
CJNE R0,#4DH,LOOP1 ;<----Variable de terminación "4D", YANG YF DESIGN
MOV A,#00H
MOV A,#00H
MOV 13H,#00H
MOV 14H,#00H
MOV R0,#21H;< -----Posición inicial "21"
MOV 14H,@R0
MOV A,14H
AÑADIR A,11H
MOV 14H,A
MOV 14H,A
BUCLE2:MOV A,R0
AÑADIR A,#03H
MOV R1,A< / p>
MOV A,14H
AÑADIR A,@R1
JNB PSW.7,SI2
INC 13H
SI2:MOV 14H,A
MOV A,R1
MOV R0,A
CJNE R0,#4EH,LOOP2 ;<---- - Variable de terminación "4E"
MOV A,#00H
MOV 15H,#00H
MOV 16H,#00H
MOV R0 ,# A
MOV A,16H
AÑADIR A,@R1
JNB PSW.7,SI3
INC 15H
p>SI3:MOV 16H,A
MOV A,R1
MOV R0,A
CJNE R0,#4FH, LOOP3 ;< - --"4F" Terminar la variable de posición personalizada,
MOV A,#00H
;^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
; Subrutina aritmética de división
; -divisor de bits, división de longitud de bits arbitraria
; El divisor debe posicionarse previamente de acuerdo con el tiempo y el número de grupos acumulados, y este valor también debe ajustarse para el ajuste de precisión de depuración. !!!!!!! p> JNB P1.1,MEAS_F ;Cuando P1.1 se configura en 1 (alto) se usa para medir la velocidad, cuando se configura en 0 (bajo) se usa para medir la frecuencia
MEAS_V: MOV R2, #11111111B ;*** Medición de velocidad****
MOV R3, #11101000B Dividir por el número de R2-R5 y transmitir a 22H; -25H para cambios de procesamiento de bits
p>
MOV R4,#00100101B ;** El divisor es fijo, se conoce el número de ceros iniciales
MOV R5,#00001011B ; Se sabe que el número de ceros iniciales al establecer el divisor es y, y el número de ceros iniciales del divisor se cuenta como x (R0) y el número de ciclos finales es (32-y) - ( 24-x)=(8-y)+x
JMP STARDIV
MEAS_F:MOV R2,#00111010B ;***Medición de frecuencia **** DISEÑO YANG YF p>
MOV R3,#01100110B ;Divida entre R2-R5, vaya a 22H-25H para procesamiento de variables
<p> MOV R4,#00111110B ;** El divisor es fijo y se conoce el número de los primeros 0
MOV R5,#10000111B ; Supongamos que se sabe que los primeros 0 dígitos del divisor son y, y se conocen los primeros 0 dígitos del divisor. El número es x (R0), y el número de ciclos inversos es (32-y)-(24-x)=(8-y)+x
JMP STARDIV
STARDIV: MOV 22H,R2
MOV 23H,R3
MOV 24H,R4
MOV 25H,R5
MOV 17H,16H; excepto Tomar 17H-19H y cargar el resultado acumulado 12H, 14H, 16H
MOV 18H.14H
MOV 19H,12H p>
MOV 32H,#00H ;bit de salida de resultado 32H-35H inicial 0 YANG YF DESIGN
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H p>
MOV R0,#00H
MOV R1,#00H
MOV 10H,#00H
CHECKFRONT:CLR C
MOV A,17H ;verifique si hay un 0 nulo en el divisor alto
RLC A
JNC MOVFRONT
JMP LOOPCOUNT
MOVFRONT :INC R0
CLR C ;Si el bit de división superior es 0, avance
MOV A,19H ;1)
RLC A p>
MOV 19H,A
MOV A,18H 2)
RLC A<
MOV 18H; ,A
MOV A,17H ;3)
RLC A
MOV 17H,A
JMP CHECKFRONT
LOOPCOUNT:MOV A,# 09H ;
AGREGAR A,R0
MOV 10H,A ;recuento de bucle trasero R0
JUDGSUB: MOV PSW,# 00H
MOV A,R1
CJNE A,10H,JMP0
JMP RESULTDIV
JMP0: MOV A,22H
MOV C, ACC .7 ; ACC.7 ;******!!!!
MOV F0,C
CLR C ;**** **!!!
p>SUBB A,17H
JC CANOTSUB ;Desbordamiento
JNZ JMP1 ;CUANDO ACC!=#00H ENTONCES SALTAR
MOV A,23H
CLR C
SUBB A,18H
JC CANOTSUB
JMP1: JNZ JMP2 ;CUANDO ¡ACC! =#00H ENTONCES SALTAR
MOV A,24H
CLR C
SUBB A,19H
JC CANOTSUB
JMP2: JMP SUBBPART
CANOTSUB: JNB F0,TURN1
JB F0,MOVDR
JMP SU
BBPART
SUBPARTE: CLR C
MOV A,25H
JNB PSW.1,JMPSP1
JB ACC.7,JMPSP1
SETB ACC.7
MOV A,19H
INC A
MOV 19H,A
JMPSP1: MOV A,24H
SUBB A,19H
MOV 24H,A
MOV A,23H
SUBB A,18H p>
MOV 23H,A
MOV A,22H
SUBB A,17H
MOV 22H,A
ACALL SETCY_1
JB B. 0,MOVDL ;Debido a restricciones condicionales, la división se restablece mediante desplazamiento a la izquierda después de desplazamiento a la derecha
LJMP JUDGSUB
MOVDR: SETB B.0
CLR C ; Desplazamiento del divisor una posición a la derecha
MOV A,17H ;1)
RRC A
MOV 17H,A
MOV A,18H 2)
RRC A
MOV 17H,A
MOV A,18H;
MOV A,18H;2) p >
RRC A
MOV 18H,A
MOV A,19H ;3)
RRC A
MOV 19H,A
MOV PSW.1,C ;Mueve el extremo del divisor del área de almacenamiento temporal a F1
ACALL SETCY_0
JMP SUBBPART
MOVDL: MOV C,PSW.1
MOV A,19H ;1)
RLC A
MOV 19H,A
MOV A,18H; 2)
RLC A
MOV 18H,A
MOV A MOV 18H,A
MOV 18H,A
MOV A,17H ;3)
RLC A
MOV 17H,A
MOV 17H ,A
CLR B. 0
SETB B.1
JMP JUDGSUB
TURN1:CLR C
MOV A,25H ;1)
RLC A
MOV 25H,A
MOV A,24H ;2)
RLC A
MOV 24H,A
MOV A,23H ;3)
RLC A
MOV 23H,A
MOV A,22H ;4) p>
RLC A
MOV 22H,A
JB B. 1,JMPCALLSC0
ACALL SETCY_0
JMPCALLSC0: CLR B.1
JMP JUDGSUB
SETCY_0: JB B.2,JMPSE1; B.2 Determinar si se debe establecer 1.
B.2 Determinar si se debe establecer 0 después de configurar 0 por primera vez. Si es así, ignórelo una vez
INC R1 Cuente el número de veces que se han contado
CLR C; ; Desplazamiento en un bit 0
MOV A,35H
RLC A
MOV 35H,A dirección de salida 32H-35H
MOV A,34H
RLC A<
MOV 34H,A
MOV A,33H
RLC A
MOV 33H, A
MOV A,32H
RLC A
MOV 32H,A
CLR C
JMPSE1: CLR B.2
RET
SETCY_1:INC R1 ;Los tiempos contados cuentan YANG YF DESIGN
SETB C ;Desplazar un bit 1
MOV A,35H
RLC A
MOV 35H,A; dirección de salida 32H-35H
MOV A, 34H
RLC A
MOV 34H,A
MOV A,33H
RLC A
MOV 33H,A p>
MOV A,32H
RLC A
MOV 32H,A
CLR C
SETB B. 2
RET
RESULTDIV: ;DISEÑO YANG YF imborrable
;^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^