Stefan Simbürger / Mbed 2 deprecated Test_13012020

Dependencies:   mbed

Committer:
Ursukar
Date:
Mon Jan 13 18:09:51 2020 +0000
Revision:
5:9df9f5f6fa57
Parent:
4:4f42c2344e23
Child:
6:7dc8014c6ed6
modifyBit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ursukar 0:b9a45f0c6467 1 #include "mbed.h"
Ursukar 0:b9a45f0c6467 2 #define Button1 p14
Ursukar 0:b9a45f0c6467 3
Ursukar 1:02f0f5d98031 4 void nibbleLeds(int value);
Ursukar 3:fa690e648ff7 5 int lauflicht(bool richtung, int time, int&anz);
Ursukar 4:4f42c2344e23 6 void printb(uint8_t);
Ursukar 5:9df9f5f6fa57 7 int modifyBit(int x, unsigned char position, bool State);
Ursukar 0:b9a45f0c6467 8 BusOut myleds(LED1, LED2, LED3, LED4);
Ursukar 1:02f0f5d98031 9 //DigitalIn button(BUTTON1);
Ursukar 0:b9a45f0c6467 10
Ursukar 0:b9a45f0c6467 11 const int INIT = 0x03;
Ursukar 0:b9a45f0c6467 12
Ursukar 0:b9a45f0c6467 13 int main() {
Ursukar 2:12ca7ca1b80c 14 int anzahl, anz;
Ursukar 1:02f0f5d98031 15 uint8_t value = INIT;
Ursukar 2:12ca7ca1b80c 16
Ursukar 3:fa690e648ff7 17 anzahl = lauflicht(true, 400, anz=0);
Ursukar 3:fa690e648ff7 18 printf("anzahl= %d\n", anzahl);
Ursukar 2:12ca7ca1b80c 19 nibbleLeds(value);
Ursukar 4:4f42c2344e23 20 printb(value);
Ursukar 5:9df9f5f6fa57 21 value = modifyBit(value, 2, 1);
Ursukar 4:4f42c2344e23 22 printb(myleds);
Ursukar 5:9df9f5f6fa57 23 printb(modifyBit(INIT, 3, 1));
Ursukar 2:12ca7ca1b80c 24 wait(0.1);
Ursukar 0:b9a45f0c6467 25 }
Ursukar 2:12ca7ca1b80c 26
Ursukar 2:12ca7ca1b80c 27 void nibbleLeds(int value)
Ursukar 2:12ca7ca1b80c 28 {
Ursukar 2:12ca7ca1b80c 29 myleds = value%16;
Ursukar 3:fa690e648ff7 30 }
Ursukar 3:fa690e648ff7 31
Ursukar 3:fa690e648ff7 32 int lauflicht(bool richtung, int time, int&anz)
Ursukar 3:fa690e648ff7 33 {
Ursukar 3:fa690e648ff7 34 uint8_t lauf = 0x01;
Ursukar 3:fa690e648ff7 35
Ursukar 3:fa690e648ff7 36 if(!richtung)
Ursukar 3:fa690e648ff7 37 lauf = 0x08;
Ursukar 3:fa690e648ff7 38
Ursukar 3:fa690e648ff7 39 while(1){
Ursukar 3:fa690e648ff7 40 nibbleLeds(lauf&0x0F);
Ursukar 3:fa690e648ff7 41 if(richtung){
Ursukar 3:fa690e648ff7 42 lauf = lauf << 1;
Ursukar 3:fa690e648ff7 43
Ursukar 3:fa690e648ff7 44 if(lauf > 8)
Ursukar 3:fa690e648ff7 45 lauf = 0x01;
Ursukar 3:fa690e648ff7 46 }
Ursukar 3:fa690e648ff7 47 else{
Ursukar 3:fa690e648ff7 48 lauf = lauf >> 1;
Ursukar 3:fa690e648ff7 49 if(lauf == 0)
Ursukar 3:fa690e648ff7 50 lauf = 0x08;
Ursukar 3:fa690e648ff7 51 }
Ursukar 3:fa690e648ff7 52 if(button)
Ursukar 3:fa690e648ff7 53 break;
Ursukar 3:fa690e648ff7 54 wait_ms(time);
Ursukar 3:fa690e648ff7 55 anz++;
Ursukar 3:fa690e648ff7 56 }
Ursukar 4:4f42c2344e23 57 return anz;
Ursukar 4:4f42c2344e23 58 }
Ursukar 4:4f42c2344e23 59
Ursukar 4:4f42c2344e23 60 void printb(uint8_t x)
Ursukar 4:4f42c2344e23 61 {
Ursukar 4:4f42c2344e23 62 for(int i=8; i; i--)
Ursukar 4:4f42c2344e23 63 printf("%d", (x>>(i-1)) &1);
Ursukar 4:4f42c2344e23 64 printf("\n");
Ursukar 5:9df9f5f6fa57 65 }
Ursukar 5:9df9f5f6fa57 66
Ursukar 5:9df9f5f6fa57 67 int modifyBit(int x, uint8_t position, bool State)
Ursukar 5:9df9f5f6fa57 68 {
Ursukar 5:9df9f5f6fa57 69 int mask = 1 << position;
Ursukar 5:9df9f5f6fa57 70 int state = int(State);
Ursukar 5:9df9f5f6fa57 71 return (x& ~mask) | ((state << position) & mask);
Ursukar 2:12ca7ca1b80c 72 }