Yo,is nen Fehler drinne und das Listing ist schlecht strukturiert slso unübersichtlich wodurch fehler leicht herausgefordert werden.
Die Grundstruktur ist eigentlich immer gleich.
Oben kommen die Definitionen hin.
Also Variablen,benötigte Libs,welcher Controller usw.
Darunter dann die evtl. nötigen Vorbereitungen (Bei dir der Definierte Startzustand)
Ert jetzt kommt der eigentliche Programmbereich den man immer mit einem "END" abschließen sollte damit im Zweifelsfalle der Controller nicht versehentlich in die Papmpa läuft und Unsinn anstellt.(Haste ja gemacht)
Danach kommen eventuelle Daten (Datazeilen,EEProminhalte usw)
Wenn de dich dran hälst dann wirds leichter.
Ich hab mal alle Definitionen nach oben geschoben.
Die Doppelte "Dim Zeit" wird schon vom Compiler angemeckert (Is dir da nix aufgefallen ?).
Hab ich entfernt weil unsinnig.
Den rest hab ich gelassen.
So sollte es laufen.
Code:'##################################### 'Schrittmotoransteuerung an RN-Control 'Art= Vollschritt bipolar 'Anschluss 1 = Orange 'Anschluss 2 = Gelb 'Anschluss 3 = Braun 'Anschluss 4 = Schwarz '##################################### $regfile = "m32def.dat" 'controller definieren $crystal = 16000000 'Taktfrequenz definieren Dim I As Byte Dim A As Byte Dim Zeit As Byte Config Portb = Output 'Port als "Ausgang" definieren Config Portc = Output Config Portd = Output 1a Alias Portb.0 'Pin als Spule 1a benennen 1b Alias Portb.1 'Spule 1b 2a Alias Portc.6 'Spule 2a 2b Alias Portc.7 'Spule 2b Portb.0 = 0 'Spule 1a definiert auf Null Portb.1 = 0 'Spule 1b Portc.6 = 0 'Spule 2a Portc.7 = 0 'Spule 2b Portd.4 = 1 'Motortreiber Spule 1 Enable Portd.5 = 1 'Motortreiber Spule 2 Enable For I = 1 To 60 Zeit = 3 'Zeit zwischen den einzelnen Schritten (kleiner=schneller) 1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 1 Waitms Zeit 1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 2 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 3 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 4 Waitms Zeit Next I Waitms 100 For A = 1 To 60 Zeit = 3 1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 1 Waitms Zeit 1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 2 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 3 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 4 Waitms Zeit Next I End
Und gleich hinterher ein Vorschlag um das ganze etwas kleiner zu bekommen.
Erstmal das "Zeit=3" vor die Schleife denn man muß es nicht jeweils 60x auisführen.
Spart Systemzeit.
Ich vermute mal das die Ausführliche Schreibweise absicht ist aber Zweimal hintereinander das gleiche läst sich schön vereinfachen.
Natürlich läst sich das ganze noch weiter verkleinern denn Speicher ist immer Mangelware aber da wirst du vermutlich später selber noch kräftig dran feilen.Code:'##################################### 'Schrittmotoransteuerung an RN-Control 'Art= Vollschritt bipolar 'Anschluss 1 = Orange 'Anschluss 2 = Gelb 'Anschluss 3 = Braun 'Anschluss 4 = Schwarz '##################################### $regfile = "m32def.dat" 'controller definieren $crystal = 16000000 'Taktfrequenz definieren Dim I As Byte Dim A As Byte Dim Zeit As Byte Config Portb = Output 'Port als "Ausgang" definieren Config Portc = Output Config Portd = Output 1a Alias Portb.0 'Pin als Spule 1a benennen 1b Alias Portb.1 'Spule 1b 2a Alias Portc.6 'Spule 2a 2b Alias Portc.7 'Spule 2b Portb.0 = 0 'Spule 1a definiert auf Null Portb.1 = 0 'Spule 1b Portc.6 = 0 'Spule 2a Portc.7 = 0 'Spule 2b Portd.4 = 1 'Motortreiber Spule 1 Enable Portd.5 = 1 'Motortreiber Spule 2 Enable Zeit = 3 'Zeit zwischen den einzelnen Schritten (kleiner=schneller) For I = 1 To 2 Zeit = 3 For A = 1 To 60 1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 1 Waitms Zeit 1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 2 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 3 Waitms Zeit 1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 4 Waitms Zeit Next A Waitms 100 Next I End
Probier erstmal obs jetzt geht.
Lesezeichen