Вадиматоричик писал(а):Нужно как то 12 ноликов или единиц привести к одному числу в 10-тичной системе.
При чем здесь 10-чная система?
12 переменных надо думать булевские (горит-не горит, 0-1)? Значит берем 16-разрядную переменную Y, обнуляем, а дальше:
-суммируем ее с нашей переменной X1 (одна из 12)
-умножаем Y на 2 или сдвигаем влево
-суммируем с X2
-умножаем
...
...
-суммируем с X12
-выводим по SPI младший и старший байты. все.
выводить второй байт можно как все 8 бит (все равно в 595-х регистрах по 8 выходов), так и нужные 4 - так быстрее, но нужно уметь управлять регистром статуса SPI (там счетчик тактов есть).
А теперь в чем проблема этого языка: все эти 12 переменных, если компилятор достаточно умный, на самом деле все-равно уже лежат в 2-х соседних байтах памяти отдельными битами. В худшем случае они занимают отдельные байты, но тогда это уже

Так вот, тут нам приходится делать лишнюю работу и собирать байт из битов, которые
уже лежат в одном байте. Как объяснить компилятору что этот байт надо целиком отправить в порт? Если есть возможность оформить их как структуру (или как там еще это можно обозвать), это еще хорошо, в Си вроде это без проблем. В ассемблере это вообще делается автоматом еще на этапе выделения памяти в сегменте данных, и потом элементарно выводится парой строчек кода.
Вариантов остается несколько:
1) Остаться на FlowCode и разбираться самому, ждать нескольких человек, которые тоже знают эту среду или уйти на их форум. Еще раз уточню - серьезных вещей на этом языке не написать.
2) Перейти на Си. Большая часть народа пишет на нем. Многие могут помочь советом. Но нужно некоторое знание синтаксиса.
3) Перейти на ассемблер. Многие (в т.ч. я) сидят на нем. Начинать в любом случае нужно с него - придет полное понимание работы контроллера и его периферии. Такие вопросы, как работа SPI вообще бы не возникли, если посмотреть структурную схему модуля SPI и описание его регистров.