elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Temporizador para insoladora
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Temporizador para insoladora  (Leído 23,893 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Temporizador para insoladora
« Respuesta #10 en: 20 Diciembre 2010, 16:32 pm »

Hola:

He estado comprobando en pareja con el 16F88 y 16F84A. Son por temas de interrupciones y hay que corregirlo, parece fácil y llevo tiempo.

Capturas:

    * Ver paso 1 - Enciende los PIC.
    * Ver paso 2 - Pulsa el botón RB7. Por ahora las intrrupciones son iguales.
    * Ver paso 3 - Pulsa el botón RB6. Sigue con los mismos bits.
    * Ver paso 4 - Pulsa RB7. El bits RBIE del 16F88 está en 0 y del 16F84A en 1.
    * Ver paso 5 - Con RB7 para el 16F84A cuenta atrás bien, el 16F88 no puede contar.


Eso es todo lo que he descubierto. Voy a investigar si es posible arreglar estas cosas. Cualquier auyda es bien recibida.

Saludo.


En línea

yarboclo

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: Temporizador para insoladora
« Respuesta #11 en: 31 Enero 2011, 21:29 pm »

Hola a todos,
yo también me estoy peleando con el temporizador de ese libro.
Tokes o Meta, me podéis pasar el código original modificado para que pueda contar más tiempo? Yo solo no consigo adaptarlo.

Gracias de antemano.


En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Temporizador para insoladora
« Respuesta #12 en: 10 Febrero 2011, 03:58 am »

Cuando pueda te lo paso.
En línea

yarboclo

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: Temporizador para insoladora
« Respuesta #13 en: 17 Febrero 2011, 21:06 pm »

Oki, espero tu mensaje.
Gracias :rolleyes:
En línea

f2v

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Temporizador para insoladora
« Respuesta #14 en: 25 Septiembre 2011, 12:19 pm »

Hola amigos estoy intentando hacer el temporizador pero soy principiante en asm. Agradeceria me manden el asm y el hex de este temporizador.
Muchas gracias por su tiempo y Sal2....
En línea

markitosb

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Temporizador para insoladora
« Respuesta #15 en: 8 Enero 2012, 14:45 pm »

hola  me pueden paras el codigo hex del temporisador  yo  tengo uno  con atmega
solo qe no tengo el grabador si desean subo el  proyecto completo gracias ;-)
En línea

elcerouno

Desconectado Desconectado

Mensajes: 5


Ver Perfil
temporizador 24 horas
« Respuesta #16 en: 24 Septiembre 2015, 19:09 pm »

hola alguien me puede ayudar y principiante en pic quiero hacer un temporizador programable a 24 horas que pongas el tiempo que quieras prenda un led y al terminar ese tiempo lo apague, vi los ejemplos de un temporizador pero solo llega a 4 min 15 seg espero puedan ayudarme dejo el ejemplo


                                LIST      P=16F84A
                                INCLUDE   <P16F84A.INC>

            __CONFIG   _CP_OFF   &   _WDT_OFF   &   _PWRTE_ON   &   _XT_OSC
   
     
     CBLOCK 0x0C
     TiempoDeseado
     Tiempo
     FlagsModo
     ENDC
     
     ORG    0x2100               
     DE     0x00               

#DEFINE   F_Temporizador_ON       FlagsModo,2
#DEFINE   F_Temporizador_Ajuste   FlagsModo,1
#DEFINE   F_Temporizador_OFF      FlagsModo,0

#DEFINE    SalidaTemporizador     PORTB,1
#DEFINE    Zumbador               PORTB,2
#DEFINE    AjustePulsador         PORTB,7
#DEFINE    IncrementarPulsador    PORTB,6

; ZONA DE CÓDIGOS ********************************************************************

             ORG   0
             goto  Inicio
             ORG   4
             goto  ServicioInterrupcion

Mensajes
            addwf        PCL,F


Mensaje_ON
            DT "EN FUNCION",0x00
