Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Алгоритм для программы


Автор: Jead 31.10.2011, 00:04
Доброе время суток!
Очень нужна помощь, подсказка.. Хотя бы направление.

В общем у нас имеется модуль ввода вывода, который содержит в своем составе четыре кнопки и четыре светодиода. Свечениe светодиода обеспечивается в том случае, если в соответствующем разряде модуля (D7...D4) имеет место логическая единица. Нажатие любой кнопки приводит к формированию логической единицы на линии, связанной с кнопкой (D3...D0).

Структурная схема модуля.
http://s1.ipicture.ru/Gallery/Viewfull/6586347.html

И требуется обеспечить при отпущенных кнопках S1, S2 и S3 свечение светодиода VD1.  При нажатии любой (одной) из кнопок свечение светодиода VD2. При нажатии любой пары кнопок свечение светодиода VD3. В случае одновременного нажатия трех кнопок должен гореть светодиод VD4.

О программировании говорить еще пока рано.
В общем я составил структурную схему подсистемы, которая выглядит так.

http://s1.ipicture.ru/Gallery/Viewfull/6586416.html
Дальше требуется составить алгоритм решения задачи, а вот тут-то и наступает ступор. До этого писал алгоритмы всего пару раз, и то абсолютно несерьезные.

Можете помочь с этим делом? Насколько я понял для реализации надо использовать сумматор.

Составил первые два пункта, а дальше проблемы

Включение - Запись логической единицы в порт Р1.3 - Дело доходит до сумматора и я теряюсь.
Очень надеюсь на понимание и помощь..

Автор: 1Smex 31.10.2011, 01:03
А использование модуля ввода-вывода критично?

Если можно обойтись без него предлагаю реализовать устройство на обычной дискретной логике И-ИЛИ-НЕ.

Если использование модуля критично - думаю, все проще в плане алгоритма "если тако-то порт = 1", то "вывести 1 в такой-то порт".

Автор: Jead 31.10.2011, 01:24
Да, критично. Немного не понял Ваше предложение. Как я себе представляю работу программы - сумматор считывает количество импульсов на трех выводах с кнопок. Если импульсов нет (кнопки не нажаты) зажигается первый с-диод. Если импульс один (1 кнопка нажата) загорается второй с-диод, если 2 - третий, если три - четвертый. Просто не знаю как написать алгоритм именно перед сумматором. После - более менее понятно, что надо делать проверку на равность нулю, единице, двум и трем..

Автор: baldina 31.10.2011, 01:24
надо составить таблицу истинности, из нее и будет следовать программная или аппаратная реализация

по условию:
VD1 = NOT (S1 OR S2 OR S3)
VD2 = S1 OR S2 OR S3 OR S4
VD3 = (S1 AND (S2 OR S3 OR S4)) OR (S2 AND (S1 OR S3 OR S4)) OR (S3 AND (S1 OR S2 OR S4))
VD4 = (S1 AND S2 AND S3) OR (S1 AND S2 AND S4) OR (S2 AND S3 AND S4) OR (S1 AND S3 AND S4)

Добавлено через 1 минуту и 34 секунды
никакие сумматоры Вам не нужны, не усложняйте

Автор: 1Smex 31.10.2011, 01:31
Алгоритм заранее нам известен - компьютер тут не нужен, можно обойтись и цифровым автоматом (Мура или Мили).
Суть я понял. 
Не понимаю только, зачем тут модуль ввода-вывода. Если он тут стоит, значит, и управлять должен он. Разве нет?
И какой алгоритм можно написать для сумматора, я тоже не совсем понял.

Автор: Jead 31.10.2011, 01:42
Ну, как бы, у нас лабораторная работа именно по модулям ввода-вывода, поэтому они и присутствуют. 
Дальше, я тоже задумывался по поводу таблицы истинности, и даже составлял ее, но у нас строгий преподаватель, должно быть ТОЛЬКО так, как он скажет =( Т.е. нужен сумматор, и четкий алгоритм, со всеми стрелками, правильными элементами ромбами и т.д..

Автор: 1Smex 31.10.2011, 02:13
Ну тогда собираешь по схеме ниже и далее обрабатываешь комбинации сигналов на выходе логикой (составить таблицу истинности).

Я других решений не нашел, хотя использование сумматоров - уже извращение.


Автор: 1Smex 31.10.2011, 02:16
На выходе можно дешифратор поставить, тогда в зависимости от суммируемого числа, будет дергаться соответствующая нога, к ней и цеплять диод.

А со съхемой я налажал третий сумматор убрать нафиг и тогда можно обойтись без таблицы истинности.

Автор: Jead 31.10.2011, 11:33
Спасибо большое за помощь, но Вы наверное не так меня поняли..

На данный момент мне требуется разработать алгоритм такого типа

http://s1.ipicture.ru/Gallery/Viewfull/6589633.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)