Problem mit parity.h

Gast #78078
Hallo
habe ein Problem mit der Headerdatei parity.h.
Wie kann ich diese beim Empfang oder Senden von
Daten verwenden.
Wenn ich der Funktion "parity_even_bit(val)" einen
Wert übergebe, fehlt danach im Listing diese Funktion.
Wie kann ich nun das Parity-Bit prüfen?
Kleines Beispiel wäre gut.
   Gruss
    Jack
Gast
Die ,,Funktion'' ist in Wirklichkeit ein C-Präprozessormakro,
d. h. der erzeugte Code dafür wird life an der entsprechenden Stelle
im Programm hinterlegt.  Damit kannst Du natürlich im Listing keine
entsprechende Funktion sehen.

Das hättest Du übrigens durch Nachsehen im entsprechenden Headerfile
schnell selbst erkennen können.
Gast
Hallo Jörg Wunsch
aber selbst im AVR-Studio mit der Simulation
der Hex-Datei wird diese nicht aufgerufen.
Mein Problem liegt beim Aufrufen des Makros.
Ich übergebe  ihr einen  Wert und weis nicht
wie ich das Parity-Bit nun  prüfe. Was und wie
bekomme ich etwas zurück?
     Gruss
       Jack
"Was und wie bekomme ich etwas zurück?"

Du bist wohl sehr neu in der C-Programmierung ?

Der Rückgabewert einer Funktion ist typischer Weise die Funktion
selbst, außer sie ist vom Typ "void".

Und wenn Du diesen nirgendwo zuweist, ist es auch klar, daß sie
komplett wegoptimiert wird.


Peter
Gast
Der Makro gibt natürlich in der Tat einen Wert zurück, d. h. er
evaluiert zu einem Ausdruck, den man auf der rechten Seite einer
Zuweisung benutzen kann.

Benutzt habe ich ihn auch noch nicht, aber der Makrocode suggeriert
mir, daß er den Wert 1 zurückgibt, wenn der übergebene Wert gerade
Parität hat, den Wert 0 sonst.  Bevor ich all das mov/xor/swap/lsr
dort wirklich verstehe, würde ich das lieber über einem Satz bekannter
Eingabewerte simulieren und mir das Ergebnis angucken. :-)

p. s.: Ja, er ist noch nicht dokumentiert.  Steht auch in doc/TODO im
Sourcecode drin, daß dies noch zu tun ist.  Wenn das also jemand
ausprobiert hat, nehmen wir auch noch Dokumentation dafür entgegen...
Gast
Hallo Peter Dannegger
1. Ja ich bin neu in C
2. Was ist hier falsch bei meiner Deklaration

#include <avr\io8535.h>
#include <avr\parity.h>

    char parity_even_bit(char val);
    char Parity;

void main(void)
{
    Parity=parity_even_bit(3);
}

     Gruss
       Jack
Ich glaube mal, für ein Macro darfst Du keinen Prototypen anlegen, da es
ja keine echte Funktion ist.

Also:

#include <avr\io8535.h>
#include <avr\parity.h>

//    char parity_even_bit(char val);   <- Problem !!!
    char Parity;

void main(void)
{
    Parity=parity_even_bit(3);
}


Und Du solltest dann mit "Parity" irgendwas machen, z.B. auf einen
Port ausgeben.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.