Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Микроконтроллеры (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 |