• Один цифровой выход для открытия и закрытия водяного клапана.
• Один цифровой выход для управления звуковым сигнализатором.
• Микропроцессор для вычислений, считывания входных и формирования выходных сигналов.
• • Память программ, обычно ПЗУ какого-либо типа.
• Память данных для хранения рабочих переменных программы, обычно статическое ОЗУ.
Если учесть, что для выполнения указанных задач требуется не так уж и много времени, можно задействовать дополнительные входы микроконтроллера для контроля других параметров, таких как температура и освещенность. В результате мы сможем осуществлять более комплексное управление климатической обстановкой в теплице.
Наиболее сложной проблемой, с которой приходится сталкиваться программисту, часто является собственно постановка решаемой задачи. Для этого необходимо логическое мышление, которым обладает человек и которое отсутствует у машины. Именно способность принимать решения и является отличительной чертой хорошего программиста. Эта способность складывается из опыта, капельки таланта, а также хорошего понимания решаемой задачи.
Чтобы проиллюстрировать процесс принятия решения, продумаем последовательность элементарных действий, которые должен будет выполнить робот с микроконтроллерным управлением для перехода через регулируемый пешеходный переход на улице с оживленным движением.
Решение
1. Подойти к переходу и остановиться.
2. Посмотреть на светофор.
3. Принять решение — не горит ли в нашем направлении зеленый сигнал?
4. ЕСЛИ сигнал красный, ТО перейти к шагу 2, ИНАЧЕ продолжить.
5. Посмотреть налево.
6. Едут ли машины?
7. ЕСЛИ да, ТО перейти к шагу 5, ИНАЧЕ продолжить.
8. Посмотреть направо.
9. Едут ли машины (вообще-то все машины уже должны были остановиться, но кто знает!)?
10. ЕСЛИ да, ТО перейти к шагу 5, ИНАЧЕ продолжить.
11. Перейти через дорогу — задача решена!
На Рис. 3.10 описанный алгоритм представлен в графическом виде. В этой
Рис. 3.10.
На первый взгляд этот пример может показаться довольно глупым и надуманным, но именно эти операции вам приходится совершать каждый раз при переходе загруженной улицы по регулируемому пешеходному переходу. И именно этот алгоритм вы должны заложить в робота, чтобы он смог сделать то же самое. Такая последовательность элементарных шагов, или инструкций, называется
Разумеется, робот не будет иметь ни малейшего понятия о том, что ему делать после перехода на другую сторону, если только мы не сообщим ему об этом. Что же касается человека, то он уже, образно говоря, «запрограммирован» — у него есть опыт!
Заметьте, что этапы пронумерованы в том порядке, в котором они должны выполняться. Счетчик команд, в данном случае читатель, начинает выполнение с 1-й команды (состояние сброса) и заканчивает выполнением 11-й команды. В микроконтроллере после выполнения действий, предписываемых текущим этапом, счетчик команд автоматически инкрементируется, указывая на следующий этап, если только текущая команда не была командой пропуска или перехода. При выполнении команды пропуска счетчик команд «перепрыгивает» через следующую команду, обычно при определенном условии или результате. А при выполнении команды перехода счетчик команд просто переходит к заданному этапу. Если бы таких команд не было, в программе нельзя было бы реализовать ветвления и циклы. Под циклом в данном случае понимается многократное повторение одних и тех же действий, например периодическая проверка наличия зеленого сигнала светофора до тех пор, пока он не включится.
3.1. Можете ли вы предложить вариант инкрементирования и декрементирования содержимого рабочего регистра, показанного на Рис. 3.4, с использованием трех команд, рассмотренных в этой главе?