Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



WS2812B

Сообщений 61 страница 90 из 128

61

Доброго дня !

Уважаемые знатоки, WS2812 и WS2812B - это по командам одно и то же или две большие разницы ?

На 2.0.8.2 пытаюсь завести пять светодиодов из ЧиД - не работает.
Пример взял из хелпа, только мк изменил на 328.
Просто горят все  пять белым, видимо на максимальной яркости.

И, плиз, киньте куданить, если можно, последнюю актуальную библиотеку, предыдущие ссылки мертвы.

Спасибо.

0

62

в хелпе два примера под RGB и RGBW
тактовая частота верно указана?

Gordon_shumway написал(а):

И, плиз, киньте куданить, если можно, последнюю актуальную библиотеку, предыдущие ссылки мертвы.

стандартная RAINBOW должна работать

0

63

Kasym написал(а):

стандартная RAINBOW должна работать

Да, тактовую частоту проверил, все ок. Проверял на RGB.

У меня появилось предположение, что что-то не так со светодиодами. Завтра проверю, отрежу с рабочей адресной ленты несколько штук.

0

64

Kasym написал(а):

стандартная RAINBOW должна работать

Со светодиодами от ленты работает. :)  Что-то не так со светодиодами от ЧиД. Будем разбираться.

Если можно, подскажите. Немного не понял как задавать цвет.

RB_SetColor 0 , color(1)   0 - понятно, номер светодиода, а с цветом - не очень...

Спасибо.

0

65

Color - это массив из трёх байт
работая средствами библиотеки в RGB пространстве не очень красиво получается, думаю лучше сразу использовать пространство HSV - работа с яркостью и оттенками намного удобнее будет.  Библиотека с украинского сайта вполне норм

0

66

Kasym написал(а):

Color - это массив из трёх байт
работая средствами библиотеки в RGB пространстве не очень красиво получается

Разобрался, спасибо за помощь ! Случайно нашел русское описание этой библиотеки.

Про HSV я видел, для моего проекта это не сильно важно. Но в будущем хочу разобраться с этим.

0

67

А никто не заморачивался, как определить количество с/д в ленте ?
Не считая их "ручками".

Прямой команды в библиотеке для этого нет...

На ум приходит только заполнить ленту командой RB_FILL, сконфигурировав на макс. количество, а затем прочитать Color = RB_GETCOLOR(LED), перебирая значение LED до тех пор, пока не "прилетит" значение, отличное от первичного заполнения.

После этого заново сконфигурировать, но уже с конкретным значением количества.

0

68

Nord написал(а):

А никто не заморачивался, как определить количество с/д в ленте ?

Как вариант. Подключить выход ленты к МК и посмотреть когда на нем появится сигнал.

Nord написал(а):

После этого заново сконфигурировать, но уже с конкретным значением количества.

Пробовали повторно конфигурировать? Думаю не получится. При компиляции под светодиоды выделяется массив в ОЗУ. Изменить его размер нельзя.
В справке команда CONFIG RAINBOW обозначена как RE-USABLE NO, то есть переконфигурировать не получится.

0

69

Спросил потому, что практически сейчас проверить не на чем, а полного доверия Протеусу нет...
А было бы заманчиво решить этот вопрос, возможно попробую заняться. ;)

0

70

Где можно взять библиотеки RAINBOW? В инете все заблокировано.

0

71

Оно же интегрировано в компилятор/IDE баскома? :huh:

0

72

rom-i написал(а):

Config RAINBOW=1, RB0_LEN=8, RB0_PORT=PORTB,rb0_pin=0

Мой нормально "проглотил" эту строку :dontknow:

0

73

rom-i написал(а):

Баском 2.0.7.8

RAINBOW включена в "комплект" с версии 2.0.8.2
Обновитесь, на просторах инета уже даже 2.0.8.5 не в дефиците. ;)

0

74

Nord
А по поводу кода на задержках есть мысли?
Великовата длительность T0L, T1L за счет самого цикла For. Но у автора в железе работала по ютуб.

0

75

rom-i написал(а):

А по поводу кода на задержках есть мысли?

Были, пока не начал с ними экспериментировать... ;)

Ушел на использование библиотеки и не жалею.

0

76

Nord
Баском был оказывается 2.0.8.3. Библиотека работает. Только не совсем понятно с командами.
Например шифтить понятно. Как сделать типа шкалы(барграф)?

0

77

rom-i написал(а):

Как сделать типа шкалы(барграф)?

Загружаете последовательно данные для каждого с/д, начиная от "ближнего".

Связка RB_SetColor .... RB_Send для нужного количества с/д, например.
Можно задать цвет для каждого с/д.

Найдите русское описание этой библиотеки, на Форуме есть на нее ссылки.

0

78

rom-i написал(а):

Библиотека работает.

