Вот работающий код (но давно это было уже). Там дествительно между
светодиодами немного задержка из-за цикла. // 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);
}