ATMega8_PWM_LCD_E_089_VS

//------------------------------------------------------------------------------
//  Mode.
	if ((BTN_state == BTN_st_Mode) && (BTN_state_prev != BTN_state))
	{
		mode++;
		if (mode>1) mode=0;
		if (mode==0) Output_Enable=1; else Output_Enable=0;
	}
//------------------------------------------------------------------------------
	///  (Fast PWM)
	if (Output_Enable==1)
	{
		// OC1A output: Disconnected (COM1A1=0, COM1A0=0)
		// OC1B output: Clear OC1B on Compare Match, set OC1B at BOTTOM (non-inverting mode) (COM1B1, COM1B0)
		TCCR1A=(0<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10);
	}
	else
	{
		// OC1A output: Disconnected (COM1A1=0, COM1A0=0)
		// OC1B output: Disconnected (COM1B1=0, COM1B0=0)
		TCCR1A=(0<<COM1A1)|(0<<COM1A0)|(0<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10);
	}
//------------------------------------------------------------------------------
				//OCIE1A - Timer1 Output Compare A Match Interrupt: On -  OCR1A, OCR1B
				//TOIE1  - Timer1 Overflow Interrupt: Off -   Timer1
				TIMSK = (1<<OCIE1A)|(0<<TOIE1);//TOIE1    OCIE1A
				//OCF1A - Timer1, Output Compare A Match Flag
				//TOV1 - Timer/Counter1, Overflow Flag
				TIFR=(1<<OCF1A)|(1<<TOV1); //          
				sei();//  
				//1.  OCIE1A (1    OCR1A, OCR1B   )
				//2.  TOIE1 (1       )

//------------------------------------------------------------------------------
				//OCIE1B - Timer1 Output Compare B Match Interrupt: On - /  (Fast PWM)
				TIMSK = (1<<OCIE1B);
				//OCF1B - Timer1, Output Compare B Match Flag
				TIFR=(1<<OCF1B); //     
				sei();//  				
				//  
				while ( (TIMSK & (1<<OCIE1B)) != 0) {};
				

Device: atmega8a

Program:    3874 bytes (47.3% Full)
(.text + .data + .bootloader)

Data:         45 bytes (4.4% Full)
(.data + .bss + .noinit)

EEPROM:        6 bytes (1.2% Full)
(.eeprom)
