so und hier meine routine:

Code:
'--------Definitionen für Servo------------
Config Timer1 = Timer , Prescale = 8
On Timer1 Timer1_irq nosave
Enable Timer1

Config Portc.3 = Output
Servo4 Alias Portc.3
Config Portc.1 = Output
Servo5 Alias Portc.1
Config Portc.0 = Output
Servo6 Alias Portc.0
Config Portb.0 = Output
Servo1 Alias Portb.0
Config Portb.1 = Output
Servo2 Alias Portb.1
Config Portb.2 = Output
Servo3 Alias Portb.2

Dim Servo_incr As Byte
Dim Servo_incr2 As Byte
Dim Servo(6) As Word                                        '0-3900
Dim Servo_aus As Bit
Dim Servo_ber As Bit



Timer1_irq:

   $asm
      push   r10
      push   r11
      push   r16
      push   r17
      push   r20
      push   r21
      push   r24
      push   r25
      push   r26
      push   r27
      in   r24,SREg
      push   r24
   $end Asm


   Select Case Servo_incr
      Case 0 : Servo1 = 1
               Int_daten = 0
      Case 1 : Servo1 = 0
      Case 2 : Servo2 = 1
      Case 3 : Servo2 = 0
      Case 4 : Servo3 = 1
      Case 5 : Servo3 = 0
      Case 6 : Servo4 = 1
      Case 7 : Servo4 = 0
      Case 8 : Servo5 = 1
      Case 9 : Servo5 = 0
      Case 10 : Servo6 = 1
      Case 11 : Servo6 = 0
   End Select

   Incr Servo_incr

   If Servo_aus = 0 Then
      Incr Servo_incr2
      Temp_word2 = 1000 + Servo(servo_incr2)
      Timer1 = 65535 - Temp_word2
   Else
      Temp_word2 = 3900 - Servo(servo_incr2)
      Timer1 = 65535 - Temp_word2
   End If

   Toggle Servo_aus

   If Servo_incr = 12 Then
      Servo_incr = 0
      Servo_incr2 = 0
      Servo_aus = 0
      Timer1 = 65535 - 12000
      Int_daten = 1
      Servo_ber = 1
   End If

   $asm
      pop   r24
      Out Sreg , R24
      pop   r27
      pop   r26
      pop   r25
      pop   r24
      pop   r21
      pop   r20
      pop   r17
      pop   r16
      pop   r11
      pop   r10
   $end Asm
Return

dies ist für 6 servos... es würde bis ca. 8 gehen....


gruss bluesmash