Если вы расширяете то, что делаете в цикле, оно становится
RB0=~RB0;
__delay_ms(delay);
RB0=~RB0;
// No delay here before it switches back
RB0=~RB0;
__delay_ms(delay);
RB0=~RB0;
RB0=~RB0;
__delay_ms(delay);
RB0=~RB0;
Обратите внимание, что между состояниями изменения светодиода нет задержки, когда он выходит из процедуры. Добавьте еще одну задержку после изменения состояния.
void led(void)
{
RB0=~RB0;
__delay_ms(delay);
RB0=~RB0;
__delay_ms(delay);
}