16x2 LCD not working with ATmega 8
As the datasheet for the HD44780U says, you can't check the busy flag until the controller is fully initialized. Use delays before sending 0x30 to the display three times, with durations of 15ms, 4.1ms, and 100us respectively. See the "Initializing by Instruction" section of the HD44780U datasheet for details.