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