Red de conocimiento informático - Aprendizaje de código fuente - ¿Cómo programar la cortina de agua de programación digital?

¿Cómo programar la cortina de agua de programación digital?

u 16 incmacrou 16,;; 16 variable sin signo más 1

LOCALZZ

incu 16+1

MOVA, U16+1

JNZZZ

movu 16+1, #0

incu 16

ZZ:

ENDM

u 16 mov macrou 16, VAL; asignación de variables sin signo de 16 bits

movu 16+1, #low (VAL)

movu 16, #high (VAL)

ENDM

u 16 dayvmacrou 16, VAL,;; 16 variables sin firmar para determinar el tamaño y finalmente juzgar según Cy.

MOVA, U16+1

CLRC

SUBBA, #low(VAL)

MOVA, U16

SUBBA,#高(VAL)

ENDM

wx 1 equp 2.0

wx2 equp 2.1

WX3EQUP2.2

WX4EQUP2.3

S4 equp 1.3

S5 equp 1.4

led 1 equp 1.6; dos diodos emisores de luz

led 2 equp 1.7

jdqequp 1.5;; relé

smgbz 1 equ 0x 30

ds 1 equ 0x 31

ZTE quds 1+4

jsbz 1 equzt+1; Cuenta de 0 a 39

jsbz 2 equ ZT+2 Bandera de sincronización, utilizada para flashear y sincronizar

jsbz 3 equjsbz 2+2;; Temporización y conteo del relé activado y desactivado dos veces

Organización 0

JMPMAIN

Organización 0XB

JMPTimeInterupt

Principalmente:

MOVSP, #0X70

MOVR0, #0x70

CLRA

ma 1 :MOV @ R0, A; Todos los datos borrados 0

DJNZR0, MA1

Llamar a JDQLC_STOP

Inicialización del tiempo de llamada 0

; Bucle

Bucle: CALLAJPD

Ejecución de llamada

JMPlOOP

Funciones operativas principales

Ejecución: MOVA, ZT

CJ nea, #1, RR1

jmp run 1

RR 1: CJ nea, #2, RR2

JMPRUN2

RR2:RET

;;ciclo de 0-39 años

RUN1:

movds 1+0, #0X10

movds 1+1, #0X10

MOVA, JSBZ1

MOVB, #10

DIVAB

movds 1+ 2 , A

movds 1+3, B

u 16 díasvjsbz 2, 1000

JCR un 1 _ 1

u 16 movjsbz 2, 0

incjsbz 1

MOVA, JSBZ1

CJNEA, #39+1, RUN1_1

MOVJSBZ1, #0< / p>

RUN1_1:

Remojado en agua para suavizar

;;FFFF·Flick

run 2:u 16 díasvjsbz 2500

JC run 2 _ 1

movds 1+0, #0X10

movds 1+1, #0X10

movds 1+2, # 0X10

movds 1+3, #0X10

establecer 1

SETBLED2

u 16 díasvjsbz 2, 1000

JCRUN2_2

u 16 movjsbz 2, 0

JMPRUN2_2

RUN2_1:

movds 1+0, # 0X0F

movimientos 1+1, #0X0F

movimientos 1+2, #0X0F

movimientos

1+3, #0X0F

clr led 1

CLRLED2

Ejecución 2_2:

CALLJDQLC

Empapado en agua Hacer suave

Juicio de pulsación de tecla

AJPD:

JNBS4, AJ1

JNBS5, AJ2

Remojado en agua Hacer suave

aj 1:jnbs 4, $

MOVZT, #2

Llamar a JDQLC_START

Remojar en agua para make soft

AJ2: Llamando a JDQLC_STOP

setble 1

SETBLED2

JNBS5, USD

MOVZT, # 1

movjsbz 1, #0

u 16 movjsbz 2, 0

Remojado en agua para suavizar

JDQLC_START:

u 16 movjsbz 3, 0

Remojar en agua para suavizar

JDQLC_STOP:

u 16 movjsbz 3, 30000

SETBJDQ

Remojar en agua Hacer Suave

El relé se abre y se cierra dos veces.

JDQLC:

u 16 díasvjsbz 3,1000

JNCJDQ_1

CLRJDQ pasó 1

Empapado Hacer suave

JDQ _ 1:u 16 díasvjsbz 3, 1500

JNCJDQ _ 2

SETBJDQ se rompe durante 0,5 segundos

Remojar agua para ablandar

JDQ_2:u 16 dayvjsbz 3, 1501000

JNCJDQ_3

CLRJDQ pasó 1

Remojado en agua para ablandar

JDQ_3:u 16 díasvjsbz 33000

JNCJDQ_4

SETBJDQ roto

JDQ_4:Regreso

;;Inicialización del temporizador

Inicialización del tiempo 0:

MOVTMOD, #0X01

MOVTH0, #high (65536-1000)

MOVTL0,#Low(65536-1000)

SETBTR0

Establecer 0

SETBTR

Remojar en agua para hacer suave

Pantalla digital

SMXS:

incsmgbz 1

MOVA, SMGBZ1

SUBBA, #4

jcs mxs 1

movsmgbz 1, #0

SMXS1:

MOVP2, #0XF0

MOVA, SMGBZ1

ADDA, #DS1

MOVR0, A

MOVA, @R0

MOVDPTR, #TABD

MO FUKA, @A+DPTR

MOVP0, A

MOVDPTR, #TABW

MOVA, SMGBZ1

MOVKA , @ A+DPTR

MOVP2, A

remojado en agua para suavizar

TABD:; código segmentado

DB? 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90

DB? 0X88, 0X83, 0XC6, 0XA1, 0X86, 0X8E, 0XFF, 0XBF

Código de bits

DB? 0xF1, 0xF2, 0xF4, 0xF8

;; Interrupción del temporizador 0

Intervalo de tiempo:

PUSHPSW

Pushak

p >

MOVTH0,#Alto(65536-1000)

MOVTL0,#Bajo(65536-1000)

CALLSMXS

u 16 incjsbz 2< / p>

u 16 díasvjsbz 3, 30000

JNCTimeOut

u 16 incjsbz 3

Tiempo de espera:

POPACC

p>

POPPSW

Reti

Fin