Ok,
problem gelöst....
So gehts:
Code:
$regfile = "M168Pdef.dat" 'es handelt sich um einen ATmega168P
$crystal = 3686400 'der eingebauter RC-Oszillator läuft mit 3,6864 Mhz
$hwstack = 100 'im Speicher werden für den Hardware-Stack 100 Byte reserviert
$swstack = 100 'im Speicher werden für den Software-Stack 100 Byte reserviert
$framesize = 100 'im Speicher werden für den Frame 100 Byte reserviert
$baud = 19200
'Taster
S1 Alias Pind.2 'Taster1 an D.2
S2 Alias Pind.3 'Taster2 an D.3
S3 Alias Pind.4
Config Portd = Input 'Port D = input
Portd.2 = 1 'Pullup
Portd.3 = 1 'Pullup
Portd.4 = 1
'Hier wird der Timer und der Teiler festgelegt
Config Timer1 = Timer, Prescale = 8
'Servo 1-3
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Servo1 Alias Portb.0
Servo2 Alias Portb.1
Servo3 Alias Portb.2
Servo1 = 0
Servo2 = 0
Servo3 = 0
On Timer1 Timer_irq
Declare Sub Hoch
Declare Sub Mitte
Declare Sub Runter
Dim Serv1 As Word
Dim Serv2 As Word
Dim Kanal As Byte
Kanal = 0
Serv1 = 57500
Serv2 = 57500
'Hier werden die Timer aktiviert
Enable Timer1
Enable Interrupts
'Hier ist die Programmhauptschleife
Do
If S1 = 0 Then Call Hoch
If S2 = 0 Then Call Mitte
If S3 = 0 Then Call Runter
Loop
Timer_irq:
If Kanal = 0 Then
If Servo1 = 0 Then
Timer1 = Serv1
Servo1 = 1
Else
Servo1 = 0
Incr Kanal
End If
End If
If Kanal = 1 Then
If Servo2 = 0 Then
Timer1 = Serv2
Servo2 = 1
Else
Servo2 = 0
Incr Kanal
End If
End If
If Kanal = 2 Then
Timer1 = 40000
Kanal = 0
End If
Return
End
Sub Hoch
Serv1 = 57170
Serv2 = 57040
End Sub
Sub Mitte
Serv1 = 57340
Serv2 = 57225
End Sub
Sub Runter
Serv1 = 57750
Serv2 = 57630
End Sub
bei Anregungen oder Verbesserungsvorschlägen bitte hier antworten...
Lesezeichen