bytes

 avatar
unknown
abap
2 years ago
3.4 kB
5
Indexable
#include<stdio.h>
enum valori { alfa = 0, beta = 1, gama = 2, delta = 3, epsilon = 4 };
int Leds = 0xAB; //10101011

int ex_switch(int n); //exercitiu 3
int ex_elseif(int n); //exercitiu 3
int ex_factorialFor(int n); // exercitiu 4
int ex_factorialWhile(int n);
void printbits(int input);
unsigned char SetByteBit(unsigned char Byte, unsigned char Bit);
unsigned char ResetByteBit(unsigned char Byte, unsigned char Bit);

#define LED0 0x01
#define LED1 0x02
#define LED2 0x04
#define LED3 0x08 
#define LED4 0x10
#define LED5 0x20
#define LED6 0x40
#define LED7 0x80

/*
#define LED0 0x01
#define LED1 0x02
#define LED2 0x04
#define LED3 0x08 
#define LED4 0x16
#define LED5 0x32
#define LED6 0x64
#define LED7 0x128
*/


int main()
{
    int n = 0;
    unsigned char LED_States = 0x00;
    unsigned char val, i;

    printf("The values of the LEDs before: \n");
    for (i = 0; i <= 7; i++) {

        val = ((0x01 << i) & LED_States) >> i;
        printf("%d", val);
    }

    //LED_States &= (~(LED3 | LED4));

    val = SetByteBit(LED_States, LED2);
    val = SetByteBit(LED_States, LED6);

    printf("\n The final values of the LEDs: ");

    for (i = 0; i <= 7; i++)
    {
        val = ((0x01 << i) & LED_States) >> i;
        printf("%d", val);
    }
    //scanf_s("%d", &n);

    //printf("%d", ex_switch(n));
    //printf(" %d", ex_elseif(n));
    //printf(" %d", ex_factorialFor(n));
    //printf(" %d", ex_factorialWhile(n));

    //Leds |= MASK_LED2AND6_ON;    // set bit
    //Leds &= MASK_LED3AND4_OFF; // clear bit

    //Leds |= 1 << x;    // set bit
    //Leds &= ~(1 << x); // clear bit
    //SetByteBit( Byte, Bit)
   // ResetByteBit(Byte, Bit)

    //printbits(Leds);
    return 0;
}

int ex_switch(int n)
{
    int returnVal;
    switch (n)
    {
    case alfa:
    {
        returnVal = (n + n);
        break;
    }
    case beta:
    {
        returnVal = (n * n);
        break;
    }
    case gama:
    {
        returnVal = (n * n);
        break;
    }
    case delta:
    {
        returnVal = (n + n + n * n);
        break;
    }
    case epsilon:
    {
        returnVal = (n + n * n * n);
        break;
    }
    default:
    {
        //do nothing
    }
    }

    return returnVal;
}

int ex_elseif(int n)
{
    int returnVal;
    if (n == alfa) {
        returnVal = (n + n);
    }
    else if (n == beta) {
        returnVal = (n * n);
    }
    else if (n == gama) {
        returnVal = (n * n);
    }
    else if (n == delta) {
        returnVal = (n + n + n * n);
    }
    else if (n == epsilon) {
        returnVal = (n + n * n * n);
    }
    else {
        //do nothing
    }

    return returnVal;
}

int ex_factorialFor(int n)
{
    int factorial = 1, i = 0;
    for (i = 1; i <= n; i++)
    {
        factorial *= i;
    }

    return factorial;
}

int ex_factorialWhile(int n)
{
    int factorial = 1;
    while (n != 0)
    {
        factorial *= n;
        n--;

    }

    return factorial;
}




unsigned char SetByteBit(unsigned char Byte, unsigned char Bit) {

    Byte = ((0x01 << Bit) | Byte);
    Byte = (0x01 << 7) | Byte;

    return Byte;
}

unsigned char ResetByteBit(unsigned char Byte, unsigned char Bit) {

    Byte = (~(0x01 << Bit)) & Byte;

    return Byte;
}
Editor is loading...