Red de conocimiento informático - Aprendizaje de código fuente - Programa de reloj del microcontrolador

Programa de reloj del microcontrolador

muteM EQU 10h; tecla de silencio encendido/apagado

temporizadorT EQU 0Ch; tecla de menú para entrar/salir del estado de configuración

tecla de desplazamiento izquierdaL 46h; >rightR EQU 47h; tecla de desplazamiento hacia la derecha

upU EQU 19h; tecla de aumento

downD EQU 1dh; tecla de disminución

d_off EQU 16H; mostrar/ Cerrar

llamar EQU 44H;Operación de inicialización de tecla de calendario DS1302

K_on BIT P3.0;Salida de alarma

LED1 BIT P3.3

LED2 BIT P3.4

LED3CLK BIT P3.5 ;DS1302

LED4IO BIT P3.7

PRIMERA BIT P3.1

SEGUNDO EQU 60H

;60H seg

;61H min

;62H Hora

;63H Día

;64H Mes;65H DÍA

;66H Año

;6Ah Minuto de alarma desde 00(1302)

;6BH Hora de alarma desde 01(1302) )

******************************

ORG 0000H

INICIO AJMP

ORG 0003H

LJMP S_INT ;IRF

ORG 000BH ;200Us

LJMP P_INT ;

ORG 001BH ;pantalla LED <

PANTALLA LJMP

;********************* ***** ***** ;programa principal

ORG 0030H

INICIO: CLR RST

MOV SP,#2AH

SETB 05H

CLR 06H

SETB 07H

CLR 08H

CLR 09H

CLR 0AH

CLR 0BH

CLR 0CH

SETB 0DH

CLR 0EH

CLR 0EH

CLR 0FH

CLR PRIMERO.

CLR 0FH

CLR 10H

CLR 11H

MOV R2,#00H ;

MOV R3, #00H ;

MOV TMOD,#12H

MOV TL1,#0e5H ;espera

MOV TH1,#0BeH

MOV TH0 ,#3FH 200uS 3f

MOV TL0,#3FH

SETB ET0

SETB ET1

SETB PT0

SETB TR0

SETB TR1

SETB IT0 ;

SETB EX0 ;

CLR PX0 ;LCALL SET1302 ;Inicializar

MOV R1,#0C1H ;Tomar el parámetro de sincronización de 1302

llamar a T_6061

MOV 6AH,A ;

MOV R1,#0C3H

llamar a T_6061

p>

ACALL T_6061

MOV 6BH,A ;H

MOV 61H,#0

MOV 62H,#0

SETB EA

sjmp $

;****************** *********** **** **

DISPLAY: PUSH ACC

PUSH PSW

MOV TL1,#0e0H Cuánto tiempo esperar para que se muestre (20 ms)

MOV TH1,#0b0H

MOV dptr,#tab1

JB 0EH,DIS2

JB 0FH,DIS3

JB 10H,DIS4

JB 11H,DIS5

JNB 0DH,D_OUT

JNB 08H,D_GO ; la pantalla de sincronización parpadea

JNB 07H,D_ OUT

D_G MOV DPTR,#TAB1

MOV A,62H

ANL A, #0FH

MOV B,A

MOV A,62H

SWAP A

ANL A, #07H

MOVC A,@A+ DPTR

MOV P1 ,A

CLR LED1

LCALL DL2M

SETB LED1

MOV A,B

MOVC A, @A+DPTR

MOV C,07H

MOV según 7,C ;seg. parpadea

MOV P1,A

CLR LED2

LCALL DL2M

SETB LED2

MOV dptr,# tab2 ; Voltear lista de campos LED

MOV A,61H

ANL A,#0FH

MOV B,A

MOV A, 61H

SWAP A

ANL A,#0FH

MOVC A,@A+DPTR

MOV C,07H

MOV según 6,C ;El segundo indicador parpadea

p>

MOV P1,A

CLR LED3CLK

LCALL

DL2M

SETB LED3CLK

MOV dptr,#tab1

MOV A,B

MOVC A,@A+DPTR

MOV C,06H

