mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitmuster aufteilen


Autor: Rene Pratsch (rene1989)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich möchte gern ein Bitmuster aufteilen um mit jedem Bit einzeln etwas 
zu machen

zB 01100110

zu 0, 1, 1, 0, 0, 1, 1, 0

mein Code funktioniert so nicht..
void bit(uint16_t x){
    machewasmitbit( x );
}

void bitmuster( uint16_t *y ) {
    while (*y) {
       bit(*y);
       y++;
    }
}

int main( void )
{
    bitmuster( 01100110 );
 
    return 0;
}

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll man dazu sagen...
Mach doch erst mal ein Beispiel ohne Funktionen und mit UND und ODER 
Verknüpfungen um von Werten einzelne Bits zu löschen und zu setzen.
Wenn das klappt, dann kannst Du einen Schritt weitergehen und das ganze 
in Funktionen verpacken.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void bitmuster( uint16_t *y ) {
:
int main( void ) {
    bitmuster( 01100110 );
Und lies dir bei der Gelegenheit mal das Thema Pointer nochmal genauer 
durch.


BTW:
>    bitmuster( 01100110 );
01100110 ist in C eine Oktalzahl, weil sie mit 0 beginnt.
0b01100110 ist beim gcc eine Binärzahl.

Autor: begeisterter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach doch einfach ne AND verknüpfung und fertig.

Autor: Rene Pratsch (rene1989)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe es jetzt so gelöst:
void bitfkt(uint8_t x)
{
    if( x == 0)
    {
        machewasmitbit_0( x );
    }
    if( x > 0 )
    {
        machewasmitbit_1( x );
    }
}

int main( void )
{

    uint8_t bitmuster = 0b10100110;
    uint8_t vergleich =  0b10000000;

    for(int i=1; i<=8; i++)
    {
        bit = bitmuster & vergleich;
        bitfkt( bit );
        bitmuster = bitmuster << 1;
    }

}

mfg

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.