PWM (Pulse width Modulation)

TCCR0|=(1<<WGM01)|(1<<WGM00); /*** Fast PWM with TOP value 255 *********/
TCCR0|=(1<<COM01);  //NON Inverting mode
/********** In non inverting mode if we increase the OCRx register value PWM output voltage will increase ********/ 
TCCR0|=(1<<CS02);  // Prescaler = 256
DDRB|=(1<<DDB3); //Output OC0 pin of ATmega8
for(uint8_t  i=0;i<255;i++)
    {
     OCR2=i;_delay_ms(50);
    }
for(uint8_t  i=255;i>0;i--)
    {
      OCR2=i;_delay_ms(50);
    }
  #include<avr/io.h>
  #include<util/delay.h>
  #include"pwm.h"
int main(void)
 {
  init_PWM();
  while(1)
  {
	brightness();
	_delay_ms(200);
	darkness();
  }
  return 0;
 }