Das hier sollte einfach auf einen ATM8 umzuschreiben sein:
Code:
$Regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 48
$swstack = 32
$framesize = 32

' ### Reine Hardware-Pulserzeugung für ein einzelnes Servo, jitterfrei ###

Const WGM10 = 0
Const WGM11 = 1
Const WGM12 = 3
Const WGM13 = 4

Servopin Alias PortD.4
Config Servopin = Output                                    ' OC1B als Ausgang

Servo_Pos Alias Compare1B                                   ' Stellposition des Servos
Servo_Pos = 3000                                            ' Defaultposition, 2000 = 1ms, 4000 = 2ms

TCCR1A = Bits(WGM11 , WGM10 , COM1B1)                       ' Mode 15, Fast PWM, CTC
TCCR1B = Bits(WGM13 , WGM12 , CS11)                        ' Mode 15, Prescaler 8
COMPARE1A = 39999                                           ' Obere Zählgrenze
Enable Compare1A

Enable Interrupts

Do
  For Servo_Pos = 2000 To 4500                              ' Testcode, wechselweise Endpositionen anfahren
    Waitus 80
  Next Servo_Pos
  For Servo_Pos = 4500 To 2000 Step -1
    Waitms 1
  Next Servo_Pos
Loop

End

20ms_Tick_ISR:                                              ' ISR wir alle 20ms aufgerufen, kann für weitere Zwecke verwendet werden

Return
Bascom benötigt für den ATM8 nicht die Definitionen der WGM..., die sind bereits im .dat drin, können also entfallen. Was geändert werden muss, ist die Pindefinition für OC1B.