Números y programación
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 signo 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; indicador de sincronización, utilizado para parpadear 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
Principal:
MOVSP, #0X70
MOVR0, #0x70
CLRA
ma 1: MOV @ R0, A; Borrar todos los datos 0
DJNZR0, MA1
Llamar a JDQLC_STOP
Inicialización del tiempo de llamada 0
Gran bucle
;Lazo: CALLAJPD
Operació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 edad 0-39
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
RUN1_1:
Remojado en agua para suavizar
;;FFFF·Flick
run 2: u 16 dayvjsbz 2500
JC run 2_1 p>
movds 1 0, #0X10
movds 1 1, #0X10
movds 1 2, #0X10
movds 1 3, #0X10 p>
establecer 1
SETBLED2
u 16 díasvjsbz 2, 1000
JCRUN2_2
u 16 movjsbz 2, 0
JMPR
UN2_2
RUN2_1:
movds 1 0, #0X0F
movds 1 1, #0X0F
movds 1 2, # 0X0F
movds 1 3, #0X0F
clr led 1
CLRLED2
Ejecutar 2_2:
CALLJDQLC p>
Remojar en agua para suavizar
; Juicio de pulsación de tecla
AJPD:
JNBS4, AJ1
JNBS5, AJ2
Remojar en agua para suavizar
aj 1: jnbs 4, $
MOVZT, #2
Llame a JDQLC_START
Remojar para suavizar
AJ2: llamar a JDQLC_STOP
establecer 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
Remojado en agua para suavizar
JDQLC_STOP:
u 16 movjsbz 3 , 30000
SETBJDQ
Remojado en agua para suavizarlo
El relé se abre y se cierra dos veces.
JDQLC:
u 16 díasvjsbz 3,1000
JNCJDQ_1
CLRJDQ pasó 1
Regado Hacer suave
JDQ_1: u 16 díasvjsbz 3, 1500
JNCJDQ_2
SETBJDQ descanso 0,5 segundos
Remojar en agua para suavizar
JDQ_2: u 16 dayvjsbz 3, 1500 1000
JNCJDQ_3
CLRJDQ pasó 1
Remojado en agua para ablandar
p>
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 suavizar p>
; Pantalla digital
SMXS:
incsmgbz 1
MOVA, SMGBZ1
SUBBA, #4
jcs mxs 1
movsmgbz 1, #0
SMXS1:
MOVP2, #0XF0
MOVA, SMGBZ1< / p>
ADDA, #DS1
MOVR0, A
MOVA, @R0
MOVDPTR, #TABD
MOV KA, @A DPTR
MOVP0, A
MOVDPTR, #TABW
MOVA, SMGBZ1
MOVKA, @A DPTR p>
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