Code:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 8
$framesize = 24
Config Portb.2 = Input
Config Portb.1 = Output
Config Portb.0 = Output
Do 'endlosschleife
Do 'erste für motor 12V
Dim W As Integer 'Variable festlegen
Pulsein W , Pinb , 2 , 1 'Abfrage Fernsteuerung
If W <= 150 Then 'alles unter 150 (cirka die Mitte) keine Aktion
Portb.1 = 0 'port bleibt aus
End If
If W > 150 And W <= 200 Then 'alles über 150 und unter 200 Setzt port PB1 auf 5V
Portb.1 = 1
Waitms 1500 'besser hier warten, oder?? 1,5 Sekunden Warten dann PB1 auf 0V
End If
'Waitms 1500 '1,5 Sekunden Warten dann PB1 auf 0V
Portb.1 = 0
Loop Until W > 150 'aus der ersten Schleife springen wenn W größer 150 ist
'Hier dritt die Wartezeit auf obwohl keine engetragen ist
Do 'zeite für Servosteuerung
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 'servo configurieren
Enable Interrupts 'Interrupts einschalten
Dim I As Byte
For I = 100 To 200
Servo(1) = I
'waitms 12 '?? oder höher wählen
Next I
For I = 200 To 100 Step -1
Servo(1) = I
Waitms 12 '?? oder höher wählen
Next I
Disable Interrupts 'Ganz wichtig was du anschaltest solltest du auch ausschalten
I = 100
Loop Until I = 100 'aus der zweiten Schleife springen wenn I größer 100 ist
'Das Teil wird Sporadisch komplett ausgelassen
Dim Z As Integer 'wert für Aussprung aus der dritten schleife festlegen
Z = 0
For Z = 1 To 300 'diese und nächste Zeile sind unsinnig
Next Z
Portb.1 = 1 'PB1 auf 5V setzen
Waitms 1500 '1,5 Sekunden Warten dann PB1 auf 0V setzen
Portb.1 = 0
Loop Until Z = 300 'unsinnig mit For Z Schleife vorher - Z ist bereits 300
loop
end
Fehlt wohl mindestens noch ein Loop und End, oder?
Wenn keine Wartezeit gewünscht ist dann sollte sie auch nur in einen optional aktiven Block gesetzt werden.
Variablen können am Anfang des Codes gesetzt werden wenn sie eine bestimmte Nutzung haben sollen.
Ich würde dir empfehlen mit dem Pulseout Befehl zu arbeiten anstatt den Servobefehl zu benutzen.
Lesezeichen