# Forum: µC & Digital Electronics ATMEGA8 beginner problem

Rate this post
 • ▲ useful ▼ not useful
I'm using ATmega 8 (8L - 8PI) , I am trying to blink two LED's in
alternate order with legs PB0 and PB6 for each LED's but its not
working..
 1 ‪#‎define‬ F_CPU 1000000UL  2 3 ‪#‎include‬  4 #include  5 6 int  7 main (void)  8 {  9 DDRB |= _BV(DDB0);  10 DDRB |= _BV(DDB6);  11 while(1)  12 {  13 PORTB = 00000001;  14 _delay_ms(500);  15 PORTB = 01000000;  16 17 _delay_ms(500);  18 }  19 } 

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> but its not working
WHAT is not working?

Rate this post
 • ▲ useful ▼ not useful
two leds are not blinking...only one is blinking

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> PORTB = 01000000;

You need to tell the compiler it's a binary expression.

Rate this post
 • ▲ useful ▼ not useful
I am new to this(noob),can you please modify my code.

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> I am new to this(noob),can you please modify my code.

converting it to hexadecimal form would help??

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> PORTB = 00000001;
> _delay_ms(500);
> PORTB = 01000000;

Try it like this:
PORTB = 0x01;
> _delay_ms(500);
> PORTB = 0x40;

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:

while(1)
{
PORTB = 0b00000001;
_delay_ms(500);
PORTB = 0b01000000;

_delay_ms(500);
}

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> can you please modify my code.

You already got the hint ;D

Btw., I think binary representation is the better translation.

For the compiler 01000000 is a number, one million, which doesn't fit a
port of 8 bit very well. 0b01000000 will do a better job.

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> I am new to this(noob),can you please modify my code.


 1 PORTB = 0x01;  2 _delay_ms(500);  3 PORTB = 0x40;  4 _delay_ms(500); 

Alternatively, if you are using avr-gcc, you can also make use of the
"0b" notation:

 1 PORTB = 0b00000001;  2 _delay_ms(500);  3 PORTB = 0b01000000;  4 _delay_ms(500); 

Best regards,
Karol Babioch

Rate this post
 • ▲ useful ▼ not useful
Thanks to all of you,its working now :D

Rate this post
 • ▲ useful ▼ not useful
Ajay R. wrote:
> Thanks to all of you,its working now :D

Well, you should try to understand what was wrong with your notation in
order to learn something from your mistake ;).

Best regards,
Karol Babioch

Rate this post
 • ▲ useful ▼ not useful
Karol Babioch wrote:
> Ajay R. wrote:
>> Thanks to all of you,its working now :D
>
> Well, you should try to understand what was wrong with your notation in
> order to learn something from your mistake ;).
>
> Best regards,
> Karol Babioch

Karol can you name a book or give a link from where i can learn basic
AVR,I understood what i did wrong but want to further expand my
knowledge.
Thanks in advance

Rate this post
 • ▲ useful ▼ not useful
Karol Babioch wrote:
> you should try to understand
And also you should have learned, that its not enough to say:
Its not working!

Rate this post
 • ▲ useful ▼ not useful
Lothar Miller wrote:
> Karol Babioch wrote:
>> you should try to understand
> And also you should have learned, that its not enough to say:
> Its not working

Ok,from now on i will be specific about the problem i faced.