cpl c

MOV acc.7, C ;Indicador de alarma

MOV P1,A

CLR LED4IO

LCALL DL2M

SETB LED4IO

D_OUT: SETB TR1

POP PSW

POP ACC

RETI

;************************

DIS2: AJMP DIS_2

p>

DIS3: AJMP DIS_3

DIS4: AJMP DIS_4

DIS5: AJMP DIS_5

;*** ** ****** *********

DIS_2:MOV dptr,#tab1

MOV 6FH,62H

ACALL BCD_HEX

MOV B,#10

DIV AB

MOVC A,@A+ DPTR

MOV P1,A

CLR LED1

p>

LCALL DL2M

SETB LED1

MOV A, B

MOVC A, @A+DPTR

MOV P1 ,A

CLR LED2

LCALL DL2M

SETB LED2

SETB TR1

POP PSW

POP ACC

RETI

;*************** *******

DIS_3:MOV DPTR, #TAB2

MOV 6FH,61H

ACALL BCD_HEX

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

CLR LED3CLK

LCALL DL2M

SETB LED3CLK

MOV A,

MOV DPTR,#TAB1

MOVC A,@A+ DPTR

MOV P1,A

CLR LED4IO

LCALL DL2M

SETB LED4IO

SETB TR1

POP PSW

POP ACC

p>

RETI

;*************** ***********

DIS_4:MOV dptr,#tab1 ;Mostrar alarma configurada

JNB 07H,D4_OUT parpadea en la pantalla

MOV A,6BH

MOV B,#0AH

DIV AB

DIV AB

p>

MOVC A,@A+DPTR

MOV P1,A

CLR LED1

LCALL DL2M

SETB LED1

MOV A, B

MOVC A,@A+DPTR

MOV P1,A

<

p>CLR LED2

LCALL DL2M

SETB LED2

D4_OUT:SETB TR1

POP PSW

POP ACC

RETI

;************************

DIS_5: MOV DPTR,#TAB2

JNB 07H,D5_OUT ;Parpadeando al mostrar

MOV A,6AH ;Mostrar la puntuación de alarma establecida

MOV A,6AH ;Mostrar la configuración Puntuación de alarma

DIS_OUT.

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,A

CLR LED3CLK

LCALL DL2M

SETB LED3CLK

MOV DPTR, #TAB1

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR LED4IO

LCALL DL2M

SETB LED4IO

D5_OUT: SETB TR1

POP PSW

POP ACC

RETI

p >

;******************************

DL2M: MOV 43H,#14H ; LED(2ms)

DL2: MOV 44H, #14H

DL2: MOV 44H, #14H

SETB LED4IO

D5_OUT.

DL1: NOP

NOP

DJNZ 44H,DL1

DJNZ 43H,DL2

RET

RET

p>

;************************ El temporizador lee la hora de 1302 y determina si el tiempo de alarma ha expirado***** **

P_INT: PUSH ACC

PUSH PSW

INC R2

CJNE R2,#250D,P_OUT

MOV R2,#00H

INC R3

CJNE R3,

MOV R2,#00H

INC R3

CJNE R3, #10D,P_OUT

MOV R3,#00H

CPL 07H

MOV P1,#0FFH

p>

ACALL R_1302

SALIDA:JNB 06H,P_OUT

MOV A,6BH

MOV B,#10

DIV AB

SWAP A

AÑADIR A,B

CJNE A, 62H, PP_OUT

MOV A,6AH

MOV B,#10

DIV AB

SWAP A

ADD A,B

CJNE A,61H,PP_ OUT

SETB 08H ; Indicador de llegada de tiempo

MOV C,07H

cpl c

MOV K_ON,C

P_OUT:POP PSW

PO

P ACC

RETI

PP_OUT: SETB K_ON

CLR 08H

POP PSW

POP ACC

p>

RETI

;************************ Se ha recibido la señal del control remoto* ***********

S_INT: CLR EA

PUSH ACC

PUSH PSW

PUSH DPH

PUSH DPL

PUS 02H

PUS 03H

MOV R6,#10D ;

