Во-первых, && - это логическое И, а нужно побитовое - оператор &. Во-вторых, приоритет операторов сравнения выше, чем у логических и битовых :
0x80 & buffer == 0x80 - это 0x80 & (buffer==0x80)
а надо (0x80 & buffer)==0x80
Вообще, правильно будет записать условие так :
if ((0x80 & buffer) != 0)
или, что по сути то же самое:
if (0x80 & buffer)
А так, как было записано, условие будет выполняться только тогда, когда buffer == 0x80