www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit #define


Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe ein Programm für einen Temperatursensor (SHT11) geschrieben. In 
dem Porgamm habe ich ein paar Dinge mit #define definert:

...
#define SHT_DDR      DDRC    // Port with clock
#define SHT_PORT      PORTC    // Port with clock
#define SHT_PIN      PINC    // Port with clock
#define SHT_CLOCK      3    // Pin used to
#define SHT_DATA      2    // Pin used to
...


nun möchte ich einen zweiten Sensor am selben Port schließen. Um nicht 
die ganze Funtionen umschreiben zu müssen wäre es am Besten, wenn ich 
irgendwie nur die Werte von SHT_DATA und SHT_CLOCK ändern könnte. Ich 
kann ja aber schlecht sagen


      for(i=0; i<2; i++)
        {

         if(i==0)
          {
          #define SHT_CLOCK      3
    #define SHT_DATA      2
    shtsensor();
    }
  else if(i==1)
    {
    #define SHT_CLOCK      4
    #define SHT_DATA      5
    shtsensor();
    }

          }
Ich hoffe aber aus diesem falschen BSP wird mein Problem klar. 
Vielleicht habt ihr ja ne Lösung für mich.
Gruß
Olli

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum definierst du nicht zwei verschiedene?

#define SHT_CLOCK1      4
#define SHT_DATA1      5

#define SHT_CLOCK2      3
#define SHT_DATA2      2

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du könntest mit #UNDEF vieleicht arbeiten... oder halt einfach 2 defines

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um ein Umschreiben wirst Du nicht rumkommen. Aber es dürfte doch wohl 
nicht so schwer sein, die Makros rauszuschmeißen und der Funktion 
dafür Parameter zu verpassen...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder mach eine globale Variable draus, die du zwischendrin überschreiben 
kannst. Ist nicht allzu schön, aber mit wenig Änderung verbunden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.