SB: ACALL YS1

JB P3.2 ,SALIR

DJNZ R6, SB

JNB P3.2, $

ACALL YS2

p>

JB P3.2,SALIR

MOV R1,#1AH

MOV R2,#4D

PP: MOV R3,#8D;

JJJ: JNB P3 .2,$

ACALL YS1

MOV C,P3.2

JNC UUU

JB P3.2,$

p>

UUUU:MOV A,@R1

RRC A

MOV @R1,A

DJNZ R3,JJJJ

DJNZ R3,JJJJ

INC R3,JJJJ

DJNZ R3,JJJJ

DJNZ R3,JJJJ

INC R1

DJNZ R2,PP

;------------------ ---------------- ---

MOV A,1AH ;

XRL A,#40h Determinar si el valor de 1AH; es igual a la dirección inferior de 8 bits del control remoto (40h)

JNZ EXIT

MOV A,1bH

XRL A,#0bfh ; Determine si la dirección alta de 8 bits es correcta (0bfh)

JNZ EXIT

MOV A,1CH

CPL A

XRL A,1DH ; Compare el valor de 1CH con el recíproco del valor de 1DH.

1DH; compare los valores de 1CH y 1DH si son diferentes, no son válidos y se descartan (verifique si los datos son precisos)

JNZ EXIT

ACALL DO.

SALIR: SETB EA

POP 03H

POP 02H

POP DPL

POP DPH

POP PS

POP A

POP A

POP A

POP PS

POP PSW

POP ACC

RETI

;------------------- -retraso-------- ---------------

YS1: MOV 70H, #16D ;Retraso 1

D1 : MOV 71H, #21D

DJNZ 71H,$

DJNZ 70H,D1

RET

YS2: MOV 70H,#09D ;retardo 2

D2: MOV 71H, #220D

DJNZ 71H,$

DJNZ 70H, D2

RET

;----- ---------------------------------------- ---------- --

TAB: DB 00H, 01H, 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H Mesa con pantalla de tubo digital LED. Tabla de visualización de tubo digital LED TAB1 Tabla de valores de clave de control remoto TAB (no utilizada)

;TAB1: DB 3FH, 11H, 5EH, 5BH, 71H, 6BH, 6FH, 19H, 7FH, 7bH, 77H, 7CH ,39H,5EH,79H,71H

tab1:DB 0C0H,0F9H.0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0a7h,0a1h,86h,8EH

TAB2: DB 0c0H,0f9H,64H,70H,59H,52H,42H; tabla de códigos de segmentos LED Flip-Flop

;0CH es el indicador de configuración.

0DH es la marca de visualización completa, 0EH es la marca de hora para la pantalla, 0FH es la marca de minutos para la pantalla

; 10H es la marca de hora de alarma para la pantalla, 11H es la marca de minutos de alarma para la pantalla; pantalla

; Agregar función de silencio del despertador

; silencio-10h, temporizador-0eh, izquierda-46h, derecha-47h, arriba-19h, abajo-1dh

D MOV A,1CH

CJNE A,#TIMERT,REDO ;El código no es una clave de configuración/salida

JNB 0CH,SET1 ;Sí, entonces ingresa

CLR 0CH ;Sí, ya está adentro, luego salga

SETB 0DH ;Restaurar la visualización normal.Restaurar la visualización normal

CLR 0EH

CLR 0FH

CLR 10H

CLR 11H

RET

SET1:SETB 0CH

SETB 0EH

CLR 0DH

CLR 0FH

CLR 10H

CLR 11H

RET

ROJO CJNE A ,#MUTEM,REDO1 ;no es una clave de configuración para manejar REDO1,2,3,4...

LJMP MUTE ;MUTE?

REDO1: CJNE A,#D_OFF,DO_SET2

LJMP DIS_OFF ; Cerrar pantalla

DO_SET2:JB 0CH,SET2; Configuración del tiempo de procesamiento

RET

SET2: CJNE A,# UPU,SET2A

LJMP INC1 ;+ más(^)

SET2A: CJNE A,#DOWND,SET2B

