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







Zitieren
Lesezeichen