Вот работающий код (но давно это было уже). Там дествительно между
светодиодами немного задержка из-за цикла. // Temporal storage for RGB value
uint8_t cc[3];
// Loop iterators
uint8_t ci, cj;
// Pointer to the color values
uint8_t* cp;
void putColors(uint8_t* colors) {
    cp = colors;
    cj = LEDS_COUNT;
    INTERRUPT_GlobalInterruptDisable();
    
#asm
    banksel _cp
    MOVF    (_cp + 1) & 0x7F, W
    MOVWF   FSR1H
    MOVF    _cp & 0x7F, W
    MOVWF   FSR1L
LEDS_LOOP:
    banksel _cc
    MOVIW   FSR1++
    MOVWF   _cc & 0x7F
    MOVIW   FSR1++
    MOVWF   (_cc + 1) & 0x7F
    MOVIW   FSR1++
    MOVWF   (_cc + 2) & 0x7F
    MOVLW 24
    banksel _ci
    MOVWF   _ci & 0x7F
LEDS_BIT_LOOP:
    banksel _cc
    BTFSC _cc & 0x7F, 7
    BRA LEDS_SEND_1
    banksel LATC
    BSF LATC, 0x5
    BCF LATC, 0x5
    BRA LEDS_SEND_DONE
LEDS_SEND_1:
    banksel LATC
    BSF LATC, 0x5
    NOP
    NOP
    BCF LATC, 0x5
LEDS_SEND_DONE:
    banksel _cc
    RLF (_cc + 2) & 0x7F
    RLF (_cc + 1) & 0x7F
    RLF _cc & 0x7F
    banksel _ci
    DECFSZ  _ci & 0x7F
    BRA LEDS_BIT_LOOP
    banksel _cj
    DECFSZ  _cj & 0x7F
    BRA LEDS_LOOP
#endasm    
    INTERRUPT_GlobalInterruptEnable();
    __delay_us(50);
}