Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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"); }