controll only 1 bit from 1 byte

Guest #3027556
Rate this post
useful
not useful
AVR Studio - ATmega8 - myAVR.de MK2 Board

Hi
im learning to switch 2 leds on and off.

my problem: how can i control only 1 bit of the whole port?
1
DDRC = 0xFF;
2
PORTC = 0x01; // Turn LED 1 on
3
PORTC = 0x02; // Turn LED 2 on

The problem: the second i turn on number 2, i also turn off number one.

Is there a way of saying Byte.Bit, or PORTC.firstBit


thanks for your help
Guest #3027563
Rate this post
useful
not useful
you can use this

struct bits {
  uint8_t b0:1;
  uint8_t b1:1;
  uint8_t b2:1;
  uint8_t b3:1;
  uint8_t b4:1;
  uint8_t b5:1;
  uint8_t b6:1;
  uint8_t b7:1;
} __attribute__((_packed_));

#define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin)
#define SBIT(x,y) SBIT_(x,y)

SBIT(PORTC,0) = 0;
SBIT(PORTC,1) = 1;

Reply

Please log in before posting.

or

Log in with Google account

Registration is free and takes only a minute.

Register now