Вот , чтоб не рыться долго ;) Ссылки на сторонние ресурсы

Тему пополню со временем.

+1

79

Я долго мучался с данной библиотекой и пришёл к выводу о её бесполезности. Объясняю.
1. Очень примитивная. Варианты управления лентой весьма странные и в большинстве случаев не подходят для практического применения.
2. При разрастании программы и использовании библиотеки компилятор на каком то этапе выдаёт ошибку компиляции. Т.е. размер программы критичен для использования.
Я в своих проектах использовал только одну команду - SEND, а все манипуляции с цветом и последовательностью делал напрямую через массив RAINBOW0_ , который формируется библиотекой.
Пишите напрямую в него, тусуете его как вам нужно и потом SEND.
Есть теоретические наработки по управлению лентой через SPI или UART. Думаю, что это весьма перспективно. Правда руки не дошли пока поэкспериментировать, но дойдут. :crazyfun:
Аппаратный SPI это вам не таймеры с их задержками.
Вот один из вариантов Ссылка
Может вместе покусать данную тему?

+1

80

sva-don
Читал эту статью. Не понял как привязать SPI к длительности 1,25us. В библиотеке действительно две команды толковые нашел. Выбор пикселя Rb_setcolor, и загоузка данных в ленту Rb_send.
Моя первая программа по этой теме.

Код:
$regfile = "attiny85.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32


'-----------------------------------------------------------------------------
 Config Adc = Single , Prescaler = Auto , Reference = Avcc
 Start Adc
'-----------------------------------------------------------------------------
 Config Rainbow = 1 , Rb0_len = 96 , Rb0_port = Portb , Rb0_pin = 0
 Dim Color(3) As Byte
 R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)
'-------------------------------------------------------------------------
 Dim N As Byte
 Dim Ацп As Word
 Dim Уровень As Byte
'-----------------------------------------------------------------------------------

 Rb_selectchannel 0                                         ' select first channel
'***************************************************************************************************************
Главный_цикл:

 Ацп = Getadc(1)
 Ацп = Ацп / 10
 Уровень = Ацп
 If Уровень > 95 Then Уровень = 95

 If Уровень < 60 Then
     For N = 0 To Уровень
       R = 0 : G = 255 : B = 0 : Rb_setcolor N , Color(1)
     Next
   Else
     For N = 0 To 59
       R = 0 : G = 255 : B = 0 : Rb_setcolor N , Color(1)
     Next
 End If

 If Уровень => 60 Then
    R = 20 : G = 255 : B = 0 : Rb_setcolor 60 , Color(1)
 End If
 If Уровень => 61 Then
    R = 40 : G = 255 : B = 0 : Rb_setcolor 61 , Color(1)
 End If
 If Уровень => 62 Then
    R = 60 : G = 255 : B = 0 : Rb_setcolor 62 , Color(1)
 End If
 If Уровень => 63 Then
    R = 80 : G = 255 : B = 0 : Rb_setcolor 63 , Color(1)
 End If
 If Уровень => 64 Then
    R = 100 : G = 255 : B = 0 : Rb_setcolor 64 , Color(1)
 End If
 If Уровень => 65 Then
    R = 120 : G = 255 : B = 0 : Rb_setcolor 65 , Color(1)
 End If
 If Уровень => 66 Then
    R = 140 : G = 255 : B = 0 : Rb_setcolor 66 , Color(1)
 End If
 If Уровень => 67 Then
    R = 160 : G = 255 : B = 0 : Rb_setcolor 67 , Color(1)
 End If
 If Уровень => 68 Then
    R = 180 : G = 255 : B = 0 : Rb_setcolor 68 , Color(1)
 End If
 If Уровень => 69 Then
    R = 200 : G = 255 : B = 0 : Rb_setcolor 69 , Color(1)
 End If
 If Уровень => 70 Then
    R = 220 : G = 255 : B = 0 : Rb_setcolor 70 , Color(1)
 End If
 If Уровень => 71 Then
    R = 240 : G = 255 : B = 0 : Rb_setcolor 71 , Color(1)
 End If
 If Уровень => 72 Then
    R = 255 : G = 255 : B = 0 : Rb_setcolor 72 , Color(1)
 End If
 If Уровень => 73 Then
    R = 255 : G = 240 : B = 0 : Rb_setcolor 73 , Color(1)
 End If
 If Уровень => 74 Then
    R = 255 : G = 220 : B = 0 : Rb_setcolor 74 , Color(1)
 End If
 If Уровень => 75 Then
    R = 255 : G = 200 : B = 0 : Rb_setcolor 75 , Color(1)
 End If
 If Уровень => 76 Then
    R = 255 : G = 180 : B = 0 : Rb_setcolor 76 , Color(1)
 End If
 If Уровень => 77 Then
    R = 255 : G = 160 : B = 0 : Rb_setcolor 77 , Color(1)
 End If
 If Уровень => 78 Then
    R = 255 : G = 140 : B = 0 : Rb_setcolor 78 , Color(1)
 End If
 If Уровень => 79 Then
    R = 255 : G = 120 : B = 0 : Rb_setcolor 79 , Color(1)
 End If
 If Уровень => 80 Then
    R = 255 : G = 100 : B = 0 : Rb_setcolor 80 , Color(1)
 End If
 If Уровень => 81 Then
    R = 255 : G = 80 : B = 0 : Rb_setcolor 81 , Color(1)
 End If
 If Уровень => 82 Then
    R = 255 : G = 60 : B = 0 : Rb_setcolor 82 , Color(1)
 End If
 If Уровень => 83 Then
    R = 255 : G = 40 : B = 0 : Rb_setcolor 83 , Color(1)
 End If
 If Уровень => 84 Then
    R = 255 : G = 20 : B = 0 : Rb_setcolor 84 , Color(1)
 End If

 If Уровень > 84 Then
     For N = 85 To Уровень
       R = 255 : G = 0 : B = 0 : Rb_setcolor N , Color(1)
     Next
 End If

   For N = Уровень + 1 To 95
     R = 0 : G = 0 : B = 0 : Rb_setcolor N , Color(1)
   Next

 Rb_send