Mensaje_Ajuste
            DT "TIEMPO DECEADO",0x00
Mensaje_OFF
            DT "   RECARGAR",0x00

;interrupcion de inicio
           

Inicio
            call    LCD_Inicializa
            movlw   Mensaje_Inicio
            call    LCD_MensajeMovimiento
            call    Retardo_500ms
            call    Retardo_500ms
            call    Retardo_500ms
         
            movlw   Mensaje_nollave
            call    LCD_MensajeMovimiento
            call    Retardo_500ms
            call    Retardo_500ms
            call    Retardo_500ms
            call    Retardo_500ms
            call    Retardo_500ms
             
            bsf     STATUS,RP0
            movlw   b'00000111'
            movwf   OPTION_REG
            bsf     AjustePulsador
            bsf     IncrementarPulsador
            bcf     SalidaTemporizador
            bcf     Zumbador
            bcf     STATUS,RP0
            clrw
            call    EEPROM_LeeDato
            movwf   TiempoDeseado
            call    ModoTemporizador_OFF
            movlw   b'10001000'
            movwf   INTCON
Principal
           
             
           
              goto     Principal

;subrrutinasdeservicioInterrupcion------------------------------------------
             
             
           



ServicioInterrupcion
                     
                       
                      btfsc        INTCON,T0IF
                      call         Temporizador
                      btfss        INTCON,RBIF
                      goto         FinInterrupcion
                   
                      btfss        AjustePulsador
                      call         CambiarModo
                      btfsc        IncrementarPulsador
                      goto         FinInterrupcion

                      call         Retardo_20ms
                      btfsc        IncrementarPulsador
                      goto         FinInterrupcion
                      btfsc        F_Temporizador_OFF
                      call         ModoTemporizador_ON
                      btfsc        F_Temporizador_Ajuste
                      call         IncrementarTiempoDeseado
FinInterrupcion
                      bcf          INTCON,RBIF
                      bcf          INTCON,T0IF
                      retfie

;subrrutinasCambiarModo------------------------------------------------------------

CambiarModo
             call      PitidoCorto
             btfsc     AjustePulsador
             goto      EsperaDejePulsar
             btfsc     F_Temporizador_OFF
             goto      ModoTemporizador_Ajuste
             btfss     F_Temporizador_Ajuste
             goto      ModoTemporizador_OFF
 
             clrw
             movwf    EEADR
             movf     TiempoDeseado,W
             call     EEPROM_EscribeDato



ModoTemporizador_OFF
                       bcf   SalidaTemporizador
                       call  Pitido
                       movlw  b'00000001'
                       movwf  FlagsModo
                       bcf    INTCON,T0IE
                       movf   TiempoDeseado,W
                       movwf  Tiempo
                       call   LCD_Borra
                       movlw  Mensaje_OFF
                       goto   FinCambiarModo
ModoTemporizador_Ajuste
                       bcf     SalidaTemporizador
                       movlw   b'00000010'
                       movwf   FlagsModo
                       clrf     Tiempo
                       clrf     TiempoDeseado
                       bcf      INTCON,T0IE
                       call     LCD_Borra
                       movlw    Mensaje_Ajuste
                       goto     FinCambiarModo
ModoTemporizador_ON
                       movf     TiempoDeseado,W
                       btfsc    STATUS,Z
                       goto     ModoTemporizador_OFF
                       movwf    Tiempo
                       call     PitidoCorto
                       movlw    b'00000100'
                       movwf    FlagsModo
                       movlw    TMR0_Carga50ms
                       movwf    TMR0
                       movlw    Carga_1s
                       movwf    Registro50ms
                       bsf      INTCON,T0IE
                       call     LCD_Borra
                       bsf      SalidaTemporizador
                       movlw    Mensaje_ON
FinCambiarModo
                call   LCD_Mensaje
                call   VisualizaTiempo
EsperaDejePulsar
                btfss   AjustePulsador
                goto    EsperaDejePulsar
                return

