Нарисовал схемку, номиналы резисторов (и транзисторов) пока не знаю, подберу их уже после того как куплю индикаторы.

Порт P1 используется для управления сегментами, P3.0 и P3.1 для управления первым и вторым индикатором соответственно. Кнопки "+1", "+10", "Старт" цепляются к выводам порта Р3.2, Р3.3, Р3.4. Зуммер к Р3.5. Программу счета времени я написал, а вот как осуществить вывод на экран не знаю. Про динамическую индикацию читал, но код написать не получается( Не понимаю, как написать цикл, который динамически выводил бы на каждый индикатор свое число.
Вот подпрограмма счета времени, вызывается каждый раз при срабатывании таймера 0, который настроен на секундную задержку. R1 - количество секунд, R2 - количество единиц минут, R3 - количество десятков минут.
Код: Выделить всё
;##################################################################
;Подпрограмма счета времени. Вызывается по прерыванию от таймера 0.
;##################################################################
CHECK_SEC: ;Проверяем равно ли количество секунд нулю
MOV A, R1
JZ CHECK_MIN ;Если равно, то переходим к проверке ед. минут
DEC R1 ;Если не равно, уменьшаем кол-во секунд на 1
CHECK_MIN: ;Проверяем равно ли количество единиц минут нулю
MOV A, R2
JZ CHECK_T_MIN ;Если равно, то переходим к проверке дес. минут
DEC R2 ;Если не равно, то уменьшаем кол-во ед. минут на 1
MOV R1, #59 ;и устанавливаем количество секунд равным 59
CHECK_T_MIN: ;Проверяем равно ли количество дес. минут нулю
MOV A, R3
JZ BEEP ;Если равно - то время истекло, включаем зуммер
DEC R3 ;Если нет, уменьшаем кол-во дес. минут на 1
MOV R2, #9 ;устанавливаем количество ед. минут равным 9
MOV R1, #59 ;Устанавливаем количество секунд равным 59
BEEP: ;Включение зуммера
SETB P3.5Код: Выделить всё
Symbols: ;a b c d e f g DP
DB 00000011b ;0
DB 10011111b ;1
DB 00100101b ;2
DB 00001101b ;3
DB 10011001b ;4
DB 01001001b ;5
DB 01000001b ;6
DB 00011111b ;7
DB 00000001b ;8
DB 00001001b ;9
Зажигание индикатора:
MOV A, R2 ;Заносим в аккумулятор нужное значение
MOV DPTR, #Symbols ;Уст. указ. на таблицу
MOVC A,@A+DPTR ;Выбираем из таблицы значение для вывода на индикатор
MOV P1, A ;Выдаем в порт

Буду рад, если кто-то напишет небольшой пример динамической индикации с подробными комментариями. Ну и любым замечаниям и предложениям тоже буду рад)
