Pegel am Pin in ein Byte lesen

Gast #164024
Hallo,
ich bin sicher, das ist schon mal diskutiert worden - aber wo finde ich
das nur?

Also, an einen Pin vom mega64 steht von extern ein serieller Datenstrom
an. Der Clock hierzu wird vom mega64 geliefert. Die Daten, die ankommen,
müssen in einer Variablen(Byte) abgelegt werden.

Mein Problem ist, wie füge ich die einzelnen Pin-Informationen in meine
Variable ein.

Mein Compiler: CodeVision

Schönen Gruß Norbert
Gast
Aus dem Kopf (ungetestet):

uint8_t
getbyte(void)
{
    unit8_t bitcnt = 0, retval = 0;

    for(bitcnt = 0; bitcnt < 8; bitcnt++)
    {
        retval <<= 1;

        if(PINx & (1 << Pxx))
            retval |= 1;
        else
            retval &= ~1;
    }

    return retval;
}
Gast
Hallo OldBug,

besten Dank, für diesen Code. Werde den übers Wochenende austesten.
Da ich, evtl., auch eine ulong-Variable beschreiben möchte, kann ich
den Code ja leicht anpassen.


Schönen Gruß Norbert

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.