Denke ich habs so richtig gemacht mit der Frequenzlänge (Flanke>Flanke).

Wie könnte man es besser machen?

Jetzt fehlt noch die Duty(Highflankenlänge)... das Ding mit den Compares.... aber wie baut man das hier ein?

Ihr sollt nicht für mich progen, sondern mir einfach nen Tipp geben...
Das ich gewillt bin zu lernen habe ich mit diesem wundervollen Snippet ja bewiesen

Guckt mal bitte rüber... würde mich über etwas konstruktive Tipps freuen...
und falls sich einer mit der Duty auskennt, sind Infos dringend erwünscht...

Vielen Dank nochmal für Eure Hilfe... ich hätte es sonst nie gerafft....

Lieber Gruß
Chris

$regfile = "m8def.dat" 'AtMega8
$crystal = 16000000 '16Mhz Quartz

Dim Verzoegerung As Integer 'Verzögerung = erhöhen der Timerdifferenz
Dim Z As Integer 'Z = Zähler zum entprellen des Tasters (Entpreller)

Ddrd = &B11100000 'Ein und Ausgabeports definieren

Verzoegerung = 0 'Zum Start keine Verzögerung

Config Timer1 = Timer , Prescale = 64'Timer1 auf den aktuellen Timer setzen, Teiler 64
Enable Timer1 'Timer aktivieren
On Timer1 Isr_von_timer1 'Wenn der Timer überläuft zu Interrupt wechseln
Enable Interrupts 'Interruptbehandlung starten

Timer1 = 64000 - Verzoegerung 'Pulslänge =65535 - 64000 - 0


Do 'Hauptprogramm

If Pind.2 = 1 Then
'Wenn Taster 1 gedrückt dann....

Z = Z + 1 'Entpreller hochzählen
If Z = 100 Then 'wenn Du genug geprellt hast gehts weiter
Z = 0 'Entpreller zurücksetzen
Verzoegerung = Verzoegerung + 1 'Verzögerung erhöhen
End If
End If


If Pind.3 = 1 Then 'Wenn Taster 2 gedrückt dann...

Z = Z + 1 'Entpreller hochzählen
If Z = 100 Then 'wenn Du genug geprellt hast gehts weiter
Z = 0 'Entpreller zurücksetzen
Verzoegerung = Verzoegerung - 1 'Verzögerung verringern
End If
End If



Loop
End




Isr_von_timer1: 'Interrupt Service
Timer1 = 64000 - Verzoegerung ' Timer1 auf Startwert setzen
Toggle Portd.6 ' Toggle an Portd.6


Return