Hi,
ich glaub ich hab es jetzt, aber mit nem ganz normalem Interrupt der den Timer beendet.
Leider kann ich es nicht ausprobieren da ich total sinnlose Fehler erhalte.
Ich glaub das liegt an meiner alten Bascom Version (beim Kumpel geht das Compilieren).
Mein Update Acc ist leider noch immer nicht freigeschaltet :/

Hier der Code, ich hoffe er ist zu verstehen:
Code:
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portc.2 , Rs = Portc.3
Config Lcd = 16 * 2
Cls
Cursor Off

Config Portb.3 = Output

Dim I As Double

Config Timer1 = Timer , Prescale = 1                        'Zählt Variable in ISR hoch
Disable Timer1
On Timer1 T1_isr

Config Int0 = Rising                                        'bei steigender Flanke
Disable Int0
On Int0 Int0_isr

Do

   $asm
   push r16
   ldi r16,26
   Out Tccr2 , R16
   ldi r16,25
   Out Ocr2 , R16
   pop r16
   $end Asm

   Waitms 2

   $asm
   push r16
   clr r16
   Out Tccr2 , R16
   pop r16
   $end Asm

   I = 0
   Enable Interrupts
   Enable Timer1
   Enable Int0

   Wait 2                                                   'Programm wartet und Interrupts laufen

   Lcd I                                                    'Ausgabe auf LCD
   Waitms 500
   Cls

Loop

T1_isr:                                                     'I wird imemr um eins erhöht
   Incr I
Return

Int0_isr:                                                   'bei steigender Flanke schaltet die ISR vom Interrupt alles ab
   Disable Interrupts
   Disable Timer1
   Disable Int0
Return

End