Hallo,
ich möchte die Zeit zwischen Interrupt0 und Interrupt1 messen. Wenn bei Int0 ein high Signal kommt soll der Timer1 gestartet werden und wenn high bei Interrupt2 kommt soll der Timer gestoppt werden. Aber irgendwie reagiert das Programm nicht auf die Interrupts. Weiß jemand warum?

Code:
'7Segmentanzeige mit 5 (oder 4) Anzeigen

$regfile = "ATtiny2313.dat"                                 'ATTiny2313
$crystal = 18432000                                         '18,4320MHz Quarz

$hwstack = 64                                               ' default use 32 for the hardware stack
$swstack = 64                                               ' default use 10 for the SW stack


'_______________________________________________________________________________
Ddrb = &B11111111                                           'PortB = Ausgang (PB0=A usw.)
Ddrd = &B1110011                                            'PortD = Ausgang (PD0=Anzeige1, PD4=A2, PD5=A3, PD6=A4) PD2/3 =INT

Config Int0 = Rising                                        'Falling                                       'wechsel von High auf Low
Config Int1 = Rising                                        'Falling                                       'wechsel von High auf Low
Enable Int0
Enable Int1

'_______________________________________________________________________________
Dim Anzeige_akt As Word                                     'Aktuelle Zeitmessung
Dim Anzeige_str As String * 5                               'Zeit als String
Dim Anzeige_str_len As Byte                                 'String-Länge
Dim Anzeige_ziffer As String * 1                            'Aktuelle Ziffer
Dim Anzeige_pos As Byte                                     'Aktuelle Ziffer im String
Dim I As Byte                                               'Allgem. Laufzahl
I = 1

Dim Zeit As Single                                          'gemessene Zeit von Timer1
Dim Kmh As Single                                          'Geschwindigkeit

'_______________________________________________________________________________
'TIMER0 Konfiguration für Ziffernwechsel:
Config Timer0 = Timer , Prescale = 256                      ' Timer0 für Anzeige
Const T0_preload = &H70                                     ' Startwert Timer0 für 500Hz
Tcnt0 = T0_preload

On Timer0 Timer_irq_led                                     ' Timer0-Overflow-Interrupt

Enable Timer0                                               ' Timer0 starten
Sreg.7 = 1                                                  'Globale Interruptfreigabe

'_______________________________________________________________________________
'TIMER1 Konfiguration für Messzeit:
Config Timer1 = Timer , Prescale = 1024
Const Timervorgabe = 0                                      '29535 -> 0,5 Hz
On Timer1 Timer_irq_kmh                                         'Unteprogramm aufrufen

'Enable Interrupts

'_______________________________________________________________________________

Do                                                          ' Dauerschleife als Hauptprogramm
Waitms 250
Anzeige_akt = Timer1                                        'Zeit                                          'Wert zum anzeigen



Loop



'_______________________________________________________________________________
Timer_irq_led:

      Tcnt0 = T0_preload                                    'Timer wieder laden

      Anzeige_str = Str(anzeige_akt)                        ' Wert in String umwandeln
      Anzeige_str_len = Len(anzeige_str)                    ' Stringlänge messen

      Anzeige_pos = Anzeige_str_len - I
      Anzeige_pos = Anzeige_pos + 1

      Anzeige_ziffer = Mid(anzeige_str , Anzeige_pos , 1)

      Portd = 0                                             'Ghosting vermeiden

      Select Case Anzeige_ziffer                            'Ziffer auf Port

           Case "0" : Portb = 63                            'NULL
           Case "1" : Portb = 6                             'EINS
           Case "2" : Portb = 91                            'ZWEI
           Case "3" : Portb = 79                            'DREI
           Case "4" : Portb = 102                           'VIER
           Case "5" : Portb = 109                           'FÜNF
           Case "6" : Portb = 125                           'SECHS
           Case "7" : Portb = 7                             'SIEBEN
           Case "8" : Portb = 127                           'ACHT
           Case "9" : Portb = 111                           'NEUN
           Case Else : Portb = 0

      End Select

     'Segment wählen
      If I = 1 Then Portd.0 = 1                             'EINER
      'If I = 2 Then Portd.1 = 1                            'ZEHNER
      If I = 2 Then
      Portd.4 = 1                                           'HUNDERTER
      'Portb.7 = 1                                           'Kommastelle
       End If
      If I = 3 Then Portd.5 = 1                             'TAUSENDER
      If I = 4 Then Portd.6 = 1                             'ZEHNTAUSENDER

      I = I + 1                                             'Nächste Ziffer
      If I >= 6 Then I = 1                                  'max Anzeigen angeben! damit Anzeige möglichst hell ist(bei 5Anzeigen muss bei der 6. wieder bei 1 Angefangen werden)


Return

Irq0:                                                       'Aufruf bei Lichtschranke 1 per Interrupt
 Timer1 = 0                                                 'Timer auf 0 setzen
 Start Timer1                                               'Timer starten
 Portb.7 = 1
 Return

Irq1:                                                       'Aufruf bei Lichtschranke 2 per Interrupt
 Stop Timer1                                                'Timer stoppen
 'Zeit = Timer1
 Portb.7 = 0
 Return


Timer_irq_kmh:                                              'Aufruf jede oder jede halbe Sekunde
 Timer1 = Timervorgabe                                      'AUF TIMER EINSTELLUNG ACHTEN!!!!!!!

Return