Versuch vielleicht mal, testen kann ich es aber nicht
Code:
$regfile "ATtiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 24
'******************************************************************************
Config Portd.6 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
'******************************************************************************
Config Pind.2 = Input ' (Int0)
Config Pind.3 = Input ' (Int1)
Portd.2 = 1 ' Pullup aktivieren
Portd.3 = 1 ' Pullup aktivieren
Dim Schleife As Word
Dim Schrittweite As Word
Dim Zwischenwert As Word
Dim Richtung As Byte
Dim Tasten As Byte 'Tasten
Dim Freigabe As Byte
'( Nur wenn freigegeben, werden gedrückte Tasten akzeptiert
Für Einen Neuen Tastendruck Muß Er Erstmal Auslassen
')
Schrittweite = 1
Richtung = 1
Schleife = 100
'******************************************************************************
Do
Tasten = Pind And &H0C ' nur die Tasten-Bits
'( mögliche Werte:
&H0c Garnix Gedrückt
&H08 Taste Schritt+
&H04 Taste Schritt -
&H00 Beide Tasten - > Ungültig , Ignoriert
')
If Freigabe = 0 Then
If Tasten = &H0C Then Freigabe = 1 ' nix gedrückt, nächte gilt wieder
Else
If Tasten = &H08 Then
Freigabe = 0 ' sperren
If Schrittweite < 5 Then
Incr Schrittweite
Pulseout Portd , 6 , 5000
End If
Else
If Tasten = &H04 Then
Freigabe = 0 ' sperren
If Schrittweite > 1 Then
Decr Schrittweite
Pulseout Portd , 6 , 5000
End If
End If
End If
End If
If Richtung = 1 Then
If Schleife < 250 Then
Schleife = Schleife + Schrittweite
Waitms 10
else
richtung = 0
End If
Else
If Schleife > 100 Then
Schleife = Schleife - Schrittweite
Waitms 10
else
richtung = 1
End If
End If
Compare1a = Schleife
Zwischenwert = 350 - Schleife
Compare1b = Zwischenwert
Loop
End
Anmerkung:
das mit dem zwischenwert ist nur sicherheitshalber, ich bin nicht sicher, ob Bascom sonst richtig reagiert, weil ja Compare1b ein BYte ist, "350" aber nicht
Lesezeichen