Hola, puedes hacer esto: si manejas interrupciones, puedes multiplexar dentro de la rutina de interrupcion, cuando interrumpe por tmr0 (timer 0) por ejemplo hacer lo siguiente.
rDecHora ;registro que almacena las decenas de las horas
rUniHora ;idem para las unidad de las horas
rDecMin
rUniMin
rDecSeg
rUniSeg
-------------------------------------------------------
interrupcion timer 0
-------------------------------------------------------
Cuando entra en la interrupcion, haces esto
; apagas todos los display
bcf display1
bcf display2
bcf display3
bcf display4
movfw rMux
addwf PCL,1
goto muestraDigito1 ;rutina que muestra el digito1
goto muestraDigito2 ;2
goto muestraDigito3 ;3
goto muestraDigito4 ;4
clrf rMux ;cuando mostraste todos, reseteo
;aqui te muestro para un digito, despues lo repites para los demas
muestraDigito1
;aqui trasladas las decenas de las horas
;al puerto donde tienes el conversor a BCD
;luego, simplemente prendes el Display
bsf display1
con esto cada vez que se entre a una interrupcion, se mostrara un
digito distinto, como el ojo no distingue a mas de 25 intermitencias
por segundo, parecera que el display esta todo encendido.
Puedes probar con varios valores de preescalers del tmr0, hasta que
ande como te gusta, o bien poner a la entrada de la interrupcion, un contador
para evitar que en cada interrupcion realice la rutina de multiplexado...
decfsz contador
goto xxxx ; irse sin hacer la rutina de mult
;rutina de multiplexacion
; apagas todos los display
bcf display1
bcf display2
bcf display3
bcf display4
movfw rMux
addwf PCL,1
goto muestraDigito1 ;rutina que muestra el digito1
goto muestraDigito2 ;2
goto muestraDigito3 ;3
goto muestraDigito4 ;4
clrf rMux ;cuando mostraste todos, reseteo
;aqui te muestro para un digito, despues lo repites para los demas
muestraDigito1
;aqui trasladas las decenas de las horas
;al puerto donde tienes el conversor a BCD
;luego, simplemente prendes el Display
bsf display1
Bueno espero te sirva, cualquier duda me consultas, y te puedo hacer llegar
el codigo de un reloj que una vez hice....
Saludos.
Alejandro.