So...
irgendwie scheint der Schaltplan nicht so recht zum Code zu passen. Aber das war ja nicht das Problem.
Laut Crystal-Direktive sagst Du Bascom, daß der Controller angeblich mit 8MHz läuft - deine Timerkonfiguration paßt alledings zu 1MHz (TOV jede Sekunde).
Zum eigentlichen Thema:
Der Controller soll offensichtlich die vier Digits selbst ansteuern (direkt), also (unter Berücksichtigung der verwendeten Controllerbeine) multiplexen.
Prinzipiell kannst Du dafür auch deinen Sekunden-Timer verwenden (der dann natürlich schneller ticken müßte), aber mit'nem seperaten Timer ist's für Dich vielleicht verständlicher.
Aufgabe des (zweiten) Timers ist es also, alle vier Common-Leitungen der Digits abzuschalten, das neue Muster den Segmente Port zu legen, und dann das nächste Digit mit seiner Common anzuschalten. 'Ne Weile leuchten lassen, und wieder von vorn.
(Ich würde dazu statt eines Interruptes sogar zwei nutzen (den OutputCompare zum abschalten aller Digits, und den TOV zum umschalten der Segmente und anschalten des einen Digits)Wegen der Pufferung also fastPWM, aber auch hier ist der normalMode mit nur einem TOV-Interrupt vielleicht verständlicher).
Mit jedem Timerdurchlauf wird ein Digit dargestellt, Du hast vier Digits - wären also vier TOVs für die ganze Anzeige (ein "Bild").
Dein Controller läuft mit 1MHz, Timer0 (oder auch 2) macht 256 Schritte, wären über den Daumen 4kHz bei den TOVs. Vier TOVs ein Bild, wäre 'ne Bildwiderholfrequenz von 1kHz. Bauch sagt, daß 100Hz reichen sollten, also teilen wir den Timer mit Prescaler=8 runter, wären über den Daumen 125Hz.
Im SRAM hälst Du jetzt, quasi als Schatten-Abbild, die Muster der vier Digits bereit (in BASCOM am einfachsten als Array), und das derzeitige Digit (1 bis 4).
In der ISR schaltest Du also alle Commons ab, inkrementierst Deinen Digit-Pointer, prüfst ob er jetzt vielleicht 5 ist und setzt ihn auf 1 zurück. Legst Schattenabblid(digit-Pointer) auf die Segmente und aktivierst die entsprechende Digit.
Damit kümmert sich der Timer mit einer relativ kurzen ISR um das Multiplexing; was dargestellt werden soll, schreibt Dein Hauptprogramm ins Schattenabbild.
Wahrscheinlich willst Du auf dem Display die Restlaufzeit ausgeben, also zwei Digits für die Minuten, zwei für die Sekunden. Derzeit hast Du quasi ein Sekundenzählwerk, ich würde wegen den Digits entsprechend das ganze "Uhrwerk" anpassen, also für jedes Digit 'ne eigene Zählvariable nehmen - beim dekrementieren erstmal die Sekundeneiner dekrementieren. Laufen die über, auf neun setzen und die Sekundenzehner dekremeitieren, usw...
Wurde eine dieser Variablen geändert (also dekrement bzw auf Neun oder Fünf setzen), Schreibst Du das entsprechende Bitmuster in die entsprechende Position im Schattenabbild (Sekundeneiner --> Schattenabbild(4), Stundenzehner --> Schattenabbild(1))
Und wie machst Du aus der Ziffer das Muster?
Sinnigerweise, indem Du die Muster in'ner geeigneten Tabelle ablegst, in Bascom zB in einem Zeichen-Array. Zeichen(5) zB enthält das Muster der 5. im 'ne 5 als Zehnerstunde auszugeben lautet die Zuweisung Schattenabbild(1)=Ziffern(5), klar?
Für Dauer-An oder -Aus kannst Du auch entsprechende (konstante) Muster in's Schattenabbild schreiben, ebenso für Deine Stufenauswahl.
P.S.
@Dirk : Das Forum ist mit 2kbit/s Download echt kein Vergnügen...