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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  temporizador 24 horas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: temporizador 24 horas  (Leído 3,187 veces)
elcerouno

Desconectado Desconectado

Mensajes: 5


Ver Perfil
temporizador 24 horas
« en: 24 Septiembre 2015, 19:10 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

Código
  1.  
  2.                                LIST P=16F84A
  3.                                INCLUDE <P16F84A.INC>
  4.  
  5.            __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
  6.  
  7.  
  8.     CBLOCK 0x0C
  9.     TiempoDeseado
  10.     Tiempo
  11.     FlagsModo
  12.     ENDC
  13.  
  14.     ORG    0x2100              
  15.     DE     0x00                
  16.  
  17. #DEFINE   F_Temporizador_ON       FlagsModo,2
  18. #DEFINE   F_Temporizador_Ajuste   FlagsModo,1
  19. #DEFINE   F_Temporizador_OFF      FlagsModo,0
  20.  
  21. #DEFINE    SalidaTemporizador     PORTB,1
  22. #DEFINE    Zumbador               PORTB,2
  23. #DEFINE    AjustePulsador         PORTB,7
  24. #DEFINE    IncrementarPulsador    PORTB,6
  25.  
  26. ; ZONA DE CÓDIGOS ********************************************************************
  27.  
  28.             ORG   0
  29.             goto  Inicio
  30.             ORG   4
  31.             goto  ServicioInterrupcion
  32.  
  33. Mensajes
  34.            addwf        PCL,F
  35.  
  36.  
  37. Mensaje_ON
  38.            DT "EN FUNCION",0x00
  39. Mensaje_Ajuste
  40.            DT "TIEMPO DECEADO",0x00
  41. Mensaje_OFF
  42.            DT "   RECARGAR",0x00
  43.  
  44. ;interrupcion de inicio
  45.  
  46.  
  47. Inicio
  48.            call    LCD_Inicializa
  49.            movlw   Mensaje_Inicio
  50.            call    LCD_MensajeMovimiento
  51.            call    Retardo_500ms
  52.            call    Retardo_500ms
  53.            call    Retardo_500ms
  54.  
  55.            movlw   Mensaje_nollave
  56.            call    LCD_MensajeMovimiento
  57.            call    Retardo_500ms
  58.            call    Retardo_500ms
  59.            call    Retardo_500ms
  60.            call    Retardo_500ms
  61.            call    Retardo_500ms
  62.  
  63.            bsf     STATUS,RP0
  64.            movlw   b'00000111'
  65.            movwf   OPTION_REG
  66.            bsf     AjustePulsador
  67.            bsf     IncrementarPulsador
  68.            bcf     SalidaTemporizador
  69.            bcf     Zumbador
  70.            bcf     STATUS,RP0
  71.            clrw
  72.            call    EEPROM_LeeDato
  73.            movwf   TiempoDeseado
  74.            call    ModoTemporizador_OFF
  75.            movlw   b'10001000'
  76.            movwf   INTCON
  77. Principal
  78.  
  79.  
  80.  
  81.              goto     Principal
  82.  
  83. ;subrrutinasdeservicioInterrupcion------------------------------------------
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. ServicioInterrupcion
  91.  
  92.  
  93.                      btfsc        INTCON,T0IF
  94.                      call         Temporizador
  95.                      btfss        INTCON,RBIF
  96.                      goto         FinInterrupcion
  97.  
  98.                      btfss        AjustePulsador
  99.                      call         CambiarModo
  100.                      btfsc        IncrementarPulsador
  101.                      goto         FinInterrupcion
  102.  
  103.                      call         Retardo_20ms
  104.                      btfsc        IncrementarPulsador
  105.                      goto         FinInterrupcion
  106.                      btfsc        F_Temporizador_OFF
  107.                      call         ModoTemporizador_ON
  108.                      btfsc        F_Temporizador_Ajuste
  109.                      call         IncrementarTiempoDeseado
  110. FinInterrupcion
  111.                      bcf          INTCON,RBIF
  112.                      bcf          INTCON,T0IF
  113.                      retfie
  114.  
  115. ;subrrutinasCambiarModo------------------------------------------------------------
  116.  
  117. CambiarModo
  118.             call      PitidoCorto
  119.             btfsc     AjustePulsador
  120.             goto      EsperaDejePulsar
  121.             btfsc     F_Temporizador_OFF
  122.             goto      ModoTemporizador_Ajuste
  123.             btfss     F_Temporizador_Ajuste
  124.             goto      ModoTemporizador_OFF
  125.  
  126.             clrw
  127.             movwf    EEADR
  128.             movf     TiempoDeseado,W
  129.             call     EEPROM_EscribeDato
  130.  
  131.  
  132.  
  133. ModoTemporizador_OFF
  134.                       bcf   SalidaTemporizador
  135.                       call  Pitido
  136.                       movlw  b'00000001'
  137.                       movwf  FlagsModo
  138.                       bcf    INTCON,T0IE
  139.                       movf   TiempoDeseado,W
  140.                       movwf  Tiempo
  141.                       call   LCD_Borra
  142.                       movlw  Mensaje_OFF
  143.                       goto   FinCambiarModo
  144. ModoTemporizador_Ajuste
  145.                       bcf     SalidaTemporizador
  146.                       movlw   b'00000010'
  147.                       movwf   FlagsModo
  148.                       clrf     Tiempo
  149.                       clrf     TiempoDeseado
  150.                       bcf      INTCON,T0IE
  151.                       call     LCD_Borra
  152.                       movlw    Mensaje_Ajuste
  153.                       goto     FinCambiarModo
  154. ModoTemporizador_ON
  155.                       movf     TiempoDeseado,W
  156.                       btfsc    STATUS,Z
  157.                       goto     ModoTemporizador_OFF
  158.                       movwf    Tiempo
  159.                       call     PitidoCorto
  160.                       movlw    b'00000100'
  161.                       movwf    FlagsModo
  162.                       movlw    TMR0_Carga50ms
  163.                       movwf    TMR0
  164.                       movlw    Carga_1s
  165.                       movwf    Registro50ms
  166.                       bsf      INTCON,T0IE
  167.                       call     LCD_Borra
  168.                       bsf      SalidaTemporizador
  169.                       movlw    Mensaje_ON
  170. FinCambiarModo
  171.                call   LCD_Mensaje
  172.                call   VisualizaTiempo
  173. EsperaDejePulsar
  174.                btfss   AjustePulsador
  175.                goto    EsperaDejePulsar
  176.                return
  177.  
  178. ;SubrutinaTEMPORIZADOR
  179.  
  180.               CBLOCK
  181.               Registro50ms
  182.               ENDC
  183. TMR0_Carga50ms     EQU         -d'195'
  184. Carga_1s           EQU         d'20'
  185.  
  186. Temporizador
  187.              call        Retardo_50micros
  188.              call        Retardo_20micros
  189.              nop
  190.              movlw        TMR0_Carga50ms
  191.              movwf        TMR0
  192.              decfsz       Registro50ms,F
  193.              goto         FinTemporizador
  194.              movlw        Carga_1s
  195.              movwf        Registro50ms
  196.              btfss        F_Temporizador_ON
  197.              goto         FinTemporizador
  198.              decfsz       Tiempo,F
  199.              goto         VisualizaContador
  200.              bcf          SalidaTemporizador
  201.              call         VisualizaTiempo
  202.              call         Pitido
  203.              call         Retardo_500ms
  204.              call         Pitido
  205.              call         Retardo_500ms
  206.              call         PitidoLargo
  207.              call         Retardo_500ms
  208.              call         ModoTemporizador_OFF
  209.              goto         FinTemporizador
  210. VisualizaContador
  211.               call        VisualizaTiempo
  212. FinTemporizador
  213.               return
  214. ;SubrutinaVisualizaTiempo--------------------------------------------------
  215.  
  216. VisualizaTiempo
  217.                movlw      .5
  218.                call      LCD_PosicionLinea2
  219.                movf      Tiempo,W
  220.                call      MinutosSegundos
  221.                movf      TemporizadorMinutos,W
  222.                call      BIN_a_BCD
  223.                call      LCD_Byte
  224.                movlw     ':'
  225.                call      LCD_Caracter
  226.                movf      TemporizadorSegundos,W
  227.                call      BIN_a_BCD
  228.                goto      LCD_ByteCompleto
  229.                return
  230. ;subrutinaminutossegundos----------------------------------------------------
  231.  
  232.             CBLOCK
  233.             TemporizadorMinutos
  234.             TemporizadorSegundos
  235.             ENDC
  236.  
  237. MinutosSegundos
  238.            movwf      TemporizadorSegundos
  239.            clrf       TemporizadorMinutos
  240. Resta60     movlw      .60
  241.            subwf      TemporizadorSegundos,W
  242.            btfss       STATUS,C
  243.            goto        FinMinutosSegundos
  244.            movwf       TemporizadorSegundos
  245.            incf        TemporizadorMinutos,F
  246.            goto        Resta60
  247. FinMinutosSegundos
  248.            return
  249.  
  250. ;subrutina incrementatiempodeseado
  251.  
  252. Saltoincremento EQU       .5
  253.  
  254. IncrementarTiempoDeseado
  255.                call   PitidoCorto
  256.                movlw   Saltoincremento
  257.                addwf   Tiempo,F
  258.                btfsc   STATUS,C
  259.                clrf    Tiempo
  260.                call    VisualizaTiempo
  261.                call    Retardo_100ms
  262.                btfss   IncrementarPulsador
  263.                goto    IncrementarTiempoDeseado
  264.                movf    Tiempo,W
  265.                movwf   TiempoDeseado
  266.  
  267.                return  
  268.  
  269. ;subrrutinapitidolargopitidocorto
  270.  
  271. PitidoLargo
  272.           bsf     Zumbador
  273.           call    Retardo_500ms
  274. Pitido    
  275.           bsf     Zumbador
  276.           call    Retardo_200ms
  277. PitidoCorto
  278.           bsf      Zumbador
  279.           call     Retardo_20ms
  280.           bcf      Zumbador
  281.           return
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.                                INCLUDE    <RETARDOS.INC>
  294.                                INCLUDE    <BIN_BCD.INC>
  295.                                INCLUDE    <LCD_4BIT.INC>
  296.                                INCLUDE     <LCD_MENS.INC>
  297.                                INCLUDE     <EEPROM.INC>
  298.  
  299.                     END :-(
  300.  
  301.  


« Última modificación: 24 Septiembre 2015, 19:33 pm por simorg » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: temporizador 24 horas
« Respuesta #1 en: 28 Septiembre 2015, 20:59 pm »

Dado "Retardo_500ms", basta que lo metas en un bucle para esperar todo el tiempo que quieras.


En línea

elcerouno

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: temporizador 24 horas
« Respuesta #2 en: 28 Septiembre 2015, 22:24 pm »

Dado "Retardo_500ms", basta que lo metas en un bucle para esperar todo el tiempo que quieras.


pero igual puedo programar el tiempo que yo quiera?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: temporizador 24 horas
« Respuesta #3 en: 29 Septiembre 2015, 19:31 pm »

La función Retardo_500ms hace sus bucles. Lo mejor es que utilices ese set de funciones en bucles, salvo que sepas leer el código de esa función, y rehacerlo para lo que buscas. No te líes, y ahorra memoria.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Temporizador
Programación C/C++
Bledniss 4 4,970 Último mensaje 29 Abril 2011, 03:39 am
por Destro-
Temporizador en C
Programación C/C++
PeKiN 2 5,470 Último mensaje 9 Junio 2011, 21:51 pm
por PeKiN
BUG Youtube, videos de 10 horas, y 500 horas... ¿Como? « 1 2 »
Dudas Generales
SuperDraco 18 25,129 Último mensaje 20 Julio 2011, 22:20 pm
por <<J.R>>
La portabilidad en 24 horas en realidad son 48 horas
Noticias
wolfbcn 0 1,670 Último mensaje 21 Junio 2012, 14:51 pm
por wolfbcn
Duermo solo 3 horas al dia, algun consejo para dormir mas horas?
Foro Libre
derden32 1 2,369 Último mensaje 7 Agosto 2015, 08:19 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines