Maskieren..ok, man lernt nie aus 
Bin ja eh nicht sooo der progger, mach lieber mechanische dinge und progg nur was ich muss, aber falls es dich interessiert poste ich dir hier gerna mal das ganze Programm....da ich aber natürlich faul bin, ist es unkommentiert, aber du kannst ja vll. trotzdem was mit anfangen 
Code:
$regfile = "m16def.dat"
$framesize = 24
$swstack = 8
$hwstack = 32
$crystal = 16000000
$baud = 9600
Ddrc = &B10000000
Ddrb = &B11111000
Ddrd = &B00000000
Portb = 255
Portd = 0
Dim A As Word
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim Result As Byte
B = 0
C = 0
D = 0
Waitms 200
Gosub Drehbereich
Enable Interrupts
Enable Int0
Config Int0 = Change
On Int0 Drehbereich
Config Adc = Single , Prescaler = Auto
Start Adc
Do
Select Case Pind.3
Case 1 : Gosub Rechts
Case 0 : Gosub Links
End Select
Loop
Rechts:
Portb.3 = 0
Portb.4 = 1
Portc.7 = 1
A = Getadc(b)
A = A / 8
Select Case A
Case 59 To 69 : A = 64
Case 128 : A = 127
End Select
'128 ; Servodevice ; Servocommand ; Servonummer ; Servodata
Print Chr(128) ; Chr(1) ; Chr(2) ; Chr(b) ; Chr(a)
Incr B
Select Case B
Case Is > 7 : B = 0
End Select
Waitms 1
Return
Links:
Portb.3 = 1
Portb.4 = 0
Portc.7 = 0
A = Getadc(b)
A = A / 8
C = B + 8
Select Case A
Case 59 To 69 : A = 64
Case 128 : A = 127
End Select
'128 ; Servodevice ; Servocommand ; Servonummer ; Servodata
Print Chr(128) ; Chr(1) ; Chr(2) ; Chr(c) ; Chr(a)
Incr B
Select Case B
Case Is > 7 : B = 0
End Select
Waitms 1
Return
Drehbereich:
If Pind.2 = 1 Then
Result = Pinb And 7
Select Case Result
Case 0 : D = 4
Case 1 : D = 12
Case 2 : D = 8
Case 3 : D = 16
Case 4 : D = 6
Case 5 : D = 14
Case 6 : D = 10
Case 7 : D = 18
End Select
For B = 0 To 15 Step 1
'128 ; Servodevice ; Servocommand ; Servonummer ; Servodata
Print Chr(128) ; Chr(1) ; Chr(0) ; Chr(b) ; Chr(d)
Next
Else
For B = 0 To 15 Step 1
'128 ; Servodevice ; Servocommand ; Servonummer ; Servodata
Print Chr(128) ; Chr(1) ; Chr(0) ; Chr(b) ; Chr(20)
Next
End If
Return
End
Gruss Stefan
Lesezeichen