Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

22/04/2010 #1


Resta de tiempos
Hola amigos! Necesito ayuda con un problema que tengo..

Estoy progamando un pic 16f877A (con PIC C de CCS), tengo como datos dos tempos, es decir tiempo1= HH:MM:SS y tiempo2= hh:mm:ss y necesito extraer uno tercero que es la cantidad de tiempo (tiempo3) que falta para llegar desde tiempo2 hasta tiempo1, por ejemplo:

caso 1: tiempo1 y tiempo2 son el mismo dia:

tiempo1=12:00:00
tiempo2=15:30:00
tiempo3=03:30:00

caso 2: tiempo1 es un dia y tiempo2 es una hora del dia siguiente

tiempo1=12:00:00
tiempo2=06:00:00
tiempo3=18:00:00


necesito algun algoritmo que pueda resolver ese problema..
Agradecido desde ahora por la atencion..
22/04/2010 #2

Avatar de Eduardo

Respuesta: Resta de tiempos
Y que hacés cuando la diferencia es mayor de 1 día?

Ej:
tiempo1 = 12:00:00
tiempo2 = 16:00:00 del día siguiente
tiempo3 = 28 hs --> en que formato lo guardás?
22/04/2010 #3

Avatar de Eclip-se

Respuesta: Resta de tiempos
Creo que lo mejor seria pasar las horas, mimutos a segundos de ahi te sale el tiempo total de segundos y luego haces la resta con el valor deseado. Al final tranasformas los segundos en horas y minutos
23/04/2010 #4


Respuesta: Resta de tiempos
Gracias por las respuestas!
La difencia es un maximo de 24 hs..

La opcion de pasar tiempo1 y tiempo2 a segundos ya lo realice pero no sé el porqué de que me realiza un calculo erroneo.. pero voy a seguir probando..
23/04/2010 #5

Avatar de 1jabato1

Respuesta: Resta de tiempos
Hola.
los tiempos están en bcd.creo que deberías convertirlo a binario antes de hacer la resta o restar en bcd,quizás sea esto por lo que el resultado no sale bien.

36 en bcd es 00100110
36 en binario es 00010100

Un saludo
23/04/2010 #6

Avatar de Eduardo

Respuesta: Resta de tiempos
Sin convertir nada podes hacerlo asi:

Código:
struct TIEMPO {signed int hh,mm,ss ;} t1 , t2 , t3 ;

    ..................................
    ..................................

    // ------ Diferencia de tiempo t3  [hh:mm:ss]  ----
    
    if((t3.ss=t2.ss-t1.ss)<0) { t3.ss+=60 ; t2.mm-- ; }
    if((t3.mm=t2.mm-t1.mm)<0) { t3.mm+=60 ; t2.hh-- ; }
    if((t3.hh=t2.hh-t1.hh)<0)   t3.hh+=24 ;
    
    // -----------------
23/04/2010 #7

Avatar de tecnogirl

Respuesta: Resta de tiempos
hecenja dijo: Ver Mensaje
... La opcion de pasar tiempo1 y tiempo2 a segundos ya lo realice pero no sé el porqué de que me realiza un calculo erroneo.. pero voy a seguir probando..
Supongo que tuviste en cuenta que representar 23:59:59 son 86400 segundos y que necesitas una variable de mas de 16 bits para guardarla... no será por eso que no te funciona ???

El algoritmo de Eduardo evita este problema.

Saludos
23/04/2010 #8


Respuesta: Resta de tiempos
Gracias eduardo.. voy a probar tu algoritmo..
23/04/2010 #9

Avatar de Meta

Respuesta: Resta de tiempos
Si usas un reloj calendario, mejor que mejor. Es bueno saber que el fabricante ya no vendi ni fabrica el PIC16F877A, su sustituto es el 16F887 con mejores prestaciones. Microchip avisó con una noticia un año de antelación.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.