Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CERO EQU 50H
- UNO EQU 51H
- DOS EQU 52H
- TRES EQU 53H
- CUATRO EQU 54H
- CINCO EQU 55H
- SEIS EQU 56H
- SIETE EQU 57H
- OCHO EQU 58H
- NUEVE EQU 59H
- AHOR EQU 60H
- AMIN EQU 61H
- HOR EQU 63H
- MIN EQU 64H
- COUNT EQU 65H
- DISSEG EQU 67H
- DISMIN EQU 68H
- DISHOR EQU 69H
- BANCONFIGH EQU 71H
- BANCONFIGA EQU 72H
- AF EQU 7FH ;Bandera de alarma/reloj
- ORG 0000H ;RESET
- SJMP INICIO
- ORG 0003H ;EXTERNA 0
- ;CONFIGURAR HORA
- CPL AF
- SETB P0.7
- RETI
- ORG 000BH ;TEMPORIZADOR 0
- ;INTERRUPCION 62500us
- JMP INTT0
- ORG 0013H ;EXTERNA 1
- ;AUMENTA MINUTOS
- JMP ISREXT1
- ORG 001BH ;TEMPORIZADOR 1
- ;INTERRUPCION GTV
- JMP GTV
- RETI
- ORG 0040H
- INICIO: MOV R7,#0FEH
- MOV 26H,#0FFH
- ;INICIALIZAMOS LA TABLA OARA LOS DISPLAY
- MOV CERO,#0C0H
- MOV UNO,#0F9H
- MOV DOS,#0A4H
- MOV TRES,#0B0H
- MOV CUATRO,#99H
- MOV CINCO,#92H
- MOV SEIS,#82H
- MOV SIETE,#0F8H
- MOV OCHO,#80H
- MOV NUEVE,#98H
- ;INICIALIZAMOS LA TABLA PARA LA HORA Y MINUTOS DE LA ALARMA
- MOV AHOR,#00H
- MOV AMIN,#00H
- ;INICIALIZAMOS LA HORA ACTUAL
- ;MOV A,#0CH
- ;ADD A,#0
- ;DA A
- ;MOV R4,A
- SETB AF
- MOV R0,#00H
- MOV R1,#00H
- MOV R2,#00H
- MOV R3,#00H
- MOV R4,#12H
- MOV DISSEG,#00H
- MOV DISMIN,#00H
- MOV DISHOR,#12H
- MOV IE,#10001111B
- MOV TH1,#-200
- MOV TL1,#-200
- MOV TH0,#HIGH(-49984)
- MOV TL0,#LOW(-49984)
- MOV TMOD,#00100001B ;T0 Modo1
- ;MOV TMOD,#00100010B ;T0 Modo2
- MOV TCON,#01010000B
- SETB IT0
- SETB IT1
- ;R2 SEGUNDOS
- ;R3 MINUTOS
- ;R4 HORAS
- CICLOSINFIN: JNB 2FH,CHECKP
- MOV A,R4
- CJNE A,AHOR,CHECKP
- MOV A,R3
- CJNE A,AMIN,CHECKP
- ;MOV P0,#0FEH
- CLR P0.7
- MOV 20H,R3
- INC 20H
- MOV A,R3
- CJNE A,20H,$
- ;MOV P0,#0FFH
- SETB P0.7
- CHECKP: JB P0.1,CICLOSINFIN
- CPL 2FH
- DJNZ 26H,$
- MOV 26H,#0FFH
- JMP CICLOSINFIN
- INTT0: CLR TF0
- INC R1
- CJNE R1,#20,NEXT1
- MOV R1,#00H
- INC R2 ;R2 SEGUNDOS
- MOV A,R2
- ADD A,#0
- DA A
- MOV R2,A
- JNB AF,MHS
- MOV DISSEG,#00H ;SE MUESTRAN 00 SEGUNDOS SI ESTA ACTIVA EL DISPLAY DE LA ALARMA
- JMP CM
- MHS: MOV DISSEG,R2 ;SI SE MUESTRA LA HORA ACTUAL
- CM: CJNE R2,#60H,MINUTOS ;--------CHECA LA H
- ;CJNE R2,#60,MINUTOS
- MOV R2,#0H
- INC R3 ;R3 MINUTOS
- MOV A,R3
- ADD A,#0
- DA A
- MOV R3,A
- JNB AF,MHM
- MOV DISMIN,61H ;MUESTRA LO QUE ESTÁ EN LA ALARMA
- JMP MINUTOS
- MHM: MOV DISMIN,R3
- MINUTOS: CJNE R3,#60H,HORAS
- MOV R3,#0H
- INC R4 ;R4 HORAS
- MOV A,R4
- ADD A,#0
- DA A
- MOV R4,A
- HORAS: CJNE R4,#24H,NEXT1
- MOV R4,#0H
- NEXT1: JNB AF,MHH
- MOV DISHOR,60H
- JMP RETTT
- MHH: MOV DISHOR,R4
- RETTT: MOV TH0,#HIGH(-49984)
- MOV TL0,#LOW(-49984)
- ;MOV TH0,#HIGH(-50000)
- ;MOV TL0,#LOW(-50000)
- RETI
- ;VER QUE DATO ENVIAMOS POR EL PUERTO 1
- DATO: CJNE R7,#0DFH,CMPH1 ;MOSTRAMOS DECENA DE HORA
- ;MOV 05,R4
- MOV 05,DISHOR
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPH1: CJNE R7,#0EFH,CMPM0 ;MOSTRAMOS UNIDAD DE HORA
- ;MOV 05,R4
- MOV 05,DISHOR
- ANL 05H,#00001111B
- MOV A,R5
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPM0: CJNE R7, #0F7H,CMPM1 ;MOSTRAMOS DECENA DE MINUTO
- ;MOV 05,R3
- MOV 05,DISMIN
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPM1: CJNE R7, #0FBH, CMPS0 ;MOSTRAMOS UNIDAD DE MINUTO
- ;MOV 05,R3
- MOV 05,DISMIN
- ANL 05H,#00001111B
- MOV A,R5
- ADD A, #50H
- MOV R0,A
- MOV P2,@R0
- CMPS0: CJNE R7, #0FDH, CMPS1 ;MOSTRAMOS DECENA DE SEGUNDO
- ;MOV 05,R2
- MOV 05,DISSEG
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPS1: CJNE R7, #0FEH, RETURN ;MOSTRAMOS UNIDAD DE SEGUNDO
- ;MOV 05,R2
- MOV 05,DISSEG
- ANL 05H,#00001111B
- MOV A,R5
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- RETURN: RET
- ISREXT1: SETB P0.7
- JNB AF, E1ISRA ;Si AF es UNO, cambia a una subrutina para aumentar la alarma
- MOV A, R3
- CJNE A, #59H, ADD1 ;Si los minutos NO son 59, llama a una subrutina para aumentarlos en 1
- MOV R3, #0 ;Si son 59, los cambia a 0, e intenta aumentar horas
- MOV A, R4
- CJNE A, #23H, ADD2 ;Si las horas NO son 23, llama a una subrutina para aumentarlos en 1
- MOV R4, #0 ;Si son 23 los vuelve 0
- JMP RETURN3
- ADD1: ADD A, #1 ;Aumenta una minuto
- DA A
- MOV R3, A
- JMP RETURN3
- ADD2: MOV A, R4
- ADD A, #1 ;Aumenta una hora
- DA A
- MOV R4, A
- JMP RETURN3
- ;Subrutina para aumentar tiempo de la alarma
- E1ISRA: MOV A, AMIN ;Intenta aumentar cada valor del display de la alarma, si puede haber desborde,
- CJNE A, #59H, ADD5 ;se sigue con el siguiente valor
- MOV AMIN, #0
- MOV A, AHOR
- CJNE A, #23H, ADD6
- MOV AHOR, #0
- ADD5: ADD A, #1 ;Aumenta en uno la parte baja de los minutos
- DA A
- MOV AMIN, A
- JMP RETURN3
- ADD6: ADD A, #1 ;Aumenta en uno la parte alta de las horas
- DA A
- MOV AHOR, A
- JMP RETURN3
- RETURN3: RETI
- GTV: CLR TF1
- MOV A,R7
- RL A
- MOV R7,A
- MOV P1,R7
- ;JB AF,MOSALARMA
- ;CALL DATO
- ;JMP NEXT
- ;CALL ALARMA;
- JB AF,MOSDATO
- MOV DISHOR,60H
- MOV DISMIN,61H
- MOV DISSEG,#00H
- MOV A,DISHOR
- ADD A,#00H
- DA A
- MOV DISHOR,A
- MOV A,DISMIN
- ADD A,#00
- DA A
- MOV DISMIN,A
- CALL DATO
- JMP NEXT
- MOSDATO: MOV DISHOR,R4
- MOV DISMIN,R3
- MOV DISSEG,R2
- CALL DATO
- NEXT: RETI
- /**********************************************************************************************/
- /****************************NO ESTA TAN BIEN SOLUCIÓN FEA*************************************/
- /**********************************************************************************************/
- /*
- ALARMA: CJNE R7,#0DFH,CMPH1A ;MOSTRAMOS DECENA DE HORA
- ;MOV 05,R4
- MOV 05,AHOR
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPH1A: CJNE R7,#0EFH,CMPM0A ;MOSTRAMOS UNIDAD DE HORA
- ;MOV 05,R4
- MOV 05,AHOR
- ANL 05H,#00001111B
- MOV A,R5
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPM0A: CJNE R7, #0F7H,CMPM1A ;MOSTRAMOS DECENA DE MINUTO
- ;MOV 05,R3
- MOV 05,AMIN
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPM1A: CJNE R7, #0FBH, CMPS0A ;MOSTRAMOS UNIDAD DE MINUTO
- ;MOV 05,R3
- MOV 05,AMIN
- ANL 05H,#00001111B
- MOV A,R5
- ADD A, #50H
- MOV R0,A
- MOV P2,@R0
- CMPS0A: CJNE R7, #0FDH, CMPS1A ;MOSTRAMOS DECENA DE SEGUNDO
- ;MOV 05,R2
- MOV 05,DISSEG
- ANL 05H,#11110000B
- MOV A,R5
- SWAP A
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- CMPS1A: CJNE R7, #0FEH, RETURNA ;MOSTRAMOS UNIDAD DE SEGUNDO
- ;MOV 05,R2
- MOV 05,DISSEG
- ANL 05H,#00001111B
- MOV A,R5
- ADD A,#50H
- MOV R0,A
- MOV P2,@R0
- RETURNA: RET
- */
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement