Se necesita con urgencia parpadear y cambiar el controlador del tubo emisor de luz

TICK EQU 10000

T100US EQU 156

LEDBUF EQU 20H

C100US EQU 30H

DBUF EQU 40H

TEMP EQU 50H

COUNT EQU 60H

BUFSTORE EQU 61H

DIN BIT P3.4

CLK BIT P3.5

//////////Constante de tiempo////

ORG 0000H

LJMP PRINCIPAL

////Transferir al programa principal///

ORG 000BH

////Interrumpir entrada/////////

LJMP T01NT

ORG 1000H

///Los siguientes criterios clave ///

K00: ACALL DELAY

MOV A , P1

CJNE A, #0FFH, K01

LLAVE LJMP

K01: CJNE A, #0FEH, K02

CPL 21H .0

CLAVE LJMP

K02: CJNE A, #0FDH, K03

CPL 21H.1

LLAVE LJMP

K03: CJNE A, #0FBH, LLAVE

CPL 21H.2

LLAVE LJMP

T01NT:

PUSH PSW ///Empujar en la pila

MOV A, C100US 1

JNZ GOON //A no es 00H y saltar para ejecutar GOON

DEC C100US

GOON:

DEC C100US 1

MOV A, C100US

ORL A, C100US 1

SALIDA JNZ //Si el contador no es cero, devuelve

MOV C100US, #4EH

MOV C100US 1, #20H ///Tiempo 2 segundos

CLAVE: MOV P1, #0FFH //Configuración de la interfaz P1

MOV A, P1

CJNE A, #0FFH, K00 ///Ir al criterio de clave

CLR C

MOV C, 21H.2 //Modo de evaluación

JNC MODE //Modo de evaluación,

CY es cero y entra en alternancia de ciclo

MOV LEDBUF, BUFSTORE

MOV C, 21H.1 //Juzga la velocidad

JNC OUTPHL //Juzga la velocidad , CY Si es cero, transfiera a alta velocidad

CLR C

MOV C, 21H.0 //Juicio de dirección

JNC OUTPSR //Juzgar dirección, si CY es cero, transfiera a alta velocidad Muévase lentamente hacia la derecha

OUTPSL: //Muévase lentamente hacia la izquierda

SETB 21H.0

SETB 21H.1

MOV A , LEDBUF

RL A

MOV LEDBUF, A

MOV BUFSTORE, LEDBUF

INICIO1: / //Mueve lentamente el número hacia la izquierda Pantalla del tubo

MOV DBUF 7, #07H

MOV DBUF 6, #06H

MOV DBUF 5, #05H

MOV DBUF 4, #04H

MOV DBUF 3, #03H

MOV DBUF 2, #02H

MOV DBUF 1, #01H

MOV DBUF, #00H

DISP LJMP

SALIDA LJMP

SALIDA:

POP PSW // Pop

RETI //Retorno de interrupción

MODO: SALIDA LJMP

OUTPSR: ///Desplazamiento lento a la derecha

CLR 21H.0

SETB 21H.1

MOV A, LEDBUF

RR A

MOV LEDBUF,A

MOV BUFSTORE, LEDBUF

p>

START2: //Mueva lentamente la pantalla del tubo digital hacia la derecha

MOV DBUF 7, #0FH

MOV DBUF 6, # 0EH

MOV DBUF 5, #0DH

MOV DBUF 4, #0CH

MOV DBUF 3, #0BH

MOV DBUF 2 , #0AH

MOV DBUF 1, #09H

MOV DBUF, #08H

DISP LJMP

SALIDA LJMP

OUTPHL: //movimiento rápido hacia la izquierda

MOV C

100US, #27H

MOV C100US 1, #10H // Temporizador 1 segundo

MOV C, 21H.0

JNC OUTPHR

SETB 21H.0

CLR 21H.1

MOV A, LEDBUF

RL A

MOV LEDBUF, A

MOV BUFSTORE, LEDBUF

START3: //Mueve rápidamente la pantalla del tubo digital hacia la izquierda

MOV DBUF 7, #017H

MOV DBUF 6, # 016H

MOV DBUF 5, #015H

MOV DBUF 4, #014H

MOV DBUF 3, #013H

MOV DBUF 2, #012H

MOV DBUF 1, #011H

MOV DBUF, #010H

DISP LJMP

SALIDA SJMP

OUTPHR: //Desplazamiento rápido a la derecha

CLR 21H.0

CLR 21H.1

MOV A, LEDBUF

RR A

MOV LEDBUF, A

MOV BUFSTORE, LEDBUF

START4: //Mueve rápidamente la pantalla del tubo digital hacia la derecha

MOV DBUF 7, #01FH

