Red de conocimiento informático - Conocimiento sistemático - Problema de ensamblaje, esperando en línea~~~

Problema de ensamblaje, esperando en línea~~~

SI1

INC 11H

JNB PSW.p> INC 11H

SI1: MOV 12H,A

MOV A,R1

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

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

MOV 32H,#00H ;bit de salida de resultado 32H-35H inicial 0 YANG YF DESIGN

MOV 33H,#00H

MOV 34H,#00H

MOV 35H,#00H

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

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

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)

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

MOV A,32H

RLC A

MOV 32H,A

CLR C

SETB B. 2

RET

RESULTDIV: ;DISEÑO YANG YF imborrable

;^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^