-Valerius- писал(а):Вывод каждого разряда номеронабирателя представлен в виде 1-2-4-8 ...
Так я и думал. Не нужны Вам никакие сдвиги и лог.сложение по ИЛИ - заводите четыре выхода каждого разряда (через мультиплексор или к.л. иначе) на порт м/к и читаете этот порт - все дела. Если будут использованы четыре младших пина, то, например, так:
Принцип такой:
Add-nКак-то неясно Вы про использование вв/выв меги32 написали...
1. 40 вводов/выводов у нее нету - четыре порта по 8 = 32 вывода
2. Если "номеронабиратели" видны меге32 через 4051, то почему Вы пишете "
итого четыре разряда = 16 "пинов" контроллера"? Там получается 8+3+1+1 = 13.
3. Про дешифраторы ничего не сказано, но возможно, требование "выходы на дешифраторы по ТЗ только с контроллера" также допускает мультиплексирование. Например, если у них есть вывод CS, или вывод Common, как у "номеронабирателей" на фото.
4. Логика вычислений не изложена ("
Конечно, можно было бы напрямую соединить номеронабиратели с дешифраторами, но тогда кто вычислениями займется, как не AVR?"), однако, не исключено, что эта логика м.б. реализована без контроллера - смотря какая логика.
В общем, все, что связано с чтением номеронабирателей можно уложить в 6 или 7 выводов - в один порт, да еще и останется 1-2 вв/выв под кнопки. Если дешифраторы таковы, как я предположил выше, то их можно обрабатывать вторым портом. При отсутствии дешифратора "N -> 1_из_M", придется взять еще пару I/O из другого порта. Итого, на всякие "
2..3 кнопки, 3..4 "технологические" вывода" останется два или почти два порта.
Опишите дешифраторы, м.б. спланировать точнее.