Bueno intente subir una foto como archivo ajunto pero me dice que no hay espacio suficiente para cargarla. de todos modos aqui esta el asm y las instrucciones de uso la foto pueden pedirmela a mi email---->
ojendez@hotmail.com y con gusto se las mando... espero les sirva..
;Relog despertador
AJUSTV EQU 09FH ;SI ATRASA HAY QUE BAJAR ESTE NUMERO
REFRESV EQU 011H
VAR1V EQU 0C8H
VAR2V EQU 14H
SEGV EQU 3CH
FSR EQU 04H
INDF EQU 00H
CUENTA1 equ 0Ch
CUENTA2 EQU 0DH
CUENTA3 EQU 0EH
DISP1 EQU 0FH
DISP2 EQU 10H
VAR1 EQU 11H
VAR2 EQU 12H
SEG EQU 13H
MIN EQU 14H
HOR EQU 15H
ACU EQU 16H
REFRES EQU 17H
STAT EQU 18H
AJUST EQU 19H
AL_HOR EQU 20H
HORAL EQU 21H
MINAL EQU 22H
HORAL2 EQU 23H
MINAL2 EQU 24H
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 05H
TRISB EQU 06H
TMR0 EQU 01H ;AQUI SE PONE LO Q QUIERES QUE CUENTE EL TIMER (BANCO 0)
INTCON EQU 0BH
F EQU 1
W EQU 0
ORG 00H
GOTO INICIO
ORG 04H
MOVWF ACU
MOVLW 0DH ;CON 0DH SALTA LA INTERRUPCION CADA 250 uSEG (CON CRISTAL 4MHZ)
MOVWF TMR0
MOVF STATUS,W
MOVWF STAT
BTFSS AL_HOR,2
GOTO AJUAJU
BTFSS PORTA,0
GOTO SON1
BCF PORTA,0
GOTO AJUAJU
SON1 BSF PORTA,0
AJUAJU DECFSZ AJUST,F
GOTO BLABLA
MOVLW 04H
ADDWF TMR0
MOVLW AJUSTV
MOVWF AJUST
BLABLA DECFSZ REFRES,F
GOTO CONT
MOVLW REFRESV
MOVWF REFRES
BTFSc PORTB,4 ;ESCRIBE EN DISPLAYS
GOTO ESCDIS2
BTFSc PORTB,5
GOTO ESCDIS3
BTFSc PORTB,6
GOTO ESCDIS4
BTFSC PORTB,7
GOTO ESCDIS1
GOTO ESCDIS2
ESCDIS1 BTFSC AL_HOR,1
GOTO BORRA
SWAPF HOR,W
BTFSC AL_HOR,0
SWAPF HORAL,W
ANDLW 0FH
BTFSC STATUS,2
GOTO BORRA
IORLW 10H
MOVWF PORTB
GOTO CONT
BORRA CLRF PORTB
GOTO CONT
ESCDIS2 BTFSC AL_HOR,1
GOTO BORRA
MOVF HOR,W
BTFSC AL_HOR,0
MOVF HORAL,W
ANDLW 0FH
IORLW 20H
MOVWF PORTB
GOTO CONT
ESCDIS3 BTFSC AL_HOR,1
GOTO BORRA
SWAPF MIN,W
BTFSC AL_HOR,0
SWAPF MINAL,W
ANDLW 0FH
IORLW 40H
MOVWF PORTB
GOTO CONT
ESCDIS4 BTFSC AL_HOR,1
GOTO BORRA
MOVF MIN,W
BTFSC AL_HOR,0
MOVF MINAL,W
ANDLW 0FH
IORLW 80H
MOVWF PORTB
CONT DECFSZ VAR1,F ;CONTABILIZA
GOTO SAL1
MOVLW VAR1V
MOVWF VAR1
DECFSZ VAR2,F
GOTO SAL1
MOVLW VAR2V
MOVWF VAR2
INCSEG DECFSZ SEG,F ;CUENTA SEGUNDOS
GOTO SAL1
MOVLW SEGV
MOVWF SEG
INCMIN INCF MIN,F
MOVF MIN,W ;VA A MIRAR SI MIN<60H
BCF STATUS,0
SUBLW 59H
BTFSS STATUS,0
GOTO MIN0 ;HAY QUE IR A PONER MIN A CERO e incrementar hor
BCF STATUS,0
MOVF MIN,W ;VA A MIRAR SI MIN ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO SAL
MOVLW 06H
ADDWF MIN,F
MOVLW 0F0H
ANDWF MIN,F
SAL BTFSC AL_HOR,3
CALL MIRAL
SAL1 MOVF STAT,W
MOVWF STATUS
MOVF ACU,W
BCF INTCON,2
RETFIE
MIRAL MOVF MINAL,W
BTFSC AL_HOR,5
MOVF MINAL2,W
SUBWF MIN,W
BTFSC STATUS,2
GOTO MIRHOR
RETURN
MIRHOR MOVF HORAL,W
BTFSC AL_HOR,5
MOVF HORAL2,W
SUBWF HOR,W
BTFSC STATUS,2
BSF AL_HOR,4
RETURN
MIN0 CLRF MIN
INCF HOR,F
BCF STATUS,0
MOVF HOR,W
SUBLW 23H
BTFSS STATUS,0
GOTO HOR0 ;HAY QUE IR A PONER HOR A CERO
BCF STATUS,0
MOVF HOR,W ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO SAL
MOVLW 06H
ADDWF HOR,F
MOVLW 0F0H
ANDWF HOR,F
GOTO SAL
HOR0 CLRF HOR
GOTO SAL
INICIO BCF PORTA,0
CLRF HORAL
CLRF MINAL
CLRF AL_HOR
MOVLW AJUSTV
MOVWF AJUST
MOVLW REFRESV
MOVWF REFRES
MOVLW VAR1V
MOVWF VAR1 ;VAR1 SE CARGA CON 200
MOVLW VAR2V
MOVWF VAR2 ;VAR2 SE CARGA CON 20
MOVLW SEGV
MOVWF SEG
CLRW
MOVWF MIN
MOVWF PORTB
MOVWF HOR
BCF INTCON,2 ;FLAG DE DESBORDAMIENTO DE TMR0 (PONER A CERO POR SOFTWARE)
BSF INTCON,5 ;PERMITE INTERRUPCION POR DEBORDAMIENTO DE TMR0
BSF INTCON,7 ;PERMITE INTERRUPCIONES
BSF STATUS,5
CLRW
MOVWF TRISB
MOVLW 1EH
MOVWF TRISA
BCF 01H,5
BCF STATUS,5
CLRF TMR0
GOTO PULSA1
REP BTFSS PORTA,4
GOTO CAMBHOR
BTFSS PORTA,3
GOTO CAMBAL
BTFSS PORTA,2
CALL MUEAL
BTFSS PORTA,1
GOTO CONECAL
BCF AL_HOR,3
BCF AL_HOR,4
BCF AL_HOR,2
BCF PORTA,0
BCF AL_HOR,5
REP1 BTFSC AL_HOR,4
GOTO SONAR
GOTO REP
REBOT MOVLW 0FFH ;PARA PROBLEMAS CON LOS REBOTES
MOVWF CUENTA1
REBO DECFSZ CUENTA1,F
GOTO REBO
RETURN
SONAR MOVLW 08H
MOVWF CUENTA3
SONAR1 CALL DELAY3
MOVLW 04H
XORWF AL_HOR,F ;permuta el bit 2 de al_hor
BTFSS PORTA,2
GOTO SALSON
BTFSC PORTA,1
GOTO REP
DECFSZ CUENTA3,F
GOTO SONAR1
CALL DELAY3
CALL DELAY3
CALL DELAY3
CALL DELAY3
GOTO SONAR
SALSON BCF AL_HOR,4 ;AQUI HAY QUE PARAR LA ALARMA PERO Q VUELVA A SONAR
BCF AL_HOR,2
BCF PORTA,0
MOVF HORAL,W
BTFSC AL_HOR,5
MOVF HORAL2,W
MOVWF HORAL2
MOVF MINAL,W
BTFSC AL_HOR,5
MOVF MINAL2,W
ADDLW 05H
MOVWF MINAL2
BCF STATUS,0
SUBLW 59H
BTFSS STATUS,0
GOTO REBA ;HAY QUE sumar 6 y and por 0f, e incrementar horal2, y bsf al_hor,5
BCF STATUS,0
MOVF MINAL2,W
ANDLW 0FH
SUBLW 09H
BTFSS STATUS,0
GOTO SUMA6
SALSON2 CALL REBOT
SALSON1 BTFSS PORTA,2
GOTO SALSON1
BSF AL_HOR,5
CALL REBOT
GOTO REP
SUMA6 MOVLW 06H
ADDWF MINAL2,F
GOTO SALSON2
REBA MOVLW 06h
ADDWF MINAL2,W
ANDLW 0FH
MOVWF MINAL2
INCF HORAL2,W
MOVWF HORAL2
BCF STATUS,0
SUBLW 23H
BTFSS STATUS,0
GOTO REBA2 ;poner a cero horal2
BCF STATUS,0
MOVF HORAL2,W
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO SALSON2
MOVLW 06H
ADDWF HORAL2,F
GOTO SALSON2
REBA2 CLRF HORAL2
GOTO SALSON2
DELAY3 CLRF CUENTA1
MOVLW 01FH
MOVWF CUENTA2
DELAY4 DECFSZ CUENTA1
GOTO DELAY5
DECFSZ CUENTA2
GOTO DELAY4
RETURN
DELAY5 BTFSC PORTA,1
RETURN
GOTO DELAY4
CONECAL BSF AL_HOR,3
GOTO REP1
CAMBHOR CALL DELAY
BTFSC PORTA,4
GOTO REP
CALL PARPAD
SUELTA1 BTFSS PORTA,4 ;ESPERA A QUE SE SUELTE EL BOTON
GOTO SUELTA1
PULSA1 CALL DELAY2
BTFSS PORTA,4 ;ESPERA A Q SE PULSE
GOTO INCREM
BTFSS PORTA,3
GOTO INCREH
BTFSS PORTA,2
GOTO SALHOR
CALL PARPAD
GOTO PULSA1
INCREM CALL REBOT
BTFSC PORTA,4
GOTO PULSA1
BCF STATUS,0
INCF MIN,F
MOVF MIN,W
BCF STATUS,0
SUBLW 59H
BTFSS STATUS,0
GOTO MIN02 ;HAY QUE IR A PONER MIN A CERO E IR A INCREM
BCF STATUS,0
MOVF MIN,W ;VA A MIRAR SI MIN ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO INCREM1
MOVLW 06H
ADDWF MIN,F
MOVLW 0F0H
ANDWF MIN,F
GOTO INCREM1
MIN02 CLRF MIN
INCREM1 CALL DELAY1
GOTO INCREM
INCREH CALL REBOT
BTFSC PORTA,3
GOTO PULSA1
INCF HOR,F
MOVF HOR,W
BCF STATUS,0
SUBLW 23H
BTFSS STATUS,0
GOTO HOR02 ;HAY QUE IR A PONER HOR A CERO
BCF STATUS,0
MOVF HOR,W ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO INCREH1
MOVLW 06H
ADDWF HOR,F
MOVLW 0F0H
ANDWF HOR,F
GOTO INCREH1
CAMBAL CALL DELAY
BTFSC PORTA,3
GOTO REP
CALL PARPAD
BSF AL_HOR,0
ACA BTFSS PORTA,3
GOTO ACA
PULSA2 CALL DELAY2
BTFSS PORTA,4
GOTO INMINAL
BTFSS PORTA,3
GOTO CAHORAL
BTFSS PORTA,2
GOTO SALAL
CALL PARPAD
GOTO PULSA2
INMINAL BCF AL_HOR,5
CALL REBOT
INMINA2 BTFSC PORTA,4
GOTO PULSA2
INCF MINAL,F
MOVF MINAL,W
BCF STATUS,0
SUBLW 59H
BTFSS STATUS,0
GOTO MINAL0 ;HAY QUE IR A PONER MINAL A CERO E IR A INCREM
BCF STATUS,0
MOVF MINAL,W ;VA A MIRAR SI MINAL ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO INMINA3
MOVLW 06H
ADDWF MINAL,F
GOTO INMINA3
MINAL0 CLRF MINAL
INMINA3 CALL DELAY1
GOTO INMINA2
CAHORAL BCF AL_HOR,5
CALL REBOT
CAHORA2 BTFSC PORTA,3
GOTO PULSA2
INCF HORAL,F
MOVF HORAL,W
BCF STATUS,0
SUBLW 23H
BTFSS STATUS,0
GOTO HORAL0 ;HAY QUE IR A PONER HORAL A CERO
BCF STATUS,0
MOVF HORAL,W ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
ANDLW 0FH
SUBLW 09H
BTFSC STATUS,0
GOTO CAHORA3
MOVLW 06H
ADDWF HORAL,F
GOTO CAHORA3
SALAL BCF AL_HOR,0
SUELTA3 BTFSS PORTA,2
GOTO SUELTA3
GOTO REP
HORAL0 CLRF HORAL
CAHORA3 CALL DELAY1
GOTO CAHORA2
HOR02 CLRF HOR
INCREH1 CALL DELAY1
GOTO INCREH
SALHOR BTFSC PORTA,2
GOTO REP
GOTO SALHOR
DELAY MOVLW 06H
GOTO DEL
DELAY1 MOVLW 02H ;SE REGULA LA VELOCIDAD DE CAMBIAR LA HORA
GOTO DEL
DELAY2 MOVLW 01H
DEL MOVWF CUENTA3
JOD MOVLW 0FFH
MOVWF CUENTA1
JODER MOVLW 0FFH
MOVWF CUENTA2
JODE DECFSZ CUENTA2,F
GOTO JODE
DECFSZ CUENTA1,F
GOTO JODER
DECFSZ CUENTA3,F
GOTO JOD
RETURN
PARPAD BSF AL_HOR,1 ;SUBRUTINA QUE HACE UN PARPADEO
CALL DELAY2
BCF AL_HOR,1
RETURN
MUEAL CALL PARPAD ;MUESTRA UNOS INSTANTES LA HORA DE LA ALARMA
BSF AL_HOR,0
MUEAL2 BTFSS PORTA,2
GOTO MUEAL2
CALL DELAY
BCF AL_HOR,0
CALL PARPAD
RETURN
END
Despertador Instrucciones de uso
Aunque en el esquema no aparece, el integrado 7448 ha de ser alimentado a 5V, el pin 16 a 5V y el 8 a masa.
Los displays son de cátodo común (los cátodos de todos los segmentos están unidos entre si) y se conectan de la siguiente forma: los ánodos del segmento "a" de cada uno de los displays conectados entre si. los ánodos del segmento "b" de cada uno de los displays conectados entre si, los ánodos del segmento "c" de cada uno de los displays conectados entre si.... y así con todos los segmentos. Y los cátodos (comunes) de cada uno de los displays van por separado a un transistor diferente.
Según esto parece que todos los displays se tendrían que encender con el mismo numero, pero no es así ya que el PIC va encendiendo cada display de uno en uno y con el numero que le corresponde de forma muy rápida, de tal forma que a nosotros nos parece que están todos los displays encendidos a la vez. Esto es una práctica muy común y es muy útil para ahorrarnos cableado y pines del PIC, imagínate la cantidad de pines que tendría que tener si manejáramos todos los segmentos de todos los displays por separado...
Instrucciones de Uso:Cuando enchufes el despertador te saldrán los números del display parpadeando. Si pulsas el botón 3 cambias los minutos y si pulsas el botón 2 cambias la hora. Cuando hallas acabado pulsas el botón 1 y deja de parpadear indicando que la hora ya ha sido ajustada.
Para cambiar la hora en cualquier momento: mantener pulsado el botón 3 durante un segundo (aprox.). Luego pulsar el botón 3 para los minutos y el botón 2 para las horas. Cuando hayas acabado pulsa el botón 1.
Para cambiar la hora de la alarma: mantener pulsado el botón 2 durante un segundo (aprox.). Luego pulsar el botón 3 para los minutos y el botón 2 para las horas. Cuando hayas acabado pulsa el botón 1.
Para ver a que hora tienes puesta la alarma: Pulsar el botón 1, la hora de la alarma aparecerá durante unos segundos.
Para que la alarma suene a la hora deseada: Accionar el interruptor de manera que se encienta el LED. Si el LED esta encendido la alarma sonará a la hora prevista, si esta apagado no sonará.
Cuando la alarma este sonando: para pararla definitivamente accionar el interruptor (apagándose el LED). También se puede parar pulsando el botón 1, pero volverá a sonar a los 5 minutos.