BASCOM kann das von Hause aus. Lies mal:
Code:
CONFIG CLOCK = soft
falls Du zusätzlich weitere Dinge in der 1sec-ISR behandeln willst oder Bascom beim MEGA128 die Register falsch setzt (kann das nicht testen) hier ein Beispiel für den MEGA169, wie Du die Register und ISR selber behandelst:
Code:
'Set Timer Register Mega169
   Assr = &B1000 'Async with ext. Crystal Oscillator
   Tccr2a = &B0101 'prescaler 128: 32.768Hz/(128*256) = 1sec
   Tifr2 = &B0011 'Clear Timer/Counter2 - Interrupt Flag TIFR2
   Timsk2.toie2 = 1 'Enable Timer2 - Timer/Counter2 Interrupt Task Register TIMSK2
On Ovf2 Isr_softclock Nosave 'OVF2 =$00a ;Overflow2 Interrupt

'...

'*********ISR Timer2 - Async ***************************************
'---------------------------------------------------------------
'Interrupt:  Isr_softclock
'Call from:  Interrupt Vector Timer2
'Purpose:    increment RTC: clock and date
'            external 32kHz Oscillator (Async Modus)
'Result:     _sec, _min, _hour, _day, _month, _year
'---------------------------------------------------------------
$external _soft_clock
Const _sectic = 0   'Compilerstatement for CONFIG CLOCK = USER , GOSUB <> SECTIC

Isr_softclock:
$asm
   'internal Bascom ISR-Routine: Softclock
   JMP    _SOFT_CLOCK  'original RETI
$end Asm
Return