Goto Главный_цикл
'***************************************************************************************************************

https://upforme.ru/uploads/0000/25/b8/2019/t368480.jpg

0

81

Отчего не помозговать... ;)
Коллективный разум всегда себя оправдывал.

0

82

Кииньте пожалуйста наработки чего-нибуть переливающегося. Примерно люстра настроения. Ленты заказал 2х2 метра, 60 светюнов на метр. Задумка(если есть музыка, как уровень громкости. Нет звука громкого, плавно переливющаяся гирлянда.) Чет, примерно так.
Пока под библиотеку.
Лучьше переваривать задуманное, чем начинать с начала.

Отредактировано rom-i (2023-02-10 18:51:36)

0

83

rom-i написал(а):

Кииньте пожалуйста наработки чего-нибуть переливающегося.

Соседние темы полистать - "ни-ни" ? ;)
Вот, например Новогодний фонарь.

0

84

Был запрос:

rom-i написал(а):

Киньте пожалуйста наработки чего-нибуть переливающегося. Примерно люстра настроения.

Я предложил порыться на Форуме самому.
Через "Поиск" или физический просмотр.
Темы порой содержат сообщениями, которые "не в тему", но могут быть полезны в других вопросах.

rom-i написал(а):

Соседние темы уже год не активны.

Это не говорит об отсутствии в них информации. ;)

rom-i написал(а):

По этому давайте обьединяться.
Создать ссылку на вопрос, остальные под редакцию форумчан.

С "объединяться" понятно, руками и ногами за коллективный разум. ;)

А вот со вторым - не понял...  :dontknow:
Что "создавать" и "редактировать" ?
Создайте тему, дайте адекватное название и появится новая ветка обсуждения уже конкретного вопроса. ;)

0

85

Nord
Создавать мультики на Баском в этой теме практически нереально.
Хотя если разложить правильно 1024 пикселя, на 8 каналов. Получиш дисплу для себя созданную.

0

86

Индикатор уровня звука.

Код:
$regfile = "attiny85.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32

'-----------------------------------------------------------------------------
 Config Adc = Single , Prescaler = Auto , Reference = Avcc
 Start Adc
'-----------------------------------------------------------------------------
 Config Rainbow = 1 , Rb0_len = 120 , Rb0_port = Portb , Rb0_pin = 0
 Dim Color(3) As Byte
 R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)
'-------------------------------------------------------------------------
 Dim N As Byte
 Dim Ацп As Word
 Dim Уровень As Byte
'-----------------------------------------------------------------------------------

 Rb_selectchannel 0                                         ' select first channel
