Programa de ensamblaje del microcontrolador 51 0000-9999
ORG 0000H
LJMP PRINCIPAL
ORG 0030H
PRINCIPAL:
MOV 70H, #0 ;mostrar Buffer, puedes entenderlo como una matriz, 70H~73H
MOV 71H, #0
MOV 72H, #0
MOV 73H, #0
MOV 74H, #12H ;Unidad de conteo.
MOV 75H, #34H ;Ambos son códigos BCD.
;--------- -----------------------
M_LOOP:
LCALL DISP ;Llamar a la subrutina de visualización
JNB P3.2, JIA_YI ;P3.2 es un bloque de giro bajo más 1
JNB P3.3, QING_L ;P3.3 es un bloque de giro bajo y claro 0
AJMP M_LOOP ;Vaya a M_LOOP y comience de nuevo
;------------------------------ ----
JIA_YI:
LCALL DISP ;Visualización de llamada
JB P3.2, M_LOOP ;P3.2 es 1 y transfiere al bucle principal
MOV A , 75H ;El número 75H (unidades y decenas) se envía A
ADD A, #1 ;Suma 1
DA A ;Ajuste decimal
MOV 75H, A ;Devolver 75H
MOV A, 74H ;Enviar 74H (centenas y miles) a A
ADDC A, #0 ;Agregar 0 con acarreo
DA A ;Ajuste decimal
MOV 74H, A ;Retorno 74H
J_L:
LCALL DISP ;Visualización de llamadas
JNB P3.2, J_L ;P3.2 está bajo, gire a J_L
AJMP M_LOOP ;gire al bucle principal
;----- -------- ------------------
QING_L:
LCALL DISP ; >
JB P3.3 , M_LOOP ;P3.3 es el bucle principal de alta velocidad
MOV 74H, #0 ;Los dígitos de miles y centenas se borran a 0
MOV 75H, #0 ;Los dígitos de las decenas y las unidades se borran a 0
AJMP M_LOOP ;Ir al bucle principal
;-------------- ------------------- -
DISP:
MOV R0, #70H Enviar R0 para la dirección base 70H; p>
MOV A, 74H; Enviar A para dígitos de miles y centenas
SWAP A; Intercambia los cuatro bits superiores y los cuatro bits inferiores
ANL A,
#0FH ; Borra los cuatro bits superiores a 0
MOV @R0, A ; Envía 70H a los mil dígitos
INC R0 ;Agrega 1 a R0 para convertirte en 71H
MOV A , 74H ; Enviar A para dígitos de miles y centenas
ANL A, #0FH ; Proteger los cuatro dígitos superiores
MOV @R0, A ; dígitos
INC R0 ; Suma 1 a R0 para convertirlo en 72H
MOV A, 75H ; Envía A a los dígitos de las decenas y las unidades, el siguiente procesamiento es similar al anterior
INTERCAMBIO A
ANL A, #0FH
MOV @R0, A
INC R0
MOV A, 75H
ANL A, #0FH
MOV @R0, A
MOV DPTR, #D_TAB ;La primera dirección de la tabla se envía a DPTR
MOV R2, #254 ;R2=FEH, este es el código de control de bits
MOV R0, #70H; La dirección base envía R0
D_LOOP:
MOV A, @R0
MOVC A, @ A+DPTR
MOV P2, #255 ;Supresión.
MOV P0, A ;Segmento de salida código.
MOV P2, R2 ;Código de bits de salida .
LCALL DL_1MS
MOV A, R2
RL A ; por 1 bit
MOV R2, A
INC R0
CJNE R0, #74H, D_LOOP Los cuatro dígitos no se muestran y se convierten a D_LOOP p>
RET
D_TAB:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H
DB 80H, 90H, 88H, 83H, 86H, 0A1H, 86H, 8EH
------------------------------- ---
DL_1MS:
DJNZ R7, $
DJNZ R7, $
RET
; ---------------------- ---------
FIN