Цитата(klen)
IO1PIN & (1<<LINK_LED_IOPIN) ? (IO1CLR = (1<<LINK_LED_IOPIN)) : (IO1SET = (1<<LINK_LED_IOPIN));
Скажем так, по условию задачи нельзя читать текущее состояние из IOxPIN. Для P0.31 это так на самом деле.
А самый короткий способ как на Си, так и на АSMе я уже написал:
IOxPIN = IOxSET ^ (1U<<n);
ЗЫ: Меня всегда интересовало почему IOxSET для чтения/записи, а IOxCLR только для записи. И недавно я это выяснил

Теперь всё встало на свои места!