Ksenya23 (07 Июнь 2012 - 21:40) писал:
т.е мы определяем на сколько будем прибавлять и уменьшать значение для конечного устройства..я поняла, что это связано с левым мультиплексором (после нажатия одной из кнопок - получаем логический "0", т.е одновременно выполняются и "*" и "/" )..может тут нужен другой подход?
1). После сброса моделирования в регистр пишется 0 - таким образом его инициализирует программа. Возможно, его можно инициализировать другим значением, но это опять вопрос к программе, я особо не искал. Правильней, конечно, инициализировать 1.
Из этого состояния при нажатии на кнопку * или / получаем тот же самый 0.
0 * 10 = 0
0 / 10 = 0.
Но так как у нас минимально допустимым значением этого регистра является 1 - то она и записывается в регистр после первого нажатия кнопок */.
2). После каждого следующего нажатия этих кнопок это значение будет обрабатываться по тем же самым принципам математического вычисления и ограничений по ТЗ, т.е. для той единицы, что получили на шаге 1
1 * 10 = 10
1 / 10 = 0.1 (т.к. число целое то оно округляется отбрасыванием до 0) = 0 (и опять поднимается до 1) = 1.
3) Если у нас 1 или число меньше 10 - то см. шаг 2
Если 10 (и больше) - опять математика
10 * 10 = 100
10 / 10 = 1
и т.д.
Одновременно и умножения, и деления не происходит ни при нажатии ни на какие кнопки.