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");
}