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:
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
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.
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
Lesezeichen