MOV DBUF 6, #01EH

MOV DBUF 5, #01DH

MOV DBUF 4, #01CH

MOV DBUF 3, #01BH

MOV DBUF 2, #01AH

MOV DBUF 1, #019H

MOV DBUF, #018H

LJMP DISP

SALIDA: INC COUNT

MOV A, COUNT

CJNE A, #01H, PART2

MOV P2, # 7EH

MOV LEDBUF, P2

LJMP START5

PARTE2: CJNE A, #02H, PARTE3

MOV P2, #0BDH

MOV LEDBUF, P2

LJMP START5

PARTE3: CJNE A, #03H, PARTE 4

MOV P2 , #0DBH

MOV LEDBUF, P2

LJMP INICIO5

> PARTE 4: CJNE A, #04H, PARTE 5

MOV P2, #0E7H

MOV LEDBUF, P2

LJMP START5

PARTE 5 :CJNE A, #05H, PARTE 6

MOV P2, #0DBH

MOV LEDBUF, P2

LJMP START5

PARTE 6: CJNE A, #06H, PARTE7

MOV P2, #0BDH

MOV LEDBUF, P2

LJMP START5

PARTE7: CJNE A, #07, PARTE 8

MOV P2, #07EH

MOV LEDBUF, P2

LJMP START5

PARTE 8: CJNE A, #07 ,PARTE9

MOV P2, #0FFH

MOV LEDBUF, P2

LJMP START5

PARTE 9: CJNE A, #08H, PARTE 10

MOV P2, #55H

MOV LEDBUF, P2

LJMP START5

PARTE10: CJNE A, #09H, PARTE11

p>

MOV P2, #0AAH

MOV LEDBUF, P2

LJMP START5

PARTE 11: CJNE A, #0AH, PART12

MOV P2, #0C3H

MOV LEDBUF, P2

LJMP START5

PARTE12: CJNE A, #0BH, PART13

MOV P2, #77H

MOV LEDBUF, P2

LJMP START5

PARTE13: CJNE A, #0CH, PART14

MOV P2, #0BBH

MOV LEDBUF, P2

LJMP START5

PARTE14: CJNE A, #0DH, PARTE15

MOV P2, #0DDH

MOV LEDBUF, P2

LJMP START5

PARTE15: CJNE A, #0DH, PARTE16

MOV P2, #0EEH

MOV LEDBUF, P2

LJMP START5

PARTE16: RECUENTO DE MOV, #01H

LJMP START5

/////Fin del patrón/////////

INICIO5: MOV DBUF 7, #027H //Pantalla de tubo digital

MOV DBUF 6, #026H

MOV DBUF 5, #025H

MOV DBUF 4, #024H

MOV DBUF 3, #023H

MOV DBUF 2, #022H

MOV DBUF 1, #021H

MOV DBUF, #020H

LJMP DISP

MAIN: //Programa principal

SETB 21H.0 //Establecer valor inicial

SETB 21H.1

SETB 21H.2

CLR COUNT

MOV TMOD, #02H //Modo 2, temporizador

MOV TH0, #T100US

MOV TL0, #T100US

MOV IE, #10000010B

SETB TR0 //Iniciar cronometraje

MOV A, #0FEH

MOV LEDBUF, A

MOV BUFSTORE, A

MOV P2, A

MOV C100US, # 27H

MOV C100US 1, #10H

BUCLE:

MOV B, 20H

MOV P2, B

LJMP LOOP

DISP: //Pantalla de tubo digital estática

MOV R0, #DBUF

MOV R1, #TEMP

MOV R2, #8

DP10:

MOV DPTR, #SEGTAB

MOV A, @R0

MOVC A, @A DPTR

MOV @R1, A

INC R0

INC R1

DJNZ R2, DP10

MOV R0 , #TEMP

MOV R1, #8

DP12:

MOV R2, #8

MOV A, @R0< / p>

DP13:

RLC A

MOV DIN, C

CLR CLK

SETB CLK

DJNZ R2, DP13

INC R0

DJNZ R1, DP12

SALIDA LJMP

SEGTAB:

DB 6DH, 80H, 40H, 40H, 38H, 79H, 38H, 31H

DB 6DH, 80H, 40H, 40H, 77H, 30H, 6FH, 74H

DB 76H, 80H, 40H, 40H, 38H, 79H, 38H, 31H

DB 76H, 80H , 40H, 40H, 77H, 30H, 6FH, 74H

DB 40H, 40H, 6FH, 3FH, 3FH, 5EH, 40H, 40H

RETI

DELAY: MOV R4, #02H

AA1: MOV R5, #0F8H

AA: NOP

NOP

DJNZ R5, AA

DJNZ R4, AA1

RET

END

>