;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;
E_W_LEFT_R BIT P0.0 ;;Definición de dirección este-oeste
E_W_LEFT_G BIT P0.1
E_W_R BIT P0 .2 p>
E_W_G BIT P0.3
E_W_P_R BIT P0.4
E_W_P_G BIT P0.5
;;;;; ;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
S_N_LEFT_R BIT P0.6;;Definición de dirección norte-sur
S_N_LEFT_G BIT P0.7
S_N_R BIT P2.3
S_N_G BIT P2 .2
S_N_P_R BIT P2.1
S_N_P_G BIT P2.0
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
BUFFER1 datos 41h ;Cuatridireccional definición de buffer de tubo digital
Datos BUFFER2 42h
Datos BUFFER3 43h
Datos BUFFER4 44h
Datos BUFFER5 45h
Datos BUFFER6 46h
Datos BUFFER7 47h
Datos BUFFER8 48h
;;;;;;;;;;;;;;;;;;;;;; ;;;;;Programa principal;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000h
LJMP MAIN
ORG 000BH ;Servicio de interrupción T0 Dirección de entrada del programa
LJMP T0_INT
ORG 0100H
MAIN : MOV TMOD,#01H
MOV TH0,#3CH Temporización del temporizador para 50 ms
MOV TL0,#0B0H
SETB ET0
SETB EA
SETB TR0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;
REINICIAR: MOV P0,#0A9H ;Estado 1Pantalla LED
MOV P2, #05H
MOV R0, #00H
MOV R3, #40; R3 controla la visualización del tubo digital en dirección norte y sur
MOV R2,#10;R2 controla la visualización del tubo digital este-oeste
ESTADO1: CJNE R0,#20,POOL1
MOV R0,#00H;R0 controla el control del bucle 1s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
p>
LCALL DISP
POOL1: CJNE R2,#00H,STATE1
;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;
MOV P0,#0A8H ;Pantalla LED de estado
MOV R0,#00H
MOV R2,#04
ESTADO2: CJNE R0,#20,POOL2
MOV R0,#00H ;R0 controla el control de bucle de 1 s
DEC R3 p>
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL2: CJNE R2,#00H ,ESTADO2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV P0 ,#0A6H ;Pantalla LED de estado
MOV R0,#00H
MOV R2,#07
ESTADO3: CJNE R0,#20, POOL3
MOV R0,#00H ;R0 controla el control de bucle de 1 s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL3: CJNE R2,#00H,STATE3
;;;;;;;;;;;;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV P0,#96H ;Pantalla de estado 4LED
MOV R0,#00H
MOV R2,#15
ESTADO4: CJNE R0,#20,POOL4
MOV R0,#00H ;Controles R0 Control de bucle de 1s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP p>
POOL4: CJNE R2, #00H,ESTADO4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;
MOV P0,#82H ;Estado 5Pantalla LED
MOV R0,#00H
MOV R2,#4 p>
ESTADO5: CJNE R0,#20, POOL5
MOV R0,#00H ;R0 controla el control de bucle de 1s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL5: CJNE R2,#00H,STATE5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; p>
MOV P0, #6AH ;Pantalla LED de estado 6
MOV P2, #05H
MOV R0,#00H
MOV R3,#10
MOV R2,#40
ESTADO6: CJNE R0,#20 ,POOL6
MOV R0,#00H ;R0 controla el control de bucle de 1s
DEC R3
DEC R2
LCALL JUST1
p>LCALL JUST2
LCALL DISP
PAG
OOL6: CJNE R3,#00H,ESTADO6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
MOV P0,#2AH; Pantalla LED de estado 7
MOV R0,#00H
MOV R3,#4
STATE7: CJNE R0,#20,POOL7
MOV R0,#00H ;R0 controla el control de bucle 1s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL7: CJNE R3,#00H,STATE7
;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV P0,#0AAH ;Pantalla de estado 8LED
MOV P2,#09H
MOV R0,#00H
MOV R3,#7
ESTADO8: CJNE R0,#20,POOL8 p>
MOV R0,#00H ;R0 controla el control de bucle de 1 s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL8: CJNE R3,#00H,STATE8
;;;;;;;;;;;;;;;;;;; ;;; ;;;;;;;;;;;;;;;;;
MOV P2,#0AH ;Estado 9Pantalla LED
MOV R0,#00H p>
MOV R3,#15
ESTADO9: CJNE R0,#20,POOL9
MOV R0,#00H ;R0 controla el control de bucle de 1 s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL9: CJNE R3 ,#00H ,ESTADO9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;; MOV P2,#00H ;Estado 10Pantalla LED
MOV R0,#00H
MOV R3,#4
STATE10: CJNE R0,#20,POOL10
MOV R0,#00H ;R0 controla el control de bucle de 1s
DEC R3
DEC R2
LCALL JUST1
LCALL JUST2
LCALL DISP
POOL10: CJNE R3,#00H, ESTADO10
REINICIAR LJMP
;;;;; ;;;;;;;;;;;;;Interrumpir rutina de servicio;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
T0_INT: INC R0
MOV TH0,#3CH
MOV TL0,#0B0H
RETI
; ;;;;;;;;;;;;;;;;;;Ajustar subrutinas;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;
JUST1: MOV A,R3
MOV B, #10 ;Ajusta la posición baja en dirección norte-sur
DIV AB
<p>MOV R7,A
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 42H,A
MOV 46H,A
MOV A, R7 Ajusta la posición alta en dirección norte-sur
MOV DPTR, #TAB
MOVC A,@A+DPTR
MOV 41H,A
MOV 45H,A
RET
;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
JUST2: MOV A,R2
MOV B,#10 ;Ajustar la posición baja en dirección este-oeste
DIV AB
MOV R7,A
MOV A,B
MOV DPTR,#TAB p>
MOVC A,@A+DPTR
MOV 43H,A
MOV 47H,A
MOV A,R7; Ajusta la posición alta en dirección este-oeste
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 44H,A
MOV 48H,A
p>RET
;;;;;;;;;;;;;;;;;;;; ;;Mostrar subrutina;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
DISP: PUSH ACC
MOV SCON,#00H
MOV R1,#41H
MOV R6,#08
POOL11: MOV A,@R1
MOV SBUF,A ;Iniciar salida en serie p>
JNB TI,$ ;Salida completa
CLR TI ;Borrar indicador TI para la próxima transmisión
INC R1
DJNZ R6 ,POOL11
POP ACC
RET
;;;;;;; ;;;;;;;;;;;;;Visualización del código de segmento;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;
TAB: DB 0C0H, 0CFH , 64H, 46H,4BH, 52H, 50H,0C7H, 40H, 42H
FIN
Obtendrás el resultado con el que estás satisfecho después de una pequeña modificación