www.mikrocontroller.net

Forum: Compiler & IDEs funktion in define


Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann ich im folgenden Programm die Berechnung
BLOCKADRESSE  = EEPROM_ADRESSE/256;
SPEICHERZELLE = EEPROM_ADRESSE - BLOCKADRESSE*256;
in eine # define .... umsetzen ?

#include <iostream>
#include <cmath>

using namespace std;
int EEPROM_ADRESSE;
int SPEICHERZELLE;
int BLOCKADRESSE;
int BLOCK;
int TWDR;
int BASISADRESSE;


int main ()

{
    cout << "EEPROM ADRESSE EINGEBEN" << endl;
    cin >> EEPROM_ADRESSE;
    cout << endl;

    BLOCKADRESSE  = EEPROM_ADRESSE/256;
    SPEICHERZELLE = EEPROM_ADRESSE - BLOCKADRESSE*256;

    cout << "BLOCK ADRESSE  :  " << BLOCKADRESSE;
    cout << endl;
    cout << "SPEICHERZELLE  :  " << SPEICHERZELLE;
    cout << endl;

    BASISADRESSE = 0xA0  ;
    TWDR = BASISADRESSE + BLOCKADRESSE * 2 ;
    cout << TWDR;

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ingo Laabs schrieb:
> wie kann ich im folgenden Programm die Berechnung
> BLOCKADRESSE  = EEPROM_ADRESSE/256;
> SPEICHERZELLE = EEPROM_ADRESSE - BLOCKADRESSE*256;
> in eine # define .... umsetzen ?

zuallererst solltest du dir gleich wieder abgewöhnen Variablennamen 
ausschliesslich in Grossbuchstaben zu schreiben.
Alles in Grossbuchstaben ist traditionell der Hinweis an den Leser, dass 
es sich um ein Makro handelt.
#define BLOCK_SIZE      256
#define CALC_BLOCK(X)   ((X) / BLOCK_SIZE )
#define CALC_ADDR(X)    ((X) % BLOCK_SIZE )
int main ()

{
    cout << "EEPROM ADRESSE EINGEBEN" << endl;
    cin >> EEpromAdresse ;
    cout << endl;

    BlockAdresse  = CALC_BLOCK( EEpromAdresse );
    SpeicherZelle = CALC_ADDR( EEpromAdresse );

    cout << "BLOCK ADRESSE  :  " << BlockAdresse;
    cout << endl;
    cout << "SPEICHERZELLE  :  " << SpeicherZelle;
    cout << endl;

    BasisAdresse = 0xA0  ;
    TWDR = BasisAdresse + BlockAdresse * 2 ;
    cout << TWDR;

   ...


int EEPROM_ADRESSE;
int SPEICHERZELLE;
int BLOCKADRESSE;
int BLOCK;
int TWDR;
int BASISADRESSE;
Seit wann gibt es denn negative Adressen? Wenn du die auf int lässt, 
wirst du vermutlich irgendwann dein blaues Wunder erleben, sobald die 
Zahlen etwas größer werden.

Autor: nurabsal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib doch gleich SPEICHERZELLE = 0 ;-))

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> zuallererst solltest du dir gleich wieder abgewöhnen Variablennamen
> ausschliesslich in Grossbuchstaben zu schreiben.
> Alles in Grossbuchstaben ist traditionell der Hinweis an den Leser, dass
> es sich um ein Makro handelt.
>
>

danke.... Grossbuchstaben für Variablennamen gerade abgewöhnt

Autor: Grantler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C++ programmieren wollen, aber den Präprozessor nicht beherrschen. Des 
hamma gern.

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grantler schrieb:
> C++ programmieren wollen, aber den Präprozessor nicht beherrschen. Des
> hamma gern.

tja so isser halt der Ingo. Dafür lieb und nett..gell

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich braucht man in C++ nicht mehr viel vom Präprozessor. Für fast 
alle Anwendungsfälle gibt es einen besseren Ersatz.

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.