LJMP DEC2 ;- menos

SET2B: CJNE A,#RIGHTR ,SET2C

LJMP DERECHA ;DERECHA desplazamiento a la derecha(>)

SET2C:CJNE A,#LEFTL,SET2D LJMP IZQUIERDA ;IZQUIERDA desplazamiento a la izquierda (<)

SET2D: CJNE A,#RECALL,SET2EXT;Inicializar DS1302

LJMP SET1302

SET2EXT:RET

;- -------------------- ---------------------Cª-------- -------------

INC1: JB 0EH,INCH

JB 0FH.INCM

JB 10H,INC_H

JB 11H,INC_M

RET

INC_H: INC 6BH ;incremento de hora de alarma

MOV A,6BH

CJNE A,#24D,INCH3

MOV 6BH, #0 #60D,INCH4

MOV 6AH,#0

INCH4:MOV R1,#0C0H

MOV R0,6AH

ACALL SETONE ;

RET

INCH:;INC 62H ;

>MOV 6FH, 62H

MOV 6FH.62H

ACALL BCD_HEX

INC A

CJNE A,#24D,INCH1

p>

MOV A,#0

INCH1:MOV 6FH,A

ACALL HEX_BCD

MOV 62H,A

MOV R1,# 84H

MOV R0,62H

ACALL SETONE ;

RET

INCM: INC 61H ;

MOV 6FH,61H

ACALL BCD_HEX

INC A

ACALL SETONE ;

MOV 6FH,61H

INC A

ACALL_HEX_BCD

MOV 61H,A

MOV R1,#82H

MOV R0,61H

ACALL SETONE;

RET

;-------------------------- -------- ---DEC---------------------

DEC2:JB 0EH,DECH

JB 0FH,DECM

JB 10H,DEC_H

JB 11H,DEC_M

RET

DECH: MOV 6FH,62H

ACALL BCD_HEX

DEC A

CJNE A,#0FFH,DECH1

MOV A,#23

DECH1:MOV 6FH,A

ACALL HEX_BCD

MOV 62H,A

MOV R1,#84H

MOV R0,62H

ACALL SETONE

RET

DECM: MOV 6FH,61H

ACALL BCD_HEX

DEC A

CJNE A,#0FFH,DECM1

MOV A,#59

DECM1:MOV 6FH,A

ACALL HEX_BCD

MOV 61H,A

MOV R1,#82H

MOV R0,61H

ACALL SETONE

RET

DEC_H:DEC 6BH

MOV A,6BH

CJNE A,#0FFH,DECH3

MOV 6BH,#23D

DECH3:MOV R1, #0C2H

MOV R0,6BH

ACALL SETONE

RET

DEC_M: DEC 6AH

MOV A,6AH

CJNE A,#0FFH,DECH4

MOV 6AH,#59D

DECH4:MOV R1,#0C0H

MOV R0,6AH

ACALL SETONE

RET

;--------------- ------- ----------DERECHO--------------------------

DERECHA: JB 0

EH,DERECHA1

JB 0FH,DERECHA2

JB 10H,DERECHA3

JB 11H,DERECHA4

RET ;DESPLAZAMIENTO A LA DERECHA

DERECHA1: CLR 0EH

SETB 0FH

RET

DERECHA2: CLR 0FH

SETB 10H

RET

DERECHA3: CLR 10H

SETB 11H

RET

DERECHA4: CLR 11H

SETB 0EH

RET

;--------------------------------IZQUIERDA -----------------------

IZQUIERDA: JB 0EH,IZQUIERDA1

JB 0FH,IZQUIERDA2

JB 10H,LEFT3

JB 11H,LEFT4

RET ;desplazamiento a la izquierda

LEFT1: SETB 11H

CLR 0EH

RET

IZQUIERDA2: SETB 0EH

CLR 0FH

RET

IZQUIERDA3: SETB 0FH

CLR 10H

RET

IZQUIERDA4: AJUSTE 10H

CLR 11H

RET

; ----------------------------------MUDO--------------

MUTE: setb k_ON

