Ohne den Asuro zu kennen:

Der Strichpunkt nach dem #define sw PollSwitch(); ist falsch.

In den if statements steht dann nach der Expansion der Makros:
if (PollSwitch(); & 0x01)

Es müßte aber vmtl. heißen:
if (PollSwitch() & 0x01)

BTW: Warum steht in der Zeile davor 'sw PollSwitch();'
Damit wird PollSwitch() zweimal aufgerufen und die Ergebnisse verworfen.

Georg