ATMega32 rilevare valore alto su un pin

Ciao a tutti,
rieccomi con un nuovo problema :), procedo a spiegare, ho connesso ai pin B1, B2 e B3 del mio Atmega le uscite di un deepswitch (normale interruttore con 8 in e 8 out) e ho scritto il codice seguente per rilevare il valore di questi pin in modo da capire se i relativi interruttori sono aperti o chiusi, ma non capisco perchè i dati che mi da sono sballati, nel senso che non corrispondo a realtà.

Mi dite se il codice è corretto? Grazie

		uint8_t THRESHOLD_MOTION;
	
		//Setto il valore del registro FF_MT_THS in base al valore letto sul deepswitch
		if (PINB & (1<<PINB3) ==1)
		{
			//Setto la soglia alta
			THRESHOLD_MOTION = 0b11111111;
			usart_printString("SOGLIA ALTA DEEP SWITCH 3");
			usart_printString("\r");			
		} else if (PINB & (1<<PINB2) ==1)
		{
			//Setto la soglia media
			THRESHOLD_MOTION = 0b00001111;
			usart_printString("SOGLIA MEDIA DEEP SWITCH 2");
			usart_printString("\r");			
		} else if (PINB & (1<<PINB1) ==1)
		{
			//Setto la soglia bassa
			usart_printString("SOGLIA BASSA DEEP SWITCH 1");
			usart_printString("\r");
			THRESHOLD_MOTION = 0b00000000;			
		} else {
			//Se nessun pin è settato setto come default soglia alta
			usart_printString("SOGLIA ALTA DEEP SWITCH NON SETTATO");
			usart_printString("\r");
			THRESHOLD_MOTION = 0b11111111;			
		}