пример для красного
Спойлер
Код: Выделить всё
flash unsigned char RED_mass[256]={
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x03,
0x04, 0x05, 0x06, 0x08, 0x09, 0x0B, 0x0D, 0x0F,
0x11, 0x13, 0x15, 0x18, 0x1A, 0x1D, 0x20, 0x23,
0x26, 0x29, 0x2D, 0x30, 0x34, 0x38, 0x3C, 0x40,
0x44, 0x48, 0x4D, 0x51, 0x56, 0x5B, 0x60, 0x65,
0x6A, 0x70, 0x75, 0x7B, 0x81, 0x87, 0x8D, 0x93,
0x99, 0xA0, 0xA6, 0xAD, 0xB4, 0xBB, 0xC2, 0xC9,
0xD1, 0xD8, 0xE0, 0xE8, 0xF0, 0xF8, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void Prog_pwm(void)
{
//===Реализация программного ШИМ на 4 канала=========
if (pwm_counter++ > 255)
{
PORTB |= (1 << PORTB0)|(1 << PORTB1)|(1 << PORTB2)|(1 << PORTB3);
pwm_counter = 0;
}
if (pwm_counter > RED_mass[R]) PORTB &= ~(1 << PORTB0); //ШИМ канал для красного канала RGB LED
}