Robert Buch / Robert Buch

2_Lekt_Bitmanipulation

Wiki-Seite

Gehe auf die Lehrerbox/PE/TINF und kopiere den Inhalt der Datei program-wiki.txt auf IHRE EIGENE Wiki-Seite und ändere bzw. erweitere die entsprechenden Programme bzw. Textteile.

Diese Programme wurden im Mbed-Simulator geschrieben und getestet.

Lektion: LaufShift

Programmbeschreibung:
Änderungen:
Datum:

A1_Lekt2_LaufShift_Bitmanipulation.cpp

/*
0. Aufgabe: [LaufShift]] Programmiere ein Lauflicht für die 
vier blauen Leds mit BusOut und Verschiebe Operatoren.
*/

#include "mbed.h"

//BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5);
BusOut leds(D0,D3,D6,D9);

void laufshift();
int main()
{
    
    while(1)
    {
        laufshift(); 
    }    
}

void laufshift()
{
    leds=1;
    wait_ms(250);
    for(int i=1;i<5;i++) 
    {
        leds=leds<<1;
        wait_ms(250);    
    }   
}

Lektion: SetDelTogBits_and_ByteShift

Programmbeschreibung:
Änderungen:
Datum:

A2u3_Lekt2_SetDelTogBits_and_ByteShift_Bitmanipulation.cpp

#include "mbed.h"

/*
[SetDelTogBits] Schreibe ein Programm das folgende Tasks beinhaltet:

//MSB LSB

    Lösche (0) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint8_t.
    Setze (1) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint16_t.
    Toggle (0 wird 1 bzw. 1 wird 0) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint32_t.
    Lösche/Setze/Toggle das 3. und das 5. Bit beim Datentype uint8_t. 
*/
BusOut myleds(LED1, LED2, LED3, LED4);
 
 
void print_binary(uint8_t x) {  // function to print binary   
    for(int i=sizeof(x)<<3; i; i--)
        putchar('0'+((x>>(i-1))&1));
}

void delbits();
void setbits();
void togbits();
void lst_3_5();

int main() {
        //delbits();
        //setbits();
        //togbits();
        //lst_3_5();
}

void lst_3_5()
{
        //uint8_t value = 0b11111111; //löschen
        //uint8_t mask =  0b00010100; //löschen
        
        //uint8_t value = 0b11101011; //setzen
        //uint8_t mask =  0b00010100; //setzen
        
        uint8_t value = 0b10000100; //toggeln
        uint8_t mask =  0b00010100; //toggeln
        
        
       
        printf("value: ");
        print_binary(value);
        printf("   orginal! \n");
        
        printf("\n===========================\n");
        printf("mask: ");
        print_binary(mask);
        printf("\n===========================\n\n");
        
        //value=value| (1 << 2) | (1 << 4); //1000 0000 wird zu 10010100 //setzen 
                                               
        //value=value&~mask; //LÖSCHEN an 3. und 5. Stelle
        //value=value|mask; //SETZEN an 3. und 5. Stelle
        //value=value^mask; //TOGGELN an 3. und 5. Stelle
        printf("value: ");
        print_binary(value);
        printf("   geändert! \n");
        
}


void togbits()
{
    uint32_t value = 0b10011001;
    uint32_t mask = 0b11111111;
            
        printf("value: ");
        print_binary(value);
 
        printf("   orginal! \n");
        

        printf("\n===========================\n");
        printf("mask: ");
        print_binary(mask);
        printf("\n===========================\n\n");
        
        value=value^mask; //TOGGELN ^ EXOR und alles 1er in mask
        printf("value: ");
        print_binary(value);
        printf("   geandert! \n"); 
    
}


void setbits()
{
    uint16_t value = 0b00011000;
    uint16_t mask = 0b10000001;
            
        printf("value: ");
        print_binary(value);
 
        printf("   orginal! \n");
        


        printf("\n===========================\n");
        printf("mask: ");
        print_binary(mask);
        printf("\n===========================\n\n");
        
        value=value|mask; //SETZEN
        printf("value: ");
        print_binary(value);
        printf("   geandert! \n"); 
}


void delbits()   
{
    
        uint8_t value = 0b10011001;
        uint8_t mask  = 0b10000001; 
        
        printf("value: ");
        print_binary(value);
 
        printf("   orginal! \n");
        


        printf("\n===========================\n");
        printf("mask: ");
        print_binary(mask);
        printf("\n===========================\n\n");
        
        value=value&~mask;  //LÖSCHEN
        printf("value: ");
        print_binary(value);
        printf("   geandert! \n");
}

All wikipages