'***************************************************************************************************************
Главный_цикл:

 Ацп = Getadc(1)                                            'максимальное значение 960
 Ацп = Ацп / 8
 Уровень = Ацп
 If Уровень > 119 Then Уровень = 119

 If Уровень < 60 Then
     For N = 0 To Уровень
       R = 0 : G = 255 : B = 0 : Rb_setcolor N , Color(1)
     Next
   Else
     For N = 0 To 119
       R = 0 : G = 255 : B = 0 : Rb_setcolor N , Color(1)
     Next
 End If

 If Уровень => 60 Then
    R = 10 : G = 255 : B = 0 : Rb_setcolor 60 , Color(1)
 End If
 If Уровень => 61 Then
    R = 20 : G = 255 : B = 0 : Rb_setcolor 61 , Color(1)
 End If
 If Уровень => 62 Then
    R = 30 : G = 255 : B = 0 : Rb_setcolor 62 , Color(1)
 End If
 If Уровень => 63 Then
    R = 40 : G = 255 : B = 0 : Rb_setcolor 63 , Color(1)
 End If
 If Уровень => 64 Then
    R = 50 : G = 255 : B = 0 : Rb_setcolor 64 , Color(1)
 End If
 If Уровень => 65 Then
    R = 60 : G = 255 : B = 0 : Rb_setcolor 65 , Color(1)
 End If
 If Уровень => 66 Then
    R = 70 : G = 255 : B = 0 : Rb_setcolor 66 , Color(1)
 End If
 If Уровень => 67 Then
    R = 80 : G = 255 : B = 0 : Rb_setcolor 67 , Color(1)
 End If
 If Уровень => 68 Then
    R = 90 : G = 255 : B = 0 : Rb_setcolor 68 , Color(1)
 End If
 If Уровень => 69 Then
    R = 100 : G = 255 : B = 0 : Rb_setcolor 69 , Color(1)
 End If
 If Уровень => 70 Then
    R = 110 : G = 255 : B = 0 : Rb_setcolor 70 , Color(1)
 End If
 If Уровень => 71 Then
    R = 120 : G = 255 : B = 0 : Rb_setcolor 71 , Color(1)
 End If
 If Уровень => 72 Then
    R = 130 : G = 255 : B = 0 : Rb_setcolor 72 , Color(1)
 End If
 If Уровень => 73 Then
    R = 140 : G = 255 : B = 0 : Rb_setcolor 73 , Color(1)
 End If
 If Уровень => 74 Then
    R = 150 : G = 255 : B = 0 : Rb_setcolor 74 , Color(1)
 End If
 If Уровень => 75 Then
    R = 160 : G = 255 : B = 0 : Rb_setcolor 75 , Color(1)
 End If
 If Уровень => 76 Then
    R = 170 : G = 255 : B = 0 : Rb_setcolor 76 , Color(1)
 End If
 If Уровень => 77 Then
    R = 180 : G = 255 : B = 0 : Rb_setcolor 77 , Color(1)
 End If
 If Уровень => 78 Then
    R = 190 : G = 255 : B = 0 : Rb_setcolor 78 , Color(1)
 End If
 If Уровень => 79 Then
    R = 200 : G = 255 : B = 0 : Rb_setcolor 79 , Color(1)
 End If
 If Уровень => 80 Then
    R = 210 : G = 255 : B = 0 : Rb_setcolor 80 , Color(1)
 End If
 If Уровень => 81 Then
    R = 220 : G = 255 : B = 0 : Rb_setcolor 81 , Color(1)
 End If
 If Уровень => 82 Then
    R = 230 : G = 255 : B = 0 : Rb_setcolor 82 , Color(1)
 End If
 If Уровень => 83 Then
    R = 240 : G = 255 : B = 0 : Rb_setcolor 83 , Color(1)
 End If
 If Уровень => 84 Then
    R = 255 : G = 255 : B = 0 : Rb_setcolor 84 , Color(1)
 End If
 If Уровень => 85 Then
    R = 255 : G = 240 : B = 0 : Rb_setcolor 85 , Color(1)
 End If
 If Уровень => 86 Then
    R = 255 : G = 230 : B = 0 : Rb_setcolor 86 , Color(1)
 End If
 If Уровень => 87 Then
    R = 255 : G = 220 : B = 0 : Rb_setcolor 87 , Color(1)
 End If
 If Уровень => 88 Then
    R = 255 : G = 210 : B = 0 : Rb_setcolor 88 , Color(1)
 End If
 If Уровень => 89 Then
    R = 255 : G = 200 : B = 0 : Rb_setcolor 89 , Color(1)
 End If
 If Уровень => 90 Then
    R = 255 : G = 190 : B = 0 : Rb_setcolor 90 , Color(1)
 End If
 If Уровень => 91 Then
    R = 255 : G = 180 : B = 0 : Rb_setcolor 91 , Color(1)
 End If
 If Уровень => 92 Then
    R = 255 : G = 170 : B = 0 : Rb_setcolor 92 , Color(1)
 End If
 If Уровень => 93 Then
    R = 255 : G = 160 : B = 0 : Rb_setcolor 93 , Color(1)
 End If
 If Уровень => 94 Then
    R = 255 : G = 150 : B = 0 : Rb_setcolor 94 , Color(1)
 End If
 If Уровень => 95 Then
    R = 255 : G = 140 : B = 0 : Rb_setcolor 95 , Color(1)
 End If
 If Уровень => 96 Then
    R = 255 : G = 130 : B = 0 : Rb_setcolor 96 , Color(1)
 End If
 If Уровень => 97 Then
    R = 255 : G = 120 : B = 0 : Rb_setcolor 97 , Color(1)
 End If
 If Уровень => 98 Then
    R = 255 : G = 110 : B = 0 : Rb_setcolor 98 , Color(1)
 End If
 If Уровень => 99 Then
    R = 255 : G = 100 : B = 0 : Rb_setcolor 99 , Color(1)
 End If
 If Уровень => 100 Then
    R = 255 : G = 90 : B = 0 : Rb_setcolor 100 , Color(1)
 End If
 If Уровень => 101 Then
    R = 255 : G = 80 : B = 0 : Rb_setcolor 101 , Color(1)
 End If
 If Уровень => 102 Then
    R = 255 : G = 70 : B = 0 : Rb_setcolor 102 , Color(1)
 End If
 If Уровень => 103 Then
    R = 255 : G = 60 : B = 0 : Rb_setcolor 103 , Color(1)
 End If
 If Уровень => 104 Then
    R = 255 : G = 50 : B = 0 : Rb_setcolor 104 , Color(1)
 End If
 If Уровень => 105 Then
    R = 255 : G = 40 : B = 0 : Rb_setcolor 105 , Color(1)
 End If
 If Уровень => 106 Then
    R = 255 : G = 30 : B = 0 : Rb_setcolor 106 , Color(1)
 End If
 If Уровень => 107 Then
    R = 255 : G = 20 : B = 0 : Rb_setcolor 107 , Color(1)
 End If
 If Уровень => 108 Then
    R = 255 : G = 10 : B = 0 : Rb_setcolor 108 , Color(1)
 End If

 If Уровень > 108 Then
     For N = 109 To Уровень
       R = 255 : G = 0 : B = 0 : Rb_setcolor N , Color(1)
     Next
 End If

   For N = Уровень + 1 To 119
     R = 0 : G = 0 : B = 0 : Rb_setcolor N , Color(1)
   Next

 Rb_send