;SubrutinaTEMPORIZADOR

               CBLOCK
               Registro50ms
               ENDC
TMR0_Carga50ms     EQU         -d'195'
Carga_1s           EQU         d'20'

Temporizador
              call        Retardo_50micros
              call        Retardo_20micros
              nop
              movlw        TMR0_Carga50ms
              movwf        TMR0
              decfsz       Registro50ms,F
              goto         FinTemporizador
              movlw        Carga_1s
              movwf        Registro50ms
              btfss        F_Temporizador_ON
              goto         FinTemporizador
              decfsz       Tiempo,F
              goto         VisualizaContador
              bcf          SalidaTemporizador
              call         VisualizaTiempo
              call         Pitido
              call         Retardo_500ms
              call         Pitido
              call         Retardo_500ms
              call         PitidoLargo
              call         Retardo_500ms
              call         ModoTemporizador_OFF
              goto         FinTemporizador
VisualizaContador
               call        VisualizaTiempo
FinTemporizador
               return
;SubrutinaVisualizaTiempo--------------------------------------------------

VisualizaTiempo
                movlw      .5
                call      LCD_PosicionLinea2
                movf      Tiempo,W
                call      MinutosSegundos
                movf      TemporizadorMinutos,W
                call      BIN_a_BCD
                call      LCD_Byte
                movlw     ':'
                call      LCD_Caracter
                movf      TemporizadorSegundos,W
                call      BIN_a_BCD
                goto      LCD_ByteCompleto
                return
;subrutinaminutossegundos----------------------------------------------------

             CBLOCK
             TemporizadorMinutos
             TemporizadorSegundos
             ENDC

MinutosSegundos
            movwf      TemporizadorSegundos
            clrf       TemporizadorMinutos
Resta60     movlw      .60
            subwf      TemporizadorSegundos,W
            btfss       STATUS,C
            goto        FinMinutosSegundos
            movwf       TemporizadorSegundos
            incf        TemporizadorMinutos,F
            goto        Resta60
FinMinutosSegundos
            return

;subrutina incrementatiempodeseado

Saltoincremento  EQU       .5

IncrementarTiempoDeseado
                call   PitidoCorto
                movlw   Saltoincremento
                addwf   Tiempo,F
                btfsc   STATUS,C
                clrf    Tiempo
                call    VisualizaTiempo
                call    Retardo_100ms
                btfss   IncrementarPulsador
                goto    IncrementarTiempoDeseado
                movf    Tiempo,W
                movwf   TiempoDeseado
           
                return 

;subrrutinapitidolargopitidocorto

PitidoLargo
           bsf     Zumbador
           call    Retardo_500ms
Pitido     
           bsf     Zumbador
           call    Retardo_200ms
