C ist böse nein spaß

Also da gibts ein sehr interesanntes problem beim ansteuern des schieberegisters.
Wenn ich das Programm Simuliere will das ding nicht in die else abschnit springen es springt dierekt eins drunter.
Hab ich was übersehen?

Code:
void Latch_Serialout(uint8_t DATA){
	uint8_t Puffer = 1;
	uint8_t Bitmask = 1;
	PORTD &= ~(1<<PD1); //Serial clock Down
	for (uint8_t x = 0;x < 8;x++)
	{
		Puffer = (DATA & Bitmask);
		if (Puffer == 1)
			PORTD |= (1<<PD0); //setzen;
		else
			PORTD &= ~(1<<PD0);
		PORTD |= (1<<PD1); //setzen
		PORTD &= ~(1<<PD1); //Rücksetzen
		Bitmask = (Bitmask << 1);
	}
}