Goto Главный_цикл
'***************************************************************************************************************

Дописать в программу уровень шума(линейки будут светитьтся по сторонним уровня шума в виде гирлянды.)

+1

87

rom-i написал(а):

Индикатор уровня звука.

Может, вместо цепочки If .... Then использовать Select Case ?
Однако, чуток пошустрее получится... ;)
Скорость работы операторов Bascom

0

88

Nord
С Case начал. Не работает таблица от определенного уровня, до предела. Elseif делает тож самое.
Если медленно наращивать переменную с ноля, то получиться. Динамически под музыку, что-бы предидущий светюн оставался светиться, получилось только черезь отдельные "если".
Делать предварительный сброс ленты командой, идет моргуха. Пришлось перед передачей в ленту окончание забивать "нолями". Предворительное свечение заработала только черезь отдельные If.
Вот, и спрашиваю как сделать? Нужно создать в памяти буфер. Заполнить его, и передать в ленту. Если буфер переполняет количество контролеров в ленте, последняя вешается. Только сброс.
По SPI было-бы проще. Но библиотека по другому не работает.

Отредактировано rom-i (2023-02-11 10:18:21)

0

89

rom-i написал(а):

Кииньте пожалуйста наработки чего-нибуть переливающегося

Радуга+имитация огня

Proteus  8.9
Bascom  2.0.8.3

Исходник

$map              ' Получаем карту распределения памяти компилятором Bascom
  $regfile = "m1284pdef.dat"       ' Используемый контроллер
  $crystal = 16000000       ' 8 МГц    , кварц для стабильной работы USART во всём диапазоне скоростей передачи и приёма
  $framesize = 512       'размер области используемой и необходимой для преобразований
  $hwstack = 512       ' Размер аппаратного стека
  $swstack = 512       ' Размер программного стека

  Const Amount_rgb = 16

'*******************************************************************************
                     'Переменные для получения случайного числа
'*******************************************************************************
  Dim Rnd_a As Byte '
  Dim Rnd_b As Byte       '
  Dim Rnd_c As Byte       'выходное случайное число

  Rnd_a = 123 : Rnd_b = 23 : Rnd_c = 18       'Начальные Значения. Любые, Кроме 0

  Declare Sub Hsv2rgb(byval In_h As Byte , Byval In_s As Byte , Byval In_v As Byte , Out_r As Byte , Out_g As Byte , Out_b As Byte)

  Dim Hr As Byte
  Dim Hg As Byte
  Dim Hb As Byte
  Dim Sr As Byte
  Dim Sg As Byte
  Dim Sb As Byte
  Dim Tmp As Byte
  Dim Temps As Word
  Dim In_h_byte As Byte , In_s_byte As Byte , In_v_byte As Byte

  Config Rainbow = 1 , Rb0_len = Amount_rgb , Rb0_port = Porta , Rb0_pin = 3 , _
  '                                                               ^--- connected to pin 3
  '                                             ^--------------------- connected to portD
  '                                ^---------------------------------- 49 leds on stripe
  '                ^-------------------------------------------------- 1 channel

  Const Led_len = 3
  Const Farbspeicher = 3 * Led_len

  Dim Led_array(farbspeicher) As Byte
  Const Beginn_rot = Led_len + 1
  Const Beginn_blau = Beginn_rot + Led_len

  Dim N1 As Byte
  Dim N2 As Byte
  Dim N3 As Byte
