-1_modifyBit_return_mask

Dependencies:   mbed

main.cpp

Committer:
tina_dokic
Date:
2020-01-13
Revision:
6:ba829c650a6c
Parent:
5:c955c3107198

File content as of revision 6:ba829c650a6c:

#include "mbed.h"
 #define BUTTON1 pl4// M3:pusch joystick pin
 #define BUTTON1 A1//NUCLEO:Taster A1

int modifyBit(int x,unsigned char position, bool State);
int lauflicht(bool richtung, int time, int &anz);
void nibbleLeds(int value);
void printb(uint8_t x);

BusOut myleds(LED1,LED2,LED3,LED4);
DigitalIn button(BUTTON1);

const int INIT= 0x03;


int main() {
     int anzahl, anz;
     uint8_t value=INIT;
     
     anzahl=lauflicht(true,400,anz=0);
     printf("anzahl=%d\n", anzahl);
     
     nibbleLeds(value);
     printb(value);
     value=modifyBit(value,2,1);
     printb(modifyBit(INIT,3,1));
     wait(0.1);
}
int modifyBit(int x,unsigned char position, bool State){
    int mask=1<<position;
    int state=int(State);
    return (x & ~mask) | ((state << position) & mask);
    
    }
int lauflicht(bool richtung, int time, int &anz){
    int i;
    uint8_t lauf = 0x01;
    
    if(!richtung)
    lauf = 0x08;
    while(1)
    {
        nibbleLeds(lauf & 0x0F);
        if(richtung)
        {
            lauf =lauf << 1;
            if(lauf > 8)
            lauf =0x01;
        }
        else {
            lauf = lauf >> 1;
            if(lauf==0)
            lauf = 0x08;
            }
            if (button)
            break;
            wait_ms(time);
            anz++;
            }
            return anz;
    }

    void printb(uint8_t x){
        for (int i=sizeof(x) << 3; i;i--)
        putchar('0'+((x>>(i-1))&1));
        printf("\n");
        
        }
void nibbleLeds(int value)
{
    myleds= value%16;
}