Genau so ist es: Alles zwischen "If...then" und "end if" wird nur ausgeführt, wenn die Bedingung erfüllt ist, und übersprungen, wenn sie es nicht ist.
Ein paar Fehlerchen sind mir noch aufgefallen:
1. Die Hauptschleife kennzeichnet man am besten mit "Do" und "Loop" anstatt mit Main und Goto main.
2. Diese Zeilen:
müssen unbedingt in die Hauptschleife - sonst wird der Eingangs-Status ja nur ein einziges mal auf die Ausgänge weitergegeben, und alle Änderungen an den Eingängen würden ins leere laufen.Code:Portc.3 = Pind.0 'Richtung X Portc.0 = Pind.2 'Richtung Y Portd.6 = Pind.4 'Richtung Z Portd.7 = Pind.1 'Takt X Portc.1 = Pind.3 'Takt Y Portc.4 = Pind.5 'Takt Z
3. Interrupt-Routinen sollten eigentlich immer hinter dem "Loop" stehen
4. Damit der Timer-Überlauf-Interrupt ausgeführt werden kann, musst Du
a. definieren, wie die Timer-ISR heißt
b. den speziellen Timer-Interrupt freigeben, und
c. die Interrupts allgemein freigeben.
Und das ganze am Besten VOR der Do-Loop-Schleife. In Code sähe das etwa so aus:
Code:Config Timer1 = timer, Prescaler = 8 On Timer1 Timer1_ISR 'so heißt die Timer1-ISR. Kann auch jeder andere Name sein! Enable Timer1 'aktiviert NICHT den Timer, sondern den Timer-Interrupt!! Enable Interrupts 'aktiviert Interrupts allgemein
Das ganze Schritt für Schritt zu programmieren ist sicher eine gute Idee - erstmal bei fest stehenden Enables die Eingangssignale auf den Ausgängen auszugeben, und dann Funktion für Funktion dazuprogrammieren.
Gutes Gelingen - bin gespannt auf feedback!
Gruß,
Daniel







Zitieren

Lesezeichen