¿Cómo programar la cortina de agua de programación digital?
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 p>
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 p>
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: p>
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