PitidoCorto
           bsf      Zumbador
           call     Retardo_20ms
           bcf      Zumbador
           return
           
           
           
               
     
           
     



         
                                INCLUDE       <RETARDOS.INC>
                                INCLUDE       <BIN_BCD.INC>
                                INCLUDE       <LCD_4BIT.INC>
                                INCLUDE     <LCD_MENS.INC>
                                INCLUDE     <EEPROM.INC>

                     END :-(
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Temporizador para insoladora
« Respuesta #17 en: 9 Octubre 2015, 02:38 am »

Hola:

No se hacerlo. Mejor funciona con Arduino UNO, es más fácil de programarlo.

El que me ayudó a ponerlo a 99:99 en unos post más atrás pero no a las 24 horas.



http://electronicavm.net/2011/06/22/temporizador-arduino-lcd/

Saludos.
En línea

elcerouno

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Temporizador para insoladora
« Respuesta #18 en: 23 Octubre 2015, 16:11 pm »

hola, primero quiero agradecer tu ayuda, dos puedes pasarme el codigo para hacer el temporizador de 99:99 programable porfavor, quisiera darle una estudiada haber si puedo hacer el de 24 hrs te lo agradecere mucho saludos
En línea

elcerouno

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Temporizador para insoladora
« Respuesta #19 en: 23 Octubre 2015, 16:23 pm »

hola de nuevo, mira tengo este codigo de un reloj de 24 horas, quise modificarlo pero lo que logre es q solo decremente los minutos y horas con los segundos acendentes ocea que si llega el segundero a 60 (no a cero) decrementa, tambien tengo el problema de que cuando decrmenta las horas en los minutos en lugar de iniciarce en 59 ejemplo 2:59:59  se inicia en 55  (2:55:60) espero me puedas ayudar

__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST      P=16F84A
   INCLUDE  <P16F84A.INC>

   CBLOCK  0x0C
   Hora               ; Guarda las horas.
   Minuto               ; Guarda los minutos.
   Segundo                     ; Guarda los segundos.
   MedioSegundo            ; Incrementa cada medio segundo.
   Registro50ms            ; Incrementa cada 50 ms
   Intermitencia            ; Para lograr la intermitencia.
   FlagsAjuste            ; Guarda los flags para establecer los
   ENDC               ; ajustes de hora y minuto.
#DEFINE  REELEVADOR         PORTB,1
#DEFINE  ModoPulsador      PORTB,7      ; Los pulsadores se conectan a estos
#DEFINE  IncrementarPulsador   PORTB,6      ; pines del Puerto B.
#DEFINE  F_AjusteHora      FlagsAjuste,1   ; Flags utilizados en la puesta en hora.
#DEFINE  F_AjusteMinuto      FlagsAjuste,0
#DEFINE  F_Intermitencia   Intermitencia,0   ; Si es 0, apaga en intermitencia.
TMR0_Carga50ms      EQU   -d'195'      ; Para conseguir la interrupción del

; ZONA DE CÓDIGOS ********************************************************************

   ORG    0
   goto   Inicio
   ORG   4
   goto   ServicioInterrupcion

Mensajes
   addwf   PCL,F
MensajePublicitario
   DT "REC:  H  M  S", 0x00

Inicio   call   LCD_Inicializa
   movlw   MensajePublicitario
   call   LCD_Mensaje
   bsf   STATUS,RP0      ; Acceso al Banco 1.
   movlw   b'00000111'      ; Prescaler de 256 para el TMR0 y habilita
   movwf   OPTION_REG      ; resistencias de Pull-Up del Puerto B.
   bsf   ModoPulsador      ; Configurados como entrada.
   bsf   IncrementarPulsador
    bcf REELEVADOR
   bcf   STATUS,RP0      ; Acceso al Banco 0.
   
    clrf   FlagsAjuste      ; Inicializa todos los flags de la puesta en hora.
   clrf   Hora         ; Inicializa todos los datos del reloj.
   clrf   Minuto
   clrf   Segundo
   clrf   MedioSegundo
   clrf   Registro50ms
   movlw   TMR0_Carga50ms      ; Carga el TMR0.
   movwf   TMR0      
   movlw   b'10101000'      ; Activa interrupción del TMR0 (TOIE), por cambio
   movwf   INTCON         ; líneas del Puerto B (RBIE) y la general (GIE).
   call   PuestaEnHoraReset   ; Puesta en hora por primera vez.
   
; La sección "Principal" es mantenimiento. Sólo espera las interrupciones.
; No se puede poner en modo de bajo consumo porque la instrucción "sleep" detiene el Timer 0.

Principal
   goto   Principal

; Subrutina "ServicioInterrupcion" ------------------------------------------------------
;
; Detecta qué ha producido la interrupción y ejecuta la subrutina de atención correspondiente.

ServicioInterrupcion
   btfsc   INTCON,T0IF      ; Si es una interrupción procedente del
   call   Reloj         ; desbordamiento del Timer 0, actualiza el reloj.
   btfss   INTCON,RBIF      ; Si es una interrupción RBI, lee los pulsadores.
   goto   FinInterrupcion
   btfss   ModoPulsador      ; ¿Está presionado el pulsador de "MODO"?
   call   PuestaEnHora      ; Sí, pasa a poner en hora.
   btfss   IncrementarPulsador   ; ¿Pulsado "INCREMENTAR"?.
   call   Incrementar      ; Sí, pasa a incrementar el registro de tiempo
FinInterrupcion            ; correspondiente.
   bcf   INTCON,RBIF
   bcf   INTCON,T0IF
   retfie

; Subrutina "Reloj" ---------------------------------------------------------------------
;
; Esta subrutina actualiza los contadores Horas, Minutos, Segundos y Registro50ms.
; Se ejecuta debido a la petición de interrupción del Timer 0 cada 50 ms.
;
; Como el PIC trabaja a una frecuencia de 4 MHz, el TMR0 evoluciona cada µs y se desborda cada
; 195 x 256 = 49920 µs. Sumádole el retardo de 71 µs y el pequeño tiempo de los saltos
; iniciales y de carga del contador, resulta un total de 50000 µs exactos. Es decir, el
; TMR0 producirá una interrupción cada 50 ms exactos, comprobado experimentalmente con la
; ventana Stopwatch del simulador del MPLAB.

Reloj   call   Retardo_50micros   ; Retardo de 71 microsegundos para
   call   Retardo_20micros   ; ajustar a 50 milisegundos exactos.
   nop
     movlw   TMR0_Carga50ms      ; Carga el Timer 0.
   movwf   TMR0
     call   IncrementaRegistro50ms
   
   btfss   STATUS,C      ; ¿Ha contado 10 veces 50 ms = 1/2 segundo?
   goto   FinReloj      ; No. Pues sale sin visualizar el reloj.
   

; Si está en "ModoAjusteHora", o "ModoAjusteMinuto" conmuta el flag de intermitencia y
; salta a visualizar el reloj.
;
   movf   FlagsAjuste,F
   btfsc   STATUS,Z
   goto   IncrementaReloj
   movlw   b'00000001'      ; Conmuta el flag F_Intermitencia cada 500 ms.
   xorwf   Intermitencia,F
   goto   ActualizaReloj      ; Visualiza el reloj y sale.
IncrementaReloj
   bsf     REELEVADOR
    bsf       F_Intermitencia      ; Se mantendrá siempre encendido durante
   call   IncrementaMedioSegundo   ; el funcionamiento normal.
   btfss   STATUS,C      ; ¿Ha pasado 1 segundo?
   goto   ActualizaReloj      ; No. Pues sale visualizando el reloj.
    call    IncrementaSegundos       ; Sí. Incrementa el segundero.
   btfss   STATUS,Z      ; ¿Han pasado 60 segundos?
   goto   ActualizaReloj      ; No. Pues sale visualizando el reloj.
   call    Decrementamin   ; Sí. Incrementa el minutero.
   btfss   STATUS,Z      ; ¿Han pasado 60 minutos?
   goto   ActualizaReloj      ; No. Pues sale visualizando el reloj.
   call    Decrementahr      ; Sí. Incrementa las horas.
ActualizaReloj
   call   VisualizaReloj      ; Visualiza el reloj.
FinReloj
   return


; Subrutina "VisualizaReloj" ------------------------------------------------------------
;
; Visualiza el reloj en la segunda línea en formato: " 8:47:39".
; Cuando se ajusta una variable, ésta debe aparecer en intermitencia. Para ello, utiliza
; el flag F_Intermitencia que conmuta cada 500 ms en la subrutina Reloj.
;
VisualizaReloj
   movlw   .4         ; Para centrar visualización
   call   LCD_PosicionLinea2   ; en la segunda línea.
   btfss   F_AjusteHora      ; ¿Está en la puesta en hora?
   goto   EnciendeHoras      ; No. Visualización normal.
   btfss   F_Intermitencia      ; Sí. Intermitencia si procede.
   goto   ApagaHoras      ; Apaga las horas en la intermitencia.
EnciendeHoras
   movf   Hora,W         ; Va a visualizar las horas.
   call   BIN_a_BCD      ; Lo pasa a BCD.
   call   LCD_Byte      ; Visualiza rechazando cero de las decenas.
   goto   VisualizaMinutos
ApagaHoras
   call   LCD_DosEspaciosBlancos   ; Visualiza dos espacios en blanco.
;
VisualizaMinutos
   movlw   ':'         ; Envía ":" para separar datos.
   call   LCD_Caracter
   btfss   F_AjusteMinuto      ; ¿Está en la puesta en hora?.
   goto   EnciendeMinutos
   btfss   F_Intermitencia
   goto   ApagaMinutos
EnciendeMinutos
   movf   Minuto,W      ; Visualiza minutos.
   call   BIN_a_BCD      ; Lo pasa a BCD.
   call   LCD_ByteCompleto
   goto   VisualizaSegundos
ApagaMinutos
   call   LCD_DosEspaciosBlancos   ; Visualiza dos espacios en blanco.
;
VisualizaSegundos
   movlw   ':'         ; Envía ":" para separar datos.
   call   LCD_Caracter
    movf   Segundo,W      ; Visualiza segundos.
    call   BIN_a_BCD      ; Lo pasa a BCD.
   call   LCD_ByteCompleto
    return
;
; Subrutina "Incrementar" ---------------------------------------------------------------
;
; Subrutina de atención a la interrupción por cambio de la línea RB6 al cual se ha conectado
; el pulsador "INCREMENTAR". Incrementa según corresponda una sola de las variables.

Incrementar
   call   Retardo_20ms      ; Espera se estabilicen niveles de tensión.   
   btfsc   IncrementarPulsador   ; Si es un rebote sale fuera.
   goto   FinIncrementar
   bsf       F_Intermitencia      ; Visualiza siempre mientras incrementa.
   btfsc   F_AjusteHora
   call   IncrementaHoras
   btfsc   F_AjusteMinuto
   call   IncrementaMinutos
    call   VisualizaReloj      ; Visualiza mientras espera que deje
   call   Retardo_200ms      ; de pulsar.
   btfss   IncrementarPulsador   ; Mientras permanezca pulsado,
   goto   Incrementar      ; incrementa el dígito.
FinIncrementar
   return

; Subrutina "IncrementaRegistro50ms" ----------------------------------------------------
;
; Incrementa el valor de la variable Registro50ms. Cuando llega a 10, lo cual supone
; medio segundo (50 ms x 10 = 500 ms), lo resetea y sale con el Carry a "1".
;
IncrementaRegistro50ms
   incf   Registro50ms,F
   movlw   .10
   subwf   Registro50ms,W      ; (W)=(Registro50ms)-10.
   btfsc   STATUS,C      ; ¿C=0?, ¿(W) negativo?, ¿(Registro50ms)<10?
   clrf   Registro50ms      ; Lo inicializa si ha superado su valor máximo.
   return

; Subrutina "IncrementaMedioSegundo" --------------------------------------------------------
;
; Incrementa el valor de la variable MedioSegundo. Su bit de menor peso se pondrá a "1" una
; vez por segundo.

IncrementaMedioSegundo
   incf   MedioSegundo,F      ; Incrementa.
   bsf   STATUS,C      ; Supone que ha llegado al segundo.
   btfss   MedioSegundo,0      ; El bit 0 se pondrá a uno cada segundo.
   bcf   STATUS,C
   return

; Subrutina "IncrementaSegundos" -----------------------------------------------------------
;
; Incrementa el valor de la variable Segundo. Si es igual al valor máximo de 60 lo resetea
; y sale con el Carry a "1".

IncrementaSegundos
   incf   Segundo,F      ; Incrementa los minutos.
   movlw   .60
   subwf    Segundo,W      ; ¿Ha superado su valor máximo?. (W)=(Minuto)-60.
   btfsc   STATUS,C      ; ¿C=0?, ¿(W) negativo?, ¿(Minuto)<60?
   clrf   Segundo         ; Lo inicializa si ha superado su valor máximo.
   return
       
; Subrutina "IncrementaMinutos" -----------------------------------------------------------
;
; Incrementa el valor de la variable Minuto. Si es igual al valor máximo de 60 lo resetea
; y sale con el Carry a "1".
;
IncrementaMinutos
   incf   Minuto,F      ; Incrementa los minutos.
   movlw   .60
   subwf   Minuto,W      ; ¿Ha superado su valor máximo?. (W)=(Minuto)-60.
   btfsc   STATUS,C      ; ¿C=0?, ¿(W) negativo?, ¿(Minuto)<60?
   clrf   Minuto         ; Lo inicializa si ha superado su valor máximo.
   return

; Subrutina "IncrementaHoras" -----------------------------------------------------------
;
; Incrementa el valor de la variable Hora. Si es igual al valor máximo de 24 lo resetea
; y sale con el Carry a "1".
;
IncrementaHoras
   incf   Hora,F         ; Incrementa las horas.
   movlw   .24
   subwf   Hora,W         ; ¿Ha superado su valor máximo?. (W)=(Hora)-24.
   btfsc   STATUS,C      ; ¿C=0?, ¿(W) negativo?, ¿(Hora)<24?
   clrf   Hora         ; Lo inicializa si ha superado su valor máximo.
   return
Decrementamin

             decf    Minuto,1
           
           
             return

Decrementahr

             decf    Hora,1
           
             
             
             return
             
PuestaEnHora
   call   Retardo_20ms      ; Espera a que se estabilicen niveles.   
   btfsc   ModoPulsador      ; Si es un rebote sale fuera.
   goto   FinPuestaEnHora
PuestaEnHoraReset         ; Al pulsar "MODO" se apaga la variable de
   bcf    REELEVADOR
    bcf   F_Intermitencia      ; tiempo que se va a ajustar.
   movf   FlagsAjuste,F      ; Si antes estaba en funcionamiento normal, ahora
   btfss   STATUS,Z       ; pasa a ajustar la hora.
   goto   AjustaSiguiente      ; Si no pasa a ajustar la variable de tiempo siguiente.
   bsf   F_AjusteHora      ; Pasa a ajustar la hora.
   clrf   Segundo         ; Inicializa contador de segundos y el resto.
   clrf   MedioSegundo
   clrf   Registro50ms
   goto   FinPuestaEnHora
AjustaSiguiente            ; Desplaza un "1" a la derecha del registro
   bcf   STATUS,C      ; FlagsAjuste para ajustar secuencialmente
   rrf   FlagsAjuste,F      ; cada uno de los registros de tiempo:
FinPuestaEnHora            ; hora y minuto.
   call   VisualizaReloj
   btfss   ModoPulsador      ; Ahora espera deje de pulsar.
   goto   FinPuestaEnHora
   return

   INCLUDE  <RETARDOS.INC>
   INCLUDE  <LCD_4BIT.INC>
   INCLUDE  <LCD_MENS.INC>
   INCLUDE  <BIN_BCD.INC>
   END
   
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hacer temporizador para relé
Electrónica
Meta 0 5,319 Último mensaje 15 Enero 2011, 06:18 am
por Meta
Sleep Timer, temporizador automático para Windows
Noticias
wolfbcn 2 2,733 Último mensaje 11 Marzo 2012, 00:30 am
por Kase
Dudas para crear temporizador en ensamblador « 1 2 »
Electrónica
Fox_Neo 12 23,251 Último mensaje 20 Abril 2013, 00:00 am
por Meta
Ayuda con Temporizador para archivo .Bat
Scripting
joaquinrekpo 2 8,338 Último mensaje 7 Noviembre 2014, 17:28 pm
por joaquinrekpo
Temporizador en menú para cerrar venta.
Scripting
MaX2 3 2,300 Último mensaje 10 Febrero 2022, 22:56 pm
por .xAk.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines