Port zuweisen in C

Gast #332925
Lesenswert?
• ▲
▼
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
Gast #332926
Lesenswert?
• ▲
▼
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
Gast #332927
Lesenswert?
• ▲
▼
@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
Gast #332929
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.