$regfile = "m8def.dat" 'ATmega8-Deklarationen $crystal = 3686400 'Quarz: 3,6864 MHz $baud = 9600 '9600 Baud ' On Timer0 Ontimer 'Timer0-Interruptroutine Dim Helligkeit As Integer 'Timer0-Zeitwert Dim B As Integer Portb = &B11 'port B 0und 1 als eingang Ddrd.5 = 1 'Pin PD5 ist Ausgang Tccr0 = &B00000100 'Timer0: Bits210=100: Quarz/256 Timsk.toie0 = 1 'Timer0-Overflow-Interrupt ein Config Timer0 = Timer , Prescale = 256 Enable Timer0 'Overflow-Interrupt ein '---------------------------------------------------------- Helligkeit = 200 'Initial LED hell Sreg.7 = 1 'Interrupts global einschalten Do 'Hauptschleife B = Encoder(pinb.0 , Pind.1 , Links , Rechts , 2) 'Drehimpulsgeber Waitms 10 Print Helligkeit Print B If Helligkeit = 0 Then 'ist der wert auf 0 soll port D5 auf 0 Portd.5 = 0 End If If Helligkeit = 256 Then 'ist der wert auf 256 soll port D5 auf 1 Portd.5 = 1 End If Loop '---------------------------------------------------------- Links: Helligkeit = Helligkeit + 5 'der wert soll um 5 angehoben werden Waitms 10 Return Rechts: Helligkeit = Helligkeit - 5 'der wert soll um 5 abgesengt werden Waitms 10 Return '---------------------------------------------------------- Ontimer: Portd.5 = Not Portd.5 'LED wechselnd an/aus If Portd.5 = 1 Then 'Wenn LED gerade an Timer0 = 256 - Helligkeit 'Timer zählt vorwärts! Else 'Wenn LED gerade aus Timer0 = Helligkeit 'Komplementäre Zeit End If Return