CPL 06H ;MUTE

CLR 08H

RET

;---- ---- ------- --------------DISPLAY APAGADO--------

DIS_OFF:CLR ET1

CPL 05H

JNB 05H,REDORE

SETB ET1

REDORE: RET

;----- -- ---- ------------------------------- Inicialización 1302

SET1302: CLR RST; enero 1, 2002 12:00:00

p>

CLR LED3CLK

MOV SEGUNDO,#0

MOV 61H,#0 <

MOV 62H,#18;

MOV 63H,#1

MOV 64H,#1

MOV 65H,#1

MOV 66H,#2

SETB RST

MOV A, #8EH

LCALL R_BIT

MOV A,

MOV A, #00H

LCALL R_BIT

SETB LED3CLK

CLR RST

MOV R0, #SECOND

MOV R7, #7

MOV R1, #80H

SET1302A.CLR PRIMERO

CLR LED3CLK

SETB PRIMERO

MOV A,R1

p>

LCALL R_BIT

MO

V A,@R0

LCALL R_BIT

INC R0

INC R1

INC R1

SETB LED3CLK

CLR RST

DJNZ R7, SET1302A

CLR RST

CLR LED3CLK

sETB LED3CLK

nop

CLR RST

nop

clr led3clk

SETB RST

MOV A,# 90H

LCALL R_BIT

MOV A,#10100101B; configuración del cargador

LCALL R_BIT

SETB LED3CLK

CLR RST

CLR LED3CLK

SETB RST

MOV A, #8EH

LCALL R_BIT

MOV A ,#80H

LCALL R_BIT

SETB LED3CLK

CLR RST

RET

;--- - ----------------- Leer una RAM ------

T_6061: CLR RST

CLR LED3CLK

SETB RST

MOV A,R1

LCALL R_BIT

LCALL W_BIT

SETB LED3CLK

CLR PRIMERO

RET

;--------------------------

R_ 1302: MOV R0,#SEGUNDO

MOV R7,#7

MOV R1,#81H

R_1302A: CLR PRIMERO

CLR LED3CLK

SETB RST

MOV A,R1

LCALL R_BIT

LCALL W_BIT

LCALL W_BIT

p>

MOV @R0,

INC R0

INC R1

INC R1

SETB LED3CLK

CLR RST

DJNZ R7,R_1302A

RET

;------------ ------R_BIT ------------------

R_BIT:MOV R4,#8

R_BIT1: RRC A

MOV LED4IO,C

SETB LED3CLK

CLR LED3CLK

DJNZ R4,R_BIT1

RET

;- ------------------W_BIT-----------------------

W_BIT : MOV R4,#8

W_ BIT1:MOV C,LED4IO

RRC A

SETB LED3CLK

CLR LED3CLK

DJNZ R4,W_BIT1

RET

;------------------- ------- ---- ---

------------------

BCD_HEX:

MOV A,6FH

ANL A,#0FH

MOV B,A

MOV A,6FH

MOV 6FH,B

SWAP A

ANL A ,#0FH

MOV B,#0AH

MUL AB

AÑADIR A,6FH

;MOV 6FH,A

RET

HEX_BCD:

MOV A,6FH

MOV B,#10

DIV AB

CAMBIAR A

AÑADIR A,B

;MOV 6FH,A

RET

;----- Escriba una dirección: R1 es la dirección, R0 son los datos ----------

SETONE: CLR LED3CLK

CLR RST

CLR LED3CLK

NOP

SETB RST

MOV A,#8EH

LCALL R_BIT

MOV A, #00H

LCALL R_BIT

SETB.LED3CLK

CLR RST

CLR LED3CLK

NOP

CLR RST

CLR LED3CLK

SETB RST

MOV A,R1

LCALL R_BIT

MOV A, R0

LCALL R_BIT

NOP

SETB LED3CLK

CLR RST

NOP

CLR RST

CLR LED3CLK

SETB RST <

MOV A, #8EH

LCALL R_BIT

MOV A,#80H

LCALL R_BIT

SETB LED3CLK

CLR RST

RET.