Hallo!

Hier nochmal mein Code zu deinem Beispiel, so hatte ich es übrigens auch schonmal und funktioniert bei meinem 8515 wunderbar!
Habe es eben extra nochmal durch den Simulator gejagt. Da kann man schön sehen, daß die Berechnungen richtig sind und sogar das Register korrekt gesetzt wird. Aber in Realität passiert eben genau das nicht!

Anbei nochmal mein Code

Code:
'*******************************************************************************
'Frequenzgenerator
'Prozessor: Atmel Mega 32
'Programm: Test_Prescaler verändern
'*******************************************************************************
'$sim
$regfile = "M32DEF.DAT"
$crystal = 16000000
$baud = 9600

'-----------------------------Variablendeklaration--------------------------------
Dim Rel_flag As Bit
Dim S As String * 10

'------------------------Variablen zur Frequenzberechnung-------------------------
Dim F As Single
Dim Fein As Single
Dim Fcalc As Single
Dim Check As Single
Dim Calc As Single
Dim Pre As Integer                                          'Prescaler
Dim Presc As Byte                                           'Prescaler Uebergabewert
Dim Vorteiler As Long                                       'Prescaler berechnet
Dim Reload1 As Word
Dim Count0 As Byte
Dim Count1 As Byte
Const Fosc = 16000000                                       'Frequenz µC
Const Aufl = 65536                                          'Timeraufloesung
Dim T As Single                                             'Periode
Declare Sub Aus
Declare Sub Neue_frequenz
Declare Sub Reloadsub

'-----------------------------Portkonfiguration-----------------------------------

'Der PortC wird als Ausgang programmiert
Config Pinc.0 = Output
Config Pinc.1 = Output
Config Pinc.2 = Output
Config Pinc.3 = Output
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Pinc.6 = Output
Config Pinc.7 = Output
Config Pina.7 = Output
Config Pina.6 = Output
Config Pina.5 = Output
Config Pina.4 = Output

'Der Port B und D wird als Eingang programmiert
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input                                       ' Interrupt 2 für Zuendung Slave IN sync
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.5 = Input
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Pind.2 = Input                                       ' Interrupt 0 für ON/OFF
Config Pind.3 = Input                                       'Interrupt 1 Sammelinterrupt Stoerung
Config Pind.4 = Input
Config Pind.5 = Input
Config Pind.6 = Input
Config Pind.7 = Input

'Pullup einschalten nur bei PD3 noetig!
Portd.3 = 1

'Hier geben wir der Definition einen schoeneren Namen
_out Alias Portc.0
Sync Alias Portc.1
_rdy Alias Portc.2
Reserve_out Alias Portc.3
Stoerung_out Alias Portc.4
Outp Alias Portc.5
Led1 Alias Portc.6
Led2 Alias Portc.7
Led3 Alias Porta.7
Led4 Alias Porta.6
Ok Alias Porta.5
Relais Alias Porta.4

'-----------------------------Timerkonfiguration----------------------------------
'Hier wird der Timer und der Teiler festgelegt
Config Timer0 = Timer , Prescale = 64
Config Timer1 = Timer , Prescale = 8

'Hier wird das Unterprogramm festgelegt, das
'in dem eingestellten Intervall aufgerufen wird
On Timer0 Timer0_irq                                        'Nosave
On Timer1 Timer1_irq                                        'Nosave

Const Reload0 = 6
Reload1 = 30534

'Hier werden die Timer aktiviert
Enable Timer0
Enable Timer1
Enable Interrupts


Call Aus
Start Timer1

Do
  If Ischarwaiting() <> 0 Then Call Neue_frequenz
   nop
Loop

Timer0_irq:                                                 '1 Pausenteil 1ms
  Timer0 = Reload0
    Outp = 0                                                'EIN
    Stop Timer0
    Waitus 500
    Outp = 1                                                'AUS
    Waitus 1000                                             '2.Pausenteil 1ms
    Led1 = 0
    Start Timer1

   Return


Timer1_irq:                                                 'lange Zeit 17,5ms
    Timer1 = Reload1
    Led1 = 1
    Stop Timer1
    Start Timer0
   Return

'----------------------------Funktion Ausschalten---------------------------------

Sub Aus

Portc = &HFF                                                ' alle LEDs aus
Led1 = 1
Led2 = 1
Led3 = 1                                                    ' alle LEDs aus
Led4 = 1                                                    ' alle LEDs aus
Ok = 1
Outp = 1                                                    ' alle LEDs aus
Waitms 200

  If Rel_flag = 0 Then
      Relais = 1                                            ' alle LEDs aus
  End If

End Sub

'--------------------------Funktion Frequenzberechnung----------------------------
Sub Neue_frequenz
 Stop Timer0
 Stop Timer1
 Waitms 200

 Call Aus
 S = Inkey()
 Print "Frequenz ohne dezimale eingeben, d.h 500 entspricht 50Hz"
 Eingabe:
 Input " neue Frequenz: " , Fein

 If Fein > 500 Then
   Print "Fequenz zu Gross!!!"
   Goto Eingabe
 End If
    F = Fein / 10
    Check = Frac(f)                                         'nur Nachkommastelle
 If Check = 0.5 Or Check = 0 Then
   Print " neue Frequenz: " ; F ; "Hz"
 Else
   Print "falsche Eingabe! Nur 0,5Hz Schritte moeglich!"
   Goto Eingabe
 End If

 T = 1 / F
 T = T - 0.0025
 Fcalc = 1 / T
 Vorteiler = T * Fosc
 Vorteiler = Vorteiler \ Aufl

 If Vorteiler <= 1 Then
     Pre = 1
     Call Reloadsub
     Disable Timer1
     Config Timer1 = Timer , Prescale = 1
     Reload1 = Round(calc)
     Enable Timer1
 End If

 If Vorteiler > 1 And Vorteiler <= 8 Then
     Pre = 8
     Call Reloadsub
     Disable Timer1
     Config Timer1 = Timer , Prescale = 8
     Reload1 = Round(calc)
     Enable Timer1
 End If

 If Vorteiler > 8 And Vorteiler <= 64 Then
     Pre = 64
     Call Reloadsub
     Disable Timer1
     Config Timer1 = Timer , Prescale = 64
     Reload1 = Round(calc)
     Enable Timer1
 End If

 If Vorteiler > 64 And Vorteiler <= 256 Then
     Pre = 256
     Call Reloadsub
     Disable Timer1
     Config Timer1 = Timer , Prescale = 256
     Reload1 = Round(calc)
     Enable Timer1
 End If

 If Vorteiler > 256 And Vorteiler <= 1024 Then
     Pre = 1024
     Call Reloadsub
     Disable Timer1
     Config Timer1 = Timer , Prescale = 1024
     Reload1 = Round(calc)
     Enable Timer1
 End If


 'Start Timer1
End Sub

Sub Reloadsub
'Berechnung von Reload1
 Calc = Fosc / Pre
 Calc = Calc / Fcalc
 Calc = Aufl - Calc

End Sub
Mich würde es brennend interessieren, warum das nicht klappt??? Vielleicht packt mal jemand das programm auf seinen Chip.

Gruß

Sven