So könntest du das machen. Timer1 zählt die Impulse. Mit Timer0 springst du 15 mal in der Sekunde in die Timer_irq Routine. Dort machst du einen Zähler. Wenn der Zähler 15 erreicht hat = 1 Sekunde, dann gibst du den Wehrte aus.
Code:
Dim Zahler_timer As Integer

Config Timer1 = Counter , Edge = Falling
'oder Edge = Rising

$regfile = "m16def.dat"
$crystal = 3686400
$baud = 9600

Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer_irq
Const Timervorgabe = 16

Enable Timer0
Enable Timer1

Enable Interrupts

Do
Loop
End

Timer_irq:
  Timer0 = Timervorgabe
  Zahler_timer = Zahler_timer + 1
   If Zahler_timer => 15 Then
      Print Timer1
      Timer1 = 0
      Zahler_timer = 0
    End If
   Return
Eine andre Möglichkeit ist den Timer0 zum zählen der Impulse benutzen. Dann bei jedem Überlauf in eine Unterroutine springen und jedes mal 255 zu einer Variable rechnen. Bei 1 Sekunde diese Variable + den Timer0 ausgeben.

Am besten währe es wenn du einen Controller mit zwei 16 Bit Timern nimmst.

Um dir mal den Unterschied zwischen Timer und Counter zu erklären. Im Prinzip ist es sehr einfach. Jeder Timer ist nur ein Counter. Mit Config Timer1 = Counter oder Config Timer1 = Timer entscheidest du nur was der Counter Zählt. Interner Takt oder externer Takt.


@xanadu
Ob das jetzt an Bascom oder am AVR liegt kann ich auch nicht hundertprozentig sagen. Nur bei Bascom ist es mal so. Aber wenn das möglich ist aus einem INTERRUPT in einen andren zuspringen, dann muß man auch Prioritäten setzten können. Es ist ja nicht immer erwünscht wegen einen unwichtigen INTERRUPT einen wichtigen zu unterbrechen.