Red de conocimiento informático - Aprendizaje de código fuente - Números y programación

Números y programación

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 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

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

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

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

; 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

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