Bascom arbeitet bei Servos mit Bytes,
http://www.rn-wissen.de/index.php/Ba...ide-Code#SERVO
d.h. du solltest für die Servovariablen auch nur bytes verwenden
Dann kannst du die Sache einfacher machen:
Im Prinzip wird das Servo immer durch den Timer auf drei verschiedene werte gestellt ( Z ), die aber festgelegt sind.
da kannst du Z gleich als Index für eine Tabelle verwenden und dir das Select ersparen (allerdings geht Z dann nichtmehr 1-3 sondern von 0-2)
Also, reduziert auf das Servo-handling:
Code:$regfile = "m48def.dat" $crystal = 16000000 $baud = 9600 'Servoeinstellungen Config Servos = 1 , Servo1 = Portd.6 , Reload = 10 Servo(1) = 90 Config Portd.6 = Output Enable Interrupts 'Schrittvariablen Dim Z As BYTE 'Timer Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1 Enable Timer1 'schalte den Timer1 ein On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1 Timer1 = 3035 'Timer1 soll schon von 3035 wegzählen Do Statusled = 1 Loop End Isr_von_timer1: 'ISR von Timer1 Timer1 = 3035 Servo(1) = lookup ( Z, Servo_tabelle) INCR Z ' Z + 1 If Z > 2 Then Z = 0 End If Return Servo_tabelle: DATA 90, 110, 130 ' servo-stellungen
Lesezeichen