Счётчик "туда-сюда", в железе пока не сделан, но уже вот-вот
Эмулируется как планировалось, кнопы жмуться, цифирьки мельтешат, значит должен заработать.
Версия Протеуса 7.2 SP2.
Предназначен для подсчёта чего-либо не очень быстрого, например отпечатанных листов или намотанных витков. При тактовой частоте 24МГц (АТ89С2051) по прикидкам должен успевать считать около 1000 событий в секунду с выводом на 6-разрядный индикатор.
Возможен счёт как на увеличение, так и на уменьшение. Можно заносить любое значение как в начале счёта, так и в паузах. При переполнении (переходе через ноль) предусмотрена звуковая и световая сигнализация.
В режиме "калькулятор" можно производить вычисления, при этом счёт идёт в фоновом режиме. Пока реализованы сложение и вычитание, планируется "дожать" умножение и деление. Все операции целочисленные, однако предусмотрена индикация десятичной запятой, на будущее. Также планируется сделать "облегчённую" модификацию с тремя-четырьмя кнопками вместо 20 и без функций калькулятора.
При отключении питания МК будет запитан от батарей, чтобы сохранить данные, но в этом вопросе есть тёмные пятна, подскажите кто занимался. Как я понял из описания АТ89Сх051, в режиме пониженного потребления ОЗУ не очищается, но выход из этого режима возможен только по сбросу, который переопределяет регистры. Если в программе не предусмотрена очистка ячеек счётчика (30Н..35Н), значит после выхода из этого режима они сохранятся?
Можно конечно перевести МК в режим ожидания с гарантированным сохранением всех данных, но потребление при этом будет в десятки или даже сотни раз выше.
Сокращения на кнопках:
К/С - перекл. режима калькулятора/счётчика
+/- - перекл. счёта на увеличение/уменьшение
SET - занесение в счётчик текущего значения
CLR - очистка индикатора и сброс переполнения
BCKSPS - бэкспэйс

ADD, SUB, MUL, DIV - соотв. слож., вычит., умнож. и дел. (умн. и дел. пока не раб.)
Левый столбец кнопок срабатывает с задержкой ~1с, остальные ~0.2с (в эмуляции дольше, зависит от проца)
COUNT - вход счётчика, в "железе" будет оптопара или геркон например
POWER - состояние питания (пока не реализовано)
Светодиоды:
OVER (красный) - переполнение
DEC и INC (жёлтый и зелёный) - счёт на умен./увел.
CALC (синий) - режим калькулятора
Это мой первый проект, если не считать пары совсем простых схемок, поэтому наверняка где-то что-то мог перемутить

Писал на ассемблере, хотел вспомнить уже порядком подзабытые институтские опыты с 580-м, да и просто потому, что с языком Си знаком мало. При создании алгоритмов опирался на книгу Фрунзе и свой здравый смысл

По тексту исходника есть скупые коментарии.
Если кого-то что-то заинтересует или появится повод для критики - с удовольствием обсудим
-- Прилагается рисунок: --
Прикрепленный файл:
4918647.rar