Hi,

if ((s1 > 2) && (s1 < 6))
s2=25;

was geht denn da nicht ?? Sieht doch alles korrekt aus, beschreib mal dein Problem etwas genauer...

Und noch ein paar Anmerkungen zum Code :
sbi(), cbi() sind "deprecated", werden also demnächst nicht mehr von avr-gcc unterstüzt werden. Man sollte daher zum Beispiel statt:
cbi(PORTB,2);
PORTB &= ~(1<<2);
bzw. statt
sbi(PORTB,2);
PORTB |= (1<<2); benutzten...

Gleiches gilt für "bit_is_clear" ( -> !(PIND & (1<<PIND3)) oder (PIND & (1<<PIND3)) == 0 ).

Und statt #include <io.h> sollte man #include <avr/io.h> benutzten

MfG Kjion