Bueno, siguiendo con lo de LordLafebre
y agarrando su mismo ejemplito, con previas modificaciones,
Les presento al Reloj
http://proyectosfie.webcindario.com/documentos/reloj.pnglos arhivos del Reloj estan Aqui:
http://proyectosfie.webcindario.com/documentos/reloj.zipExplicaci�n:
Antes que nada Decirles, que como Ud. sabr�n el Sistema Operativo funciona con un Reloj Interno. Y es posible acceder a �l desde VB, con la variable Time (que por cierto es del tipo String).
Pero tambien podemos obtener cada Parte del Tiempo... solo Hora, solo Minutos y solo Segundos...
y como hago esto ???
Bueno es Relativamente facil, por no decir Recontrafacil...

Hora = Val( Hour(Time))
Minutos = Val (Minute (Time))
Segundos = Val (second(Time))
Ahora con esto tendremos 2 decimales, asi que podemos separarlos en Decenas y Unidades... (Bueno en mi codigo dice Centenas y Unidades ... cualquiera se equivoca

).
DecenasHora = Hora 10
UnidadesHora = Hora mod 10
y lo mismo con los minutos y segundos....
una vez que tenemos estos valores de forma independiente, los mandamos a los displays. (En este caso a los Displays del Formulario).
Pero para enviarlos al puerto paralelo, tenemos que enviarlos de una forma tal que el Hardware realice lo que queremos.
Para que sea mas entendible voy a separar los nibles de D7 - D4 y D3 - D0 por la funcion que realizan en el ckto.
D7-D4 : Escojen Display a Mostrar. Como lo hacen, pues donde se escriba un 0, se muestra el dato.
Entonces tenemos
D7-D4 D3-D0
1110 XXXX = 1110 0000 + 0000 XXXX = 224 + Dec(XXXX) ->Decena Hora
1101 XXXX = 1101 0000 + 0000 XXXX = 208 + Dec(XXXX) ->Unidad Hora
1011 XXXX = 1011 0000 + 0000 XXXX = 176 + Dec(XXXX) ->Decena Minuto
0111 XXXX = 0111 0000 + 0000 XXXX = 112 + Dec(XXXX) ->Unidad Minuto
Donde Dec(XXXX) es el valor del display y vale de 0 a 9
Esto en el Programa es:
Escribir &H378, (224 + CentenaHora)
Sleep 10
Escribir &H378, (208 + UnidadHora)
Sleep 10
Escribir &H378, (176 + CentenaMinutos)
Sleep 10
Escribir &H378, (112 + UnidadMinutos)
Sleep 10
Donde Sleep es una api de Windows, q permite hacer retardos en Milisegundos. Esa declarado en reloj.obj, junto con Escribir y Leer, funciones para escritura y lectura de puertos.
***********************************************************
Bueno hasta ahora, nos hemos ya sabemos que es lo que se va hacer. Pero como lo haremos, ya que esto debe hacerse siempre....
Bueno, para eso usaremos 2 Controles tipo Timer.
estos Activan un Evento cada intervalo en milisegundos que nosotros establescamos en su propiedad Interval.
Uso 2, por los motivos siguientes:
* Necesito que la hora es visualizada se actualice, pero esta no varia con mucha frecuencia. solo cada segundo. Entonces creo un timer q lo actualice cada 500ms, esto por los retrazos de la PC.
* Necesito una funcion que este mostrando constantemente los valores en los displays, sino nunca vere nada, o solo vere prenderse un Display, como en la captura de la imagen arriba. Para eso creo otro timer, pero que en menor tiempo este actualizando la hora que se envia al Puerto.
Espero haber sido claro. O en todo caso me avisan nom�s, y se puede extender esta explicacion. Ya que solo me he limitado a explicar los cambios hechos respecto a los otros ejemplos de Lord...
bye
PD: claro, que el ckto mostrado arriba solo sirve para fines explicativos, si se desea hacer uno que vaya de acuerdo a las necesidades, se deben colocar, los transistores, tal como lo muestra Lord. Además que ya no habilitaria el display con 0 sino con 1, y los valores cambiarian de 224 a 16(0001 0000), 208 a 32(0010 0000), 176 a 64(0100 0000) y 112 a 128(1000 0000). Ahora si bye