Nur ein Hinweis zu den Timer-Deklarationen in Bascom:
Ich bin so oft an Compiler-Fehlern hängengeblieben, dass ich die Timer immer nach Atmel-Datenblatt deklariere. Außerdem finde ich die Einstellungen Register transparenter.

Ein Beispiel für einen Attiny25:
Code:
$regfile = "ATtiny25.DAT"                                   'Controllertyp
$crystal = 8000000                                          'crystal frequency

'*** Timer 0 CTC (read signal from TSOP173x) *******************
Tccr0a = &B0000_0010                           'OC0A/OC0B disconnected, CTC
Tccr0b = &B0000_0010                                       'Prescale=8 @8MHz
Ocr0a = 52                                                 '8Mhz/(8*(52+1))=18867Hz

On Oc0a _isr_t0ovf Nosave                          'Interrupt NOSAVE_ISR!
Enable Oc0a
Enable Interrupts
Ich werfe auch immer einen Blick in die *.DAT (hier ATtiny25.DAT) um zu checken, ob Bascom überhaupt die Registernamen richtig schreibt...

Eine Ausnahme ist der weit verbreitete Atmega8. Den kann Bascom recht gut. Aber auch beim Atmega8 habe ich schon Bascom-Fehler bei ungewöhnlichen Timerkonfigurationen gefunden.