Hi, ich habe eine kleine Schaltung mit einem PIC aufgebaut und ein Programm mit C für mikroC geschrieben. Ich weise gewisse Variablen über ein Define einen gewissen Port zu: #define A1 PORTB.F3 /* Ausgang 1 */ #define A2 PORTB.F2 /* Ausgang 2 */ #define A3 PORTB.F1 /* Ausgang 3 */ #define A4 PORTB.F0 /* Ausgang 4 */ So jetzt zu meinem Problem: Ich möchte gerne diese Zuweisung im Laufe des Programms in Abhängigkeit von einem merker ändern also z.B.: if (merker == 1) #define A1 PORTB.F3 /* Ausgang 1 */ #define A2 PORTB.F2 /* Ausgang 2 */ #define A3 PORTB.F1 /* Ausgang 3 */ #define A4 PORTB.F0 /* Ausgang 4 */ if (merker == 2) #define A4 PORTB.F3 /* Ausgang 1 */ #define A3 PORTB.F2 /* Ausgang 2 */ #define A2 PORTB.F1 /* Ausgang 3 */ #define A1 PORTB.F0 /* Ausgang 4 */ dies muss natürlich immer wieder während des Programmes gehen. Wisst Ihr wie ich soetwas hinbekomme? MFG Jürgen
Define sind doch Preprozessoranweisungen, die können ja doch nur am Beginn stehen und nicht irgendwo im Programm AFAIK "normale Variable" verwenden und diese dann im Programm umschalten mit switch, die entsprechenden Ausgänge je nach Zustand der Variable beschalten
@Jürgen: Die Defines sind Preprozessor-Definitionen und lenken nur den Kompiliervorgang. Während der Programmlaufzeit geht eine Auswertung nur per Software, d.h. mit if-elseif-Blöcken oder switch-case, in dem du die Variable "merker" auswertest und davon abhängig den gewünschten Port ansteuerst. Mir scheint dein Vorhaben etwas suspekt. Du versuchst doch nicht etwa, Anweisungslisten für SPS mit Programmiersprachen zu vermischen? Gruß :-) Dietmar
@Fritz: Nur zur Info: #define-Direktiven können im Prinzip überall im Programm stehen. Man kann im Prinzip ein Makro direkt vor seiner Verwendung deklarieren.
Danke für Eure Antworten, habe das ganze über Merkvariablen realisiert. Dass denke ich ist die sauberste und wohl auch die einzigste Lösung. @Dietmar: Nein ich versuche nicht Anweisungslisten für SPS mit Programmiersprache zu vermischen! Vielen Dank für Eure Hilfe. Jürgen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.