'НАЧАЛЬНЫЕ ЗНАЧЕНИЯ ПАЛИТРЫ
  N1 = 0 : N2 = 64 : N3 = 128

  Dim Color(3) As Byte
  R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)

  Dim Color_up As Byte
  Dim Min_color_up As Byte
  Dim Brightness_up As Byte
  Dim Count_fire_up As Byte
  Dim Saturation_up As Byte
  Dim Temp_1_rgb_led As Byte
  Dim Temp_2_rgb_led As Byte
  Dim Count_rainbow_up As Byte
  Dim Flag_rgb_effect_up As Byte
  Dim Count_color_fire_up As Byte
  Dim Count_color_rainbow_up As Byte
  Dim Direction_saturation_up As Byte

  Rb_selectchannel 0       ' select first channel
  Rb_clearcolors       'clear colors in memory
  Rb_send

  Dim Rgb_led_up(20) As Byte

  Rgb_led_up(1) = 0
  Rgb_led_up(2) = 8
  Rgb_led_up(3) = 16
  Rgb_led_up(4) = 30
  Rgb_led_up(5) = 60
  Rgb_led_up(6) = 110
  Rgb_led_up(7) = 120
  Rgb_led_up(8) = 140
  Rgb_led_up(9) = 160
  Rgb_led_up(10) = 170
  Rgb_led_up(11) = 180
  Rgb_led_up(12) = 190
  Rgb_led_up(13) = 200
  Rgb_led_up(14) = 210
  Rgb_led_up(15) = 220
  Rgb_led_up(16) = 230

'===============================================================================
'--------------  Разрешаем работу необходимых прерываний  ----------------------
'===============================================================================

'===============================================================================

'------------  Разрешаем работу всех включенных прерываний  --------------------
'  Enable Interrupts
'===============================================================================

'         Предварительная проверка и запуск

'===============================================================================

  Min_color_up = 8
  Color_up = 12
  Brightness_up = 255
  Saturation_up = 255

'0 - радуга, 1 - огонь
  Flag_rgb_effect_up = 0

  Rb_selectchannel 0

'===============================================================================

'                   Г Л А В Н Ы Й         Ц И К Л
  Main:
'===============================================================================

       Gosub Processing_rgb
       Rb_send

       Waitms 20

'   Power Idle       ' Отправляем МК на тихий час
'===============================================================================
  Goto Main
End
'===============================================================================
'       П О Д К Л Ю Ч Е Н И Е     Р А Б О Ч И Х     М О Д У Л Е Й
'===============================================================================

'===============================================================================
  Processing_rgb:
'-------------------------------------------------------------------------------
       If Flag_rgb_effect_up = 0 Then

           Count_color_rainbow_up = 0

           For Count_rainbow_up = 1 To Amount_rgb
               Incr Rgb_led_up(count_rainbow_up)
               Temp_1_rgb_led = Rgb_led_up(count_rainbow_up) - 85
               Temp_2_rgb_led = Rgb_led_up(count_rainbow_up) - 170
               R = Lookup(rgb_led_up(count_rainbow_up) , Hsv)
               G = Lookup(temp_1_rgb_led , Hsv)
               B = Lookup(temp_2_rgb_led , Hsv)
               Rb_setcolor Count_color_rainbow_up , Color(1)
               Incr Count_color_rainbow_up
           Next Count_rainbow_up

'           Flag_write_ws2812_up = 1

         Else

             Count_color_fire_up = 0

             For Count_fire_up = 1 To Amount_rgb
                 Rgb_led_up(count_fire_up) = Rnd(color_up)

                 If Rgb_led_up(count_fire_up) < Min_color_up Then
                     Rgb_led_up(count_fire_up) = Min_color_up
                 End If

                 Gosub Rnd_byte

                 Brightness_up = Rnd_c       'Rnd(255)

                 If Brightness_up < 200 Then
                     Brightness_up = 200
                 End If

                 Call Hsv2rgb(rgb_led_up(count_fire_up) , Saturation_up , Brightness_up , R , G , B)

                 Rb_setcolor Count_color_fire_up , Color(1)
                 Incr Count_color_fire_up

             Next Count_fire_up       'For Count_fire_up = 1 To Amount_rgb

             If Direction_saturation_up = 0 Then
                 If Saturation_up < 255 Then
                     Incr Saturation_up
                   Else
                     Direction_saturation_up = 1
                 End If       'If Насыщеность < 255 Then
               Else
                 If Saturation_up > 130 Then
                     Decr Saturation_up
                   Else
                     Direction_saturation_up = 0
                 End If       'If Насыщеность > 130 Then
             End If       'If Направ_насыщеность = 0 Then

'             Flag_write_ws2812_up = 1

         End If     'If Flag_rgb_effect_up = 0 Then

'       Flag_update_up = 0
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
  Rnd_byte:       'Формирование случайного числа
'-------------------------------------------------------------------------------
    !Lds R16 , {Rnd_a}       'загрузка
    !Lds R17 , {Rnd_b}
    !Lds R18 , {Rnd_c}
    !Mov R16 , R17  'A=B
    !Mov R17 , R18  'B=C
    !Lsl R17        'B<<1
    !Brcc _Null
    !Sbr R17 , 1    'добавляем "1" в D1 если 7 бит до сдвига был "1"
   _null:
    !Mov R18 , R16  'С=B+A
    !Add R18 , R17  '-||-
    !Sts {Rnd_a} , R16       'выгрузка
    !Sts {Rnd_b} , R17
    !Sts {Rnd_c} , R18
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
'==========Функция преобразования HSV в RGB==========
'http://ru.wikipedia.org/wiki/HSV_(%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C)
'===============================================================================
  Sub Hsv2rgb(byval In_h As Byte , Byval In_s As Byte , Byval In_v As Byte , Out_r As Byte , Out_g As Byte , Out_b As Byte)
'-------------------------------------------------------------------------------
   'Получим логарифмические значения цвета RGB каналов для заданного цвета из расчитанной таблицы
   Hr = Lookup(in_h , Hsv_red)
   Hg = Lookup(in_h , Hsv_green)
   Hb = Lookup(in_h , Hsv_blue)
   'Получим значения насыщенности
   In_s = Lookup(in_s , Saturation)
   In_s_byte = In_s
   Temps = Hr * In_s

   Gosub Shift_word_right_8_sbc       'тут же делается эта (Temps = Temps - In_s) операция

   Sr = Temps

   Temps = Hg * In_s

   Gosub Shift_word_right_8_sbc       'тут же делается эта (Temps = Temps - In_s) операция

   Sg = Temps
   Temps = Hb * In_s

   Gosub Shift_word_right_8_sbc       'тут же делается эта (Temps = Temps - In_s) операция

   Sb = Temps
   'Получим значения яркости
   In_v = Lookup(in_v , Brightness)
   Temps = In_v * Sr

   Gosub Shift_word_right_8

   Out_r = Temps
   Temps = In_v * Sg

   Gosub Shift_word_right_8

   Out_g = Temps
   Temps = In_v * Sb

   Gosub Shift_word_right_8

   Out_b = Temps
'-------------------------------------------------------------------------------
  End Sub
'===============================================================================

'===============================================================================
  Shift_word_right_8_sbc:
'-------------------------------------------------------------------------------
    !lds R30 , {Temps}
    !lds R31 , {Temps + 1}
   '=>1
    !lsr R31
    !ror R30
   '=>2
    !lsr R31
    !ror R30
   '=>3
    !lsr R31
    !ror R30
   '=>4
    !lsr R31
    !ror R30
   '=>5
    !lsr R31
    !ror R30
   '=>6
    !lsr R31
    !ror R30
   '=>7
    !lsr R31
    !ror R30
   '=>8
    !lsr R31
    !ror R30

   'Temps = Temps - In_s_byte
    !clr R16
    !lds R17 , {In_s_byte}
    !SUB R30 , R17
    !sbc R31 , R16

    !sts {Temps} , R30
    !sts {Temps + 1} , R31
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
  Shift_word_right_8:
'-------------------------------------------------------------------------------
    !lds R30 , {Temps}
    !lds R31 , {Temps + 1}
   '=>1
    !lsr R31
    !ror R30
   '=>2
    !lsr R31
    !ror R30
   '=>3
    !lsr R31
    !ror R30
   '=>4
    !lsr R31
    !ror R30
   '=>5
    !lsr R31
    !ror R30
   '=>6
    !lsr R31
    !ror R30
   '=>7
    !lsr R31
    !ror R30
   '=>8
    !lsr R31
    !ror R30

    !sts {Temps} , R30
    !sts {Temps + 1} , R31
'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
  Hsv:
'-------------------------------------------------------------------------------
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
   Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
   Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
   Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
   Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
   Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
   Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Saturation:       '========== Насыщенность ==========
'-------------------------------------------------------------------------------
   Data 0 , 6 , 12 , 17 , 22 , 27 , 32 , 37 , 42 , 46 , 51 , 55 , 59 , 64 , 68 , 72
   Data 76 , 80 , 84 , 87 , 91 , 94 , 98 , 101 , 105 , 108 , 111 , 114 , 117 , 120 , 123 , 126
   Data 129 , 131 , 134 , 137 , 139 , 142 , 144 , 147 , 149 , 151 , 154 , 156 , 158 , 160 , 162 , 164
   Data 166 , 168 , 170 , 172 , 174 , 175 , 177 , 179 , 180 , 182 , 184 , 185 , 187 , 188 , 190 , 191
   Data 193 , 194 , 195 , 197 , 198 , 199 , 200 , 201 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210
   Data 211 , 212 , 213 , 214 , 215 , 216 , 217 , 217 , 218 , 219 , 220 , 221 , 221 , 222 , 223 , 224
   Data 224 , 225 , 226 , 226 , 227 , 228 , 228 , 229 , 229 , 230 , 231 , 231 , 232 , 232 , 233 , 233
   Data 234 , 234 , 235 , 235 , 235 , 236 , 236 , 237 , 237 , 238 , 238 , 238 , 239 , 239 , 240 , 240
   Data 240 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243 , 244 , 244 , 244 , 244 , 245
   Data 245 , 245 , 245 , 246 , 246 , 246 , 246 , 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248
   Data 248 , 248 , 248 , 249 , 249 , 249 , 249 , 249 , 249 , 250 , 250 , 250 , 250 , 250 , 250 , 250
   Data 250 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 251 , 252 , 252 , 252 , 252 , 252 , 252
   Data 252 , 252 , 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253 , 253
   Data 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254
   Data 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 254 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Brightness:       '========== Яркость ==========
'-------------------------------------------------------------------------------
   Data 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
   Data 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
   Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3
   Data 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4
   Data 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6
   Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8
   Data 8 , 8 , 8 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11
   Data 11 , 12 , 12 , 12 , 12 , 13 , 13 , 13 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16
   Data 16 , 16 , 17 , 17 , 18 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 21 , 22 , 22
   Data 23 , 23 , 24 , 24 , 25 , 25 , 26 , 27 , 27 , 28 , 28 , 29 , 30 , 30 , 31 , 32
   Data 32 , 33 , 34 , 35 , 35 , 36 , 37 , 38 , 39 , 39 , 40 , 41 , 42 , 43 , 44 , 45
   Data 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 55 , 56 , 57 , 58 , 59 , 61 , 62 , 63
   Data 65 , 66 , 68 , 69 , 71 , 72 , 74 , 76 , 77 , 79 , 81 , 82 , 84 , 86 , 88 , 90
   Data 92 , 94 , 96 , 98 , 100 , 102 , 105 , 107 , 109 , 112 , 114 , 117 , 119 , 122 , 125 , 127
   Data 130 , 133 , 136 , 139 , 142 , 145 , 148 , 151 , 155 , 158 , 162 , 165 , 169 , 172 , 176 , 180
   Data 184 , 188 , 192 , 197 , 201 , 205 , 210 , 214 , 219 , 224 , 229 , 234 , 239 , 244 , 250 , 255
'===============================================================================

'===============================================================================
  Hsv_red:          '========== Цветовой тон для красного ==========
'-------------------------------------------------------------------------------
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
   Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
   Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
   Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
   Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
   Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
   Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'===============================================================================

'===============================================================================
  Hsv_green:        ' ========== Цветовой тон для зелёного ==========
'-------------------------------------------------------------------------------
   Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
   Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
   Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
   Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
   Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
   Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
   Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
'===============================================================================

'===============================================================================
  Hsv_blue:         '========== Цветовой тон для синего ==========
'-------------------------------------------------------------------------------
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
   Data 6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 , 60 , 66
   Data 72 , 78 , 84 , 90 , 96 , 102 , 108 , 114 , 120 , 126 , 132
   Data 138 , 144 , 150 , 156 , 162 , 168 , 174 , 180 , 186 , 192 , 198
   Data 204 , 210 , 216 , 222 , 228 , 234 , 240 , 246 , 252 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
   Data 255 , 252 , 246 , 240 , 234 , 228 , 222 , 216 , 210 , 204 , 198
   Data 192 , 186 , 180 , 174 , 168 , 162 , 156 , 150 , 144 , 138 , 132
   Data 126 , 120 , 114 , 108 , 102 , 96 , 90 , 84 , 78 , 72 , 66
   Data 60 , 54 , 48 , 42 , 36 , 30 , 24 , 18 , 12 , 6
'===============================================================================

'0 - радуга, 1 - огонь
  Flag_rgb_effect_up = 0

https://upforme.ru/uploads/0000/25/b8/1217/t968016.jpg

+4

90

sasha_1973
Архив скачался. Ваши темы всегда отлично работают. Жаль в асме не понимаю.
Мою глупую программу тоже прошу переписать по лучьшему подходу. Только пожалуйсто без наворотов. На детском уровне. o.O

Отредактировано rom-i (2023-02-11 10:48:26)

0