Страница 1 из 1

Битовые переменные.

Добавлено: 07 апр 2018, 22:02
seri0shka
Не хотел поднимать новую тему, но через поиск не нашёл упоминаний. Для простейшей логики используются переменные типа boolean, каждая из которых занимает байт в памяти. На самом деле в байт можно поместить 8 битовых переменных (ни для кого не секрет). Проблема в том, что для работы с битами (сложение, вычитание, инверсия и т. д.) приходится преобразовывать их снова в boolean. Создать пользовательские блоки не представляется возможным, так как скомпилированный результат должен должен быть соединением нескольких частей в одну строку. Простейший пример применения: имеем входной байт, полученный с 8 входов регистра, и выходной байт, отправленный через выходной регистр на 8 выходов. Выходной байт получается преобразованием входного байта в соответствии с заданной логикой работы. Как задать подобное для примеров на рисунке? (Только вместо пинов должны быть два бита входного байта и один бит выходного. На картинке одна и та же операция для разных языков программирования, лично мне удобней LAD.) Поднималась ли такая тема на форуме? Возможно ли создать блоки?
биты.png
Спросите: зачем это нужно? Во-первых, для общего развития. Во-вторых, связался в последнее время с ATtiny13A - прикольный маленький контроллер с 1 килобайтом памяти. Проекты прекрасно создаются в FLProg (просто подставляется другой тип контроллера). После компилирования уже в IDE выбирается ATtiny13A, и заливается скетч по способу, описанному здесь: https://ngin.pro/arduino/299-obnovlenno ... o-ide.html Для простеньких проектов не требуется никаких лишних движений, работают любые блоки, содержащие в себе простейшие операторы типа pinMode(), digitalRead(), digitalWrite() и ещё несколько, а также программирование на Си. Но уже для чуть больших проектов, чем помигать светиком, нужно оптимизировать полученный скетч, убирая промежуточные переменные. Ну и доступно только 64 байтовых переменных, что не так много.

Битовые переменные.

Добавлено: 09 апр 2018, 09:19
seri0shka
А что ответят админы? У вас вроде х опыта больше. Это неосуществимо или просто не нужно?

Битовые переменные.

Добавлено: 09 апр 2018, 09:25
pan
в создании блоков нет смысла. ибо входа и выхода блоков это те же переменные, каждая из которых занимает байт

Битовые переменные.

Добавлено: 09 апр 2018, 09:56
Sancho
[ref]seri0shka[/ref],
Вот так [spoiler]
2018-04-09_10-00-22.png
[/spoiler]

Битовые переменные.

Добавлено: 09 апр 2018, 11:03
seri0shka
А если так:
биты2.png
Блок "битовая арифметика" пока пуст. Вместо 16 промежуточных переменных получаем 2. Но вот дальше у меня проблемы, битовые операции- как китайский язык.

Отправлено спустя 21 минуту 58 секунд:
[ref=#ff8000]Sancho[/ref], что за блок "bitwise OR" ? Я в LAD намного лучше разбираюсь, извините.

Битовые переменные.

Добавлено: 09 апр 2018, 11:11
Sancho
[ref]seri0shka[/ref],
Это побитовое ИЛИ.
Операции с битами-> побитовые операции...

Битовые переменные.

Добавлено: 09 апр 2018, 14:31
seri0shka
Sancho писал(а): 09 апр 2018, 11:11Это побитовое ИЛИ.
Понял, просто не мог найти в версии 2-1.
Скажите, а это только на моём компе не удаляются соединения? В языке LAD всё нормально, а в FBD не удаляются в версии 2-1 и 2-3. приходится блок удалять и снова добавлять.
[spoiler]
биты3.png
[/spoiler]

Битовые переменные.

Добавлено: 09 апр 2018, 15:36
Sancho
seri0shka писал(а): 09 апр 2018, 14:31Скажите, а это только на моём компе не удаляются соединения? В языке LAD всё нормально, а в FBD не удаляются в версии 2-1 и 2-3. приходится блок удалять и снова добавлять.
[ref]seri0shka[/ref], не знаю, у меня всё нормально. 3.0.3

Битовые переменные.

Добавлено: 09 апр 2018, 15:43
kulibinsvv
seri0shka писал(а): 09 апр 2018, 14:31Скажите, а это только на моём компе не удаляются соединения?
Если соединены только два вывода, достаточно щёлкнуть два раза ЛКМ по линии возле вывода блока.
Если соединены более двух выводов, то наводим курсор на линию возле вывода, зажимаем ЛКМ и тянем курсор в сторону, отпускаем ЛКМ.

ЛКМ - левая кнопка мыши.

Битовые переменные.

Добавлено: 09 апр 2018, 16:16
seri0shka
[ref]kulibinsvv[/ref], спасибо. Только не по линии, а по входу блока, получается. Надо же, как по-разному в LAD и FBD.