ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Пятница
18 сентября
/1036853
Топик полностью
Nickname (15.09.2020 16:58, просмотров: 5) в ответ на Проблема состоит в том, что в новой партии светодиодов все развалилось, хотя в первой работало. Диаграмма формируется вставкой макроса нуля или единицы, которые суть есть ногодрыг+нопы, но в Си. И цикл вывода добавляет паузу между битами. Код написан красиво и понятно, но с таким вот результатом. - автор: my504
Вот работающий код (но давно это было уже). Там дествительно между светодиодами немного задержка из-за цикла. 
// 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); }