ПРОГРАММА НА ЯЗЫКЕ АССЕМБЛЕРА С ИСПОЛЬЗОВАНИЕМ ЦИКЛОВ И УСЛОВНЫХ ПЕРЕХОДОВ.
ЦЕЛЬ. Отработать первичные навыки работы с программами на языке Ассемблера.
ЗАДАНИЕ. Составить развёрнутое описание программы управления переключением светодиодного индикатора при помощи одной кнопки, используя листинг 4.3, в котором указать смысл директив и операторов и выполняемые по ним действия.
КОНТРОЛЬНЫЕ ВОПРОСЫ.
Каково назначение главного рабочего регистра ?
Каким и как установлен текущий адрес?
Каково назначение резистора и внутренних резисторов?
Как подключаются внутренние резисторы?
Что обозначают метки main в строках 16, 18 и m1, m2 в строках 21, 24, 25, 27 листинга?
Как выполняются условные переходы?
ЛИТЕРАТУРА.Белов А.В. Разработка устройств на микроконтроллерах AVR. – СПб.: Наука и техника, 2013. – 528 с.: ил. + СD.
Постановка задачи. «Разработать устройство управления одним светодиодом при помощи одной кнопки. При каждом нажатии кнопки светодиод должен поочерёдно включаться и отключаться. При первом нажатии кнопки светодиод должен включиться, при следующем – отключиться и т. д.».
Схема устройства
Алгоритм программы управления управления светодиодом
переключающимся светодиодом
Описание алгоритма.
Сразу после старта программы выполняется установка вершины стека.
Следующее действие – программирование портов ввода-вывода.
1. Первая операция цикла – проверка состояния младшего разряда порта PD (PD0)
Программа читает состояние порта, затем сравнивает значение разряда PD0 с единицей.
2. Если сравнение выполняется, то программа переходит по стрелке «Да» к началу цикла.
3. Если «Нет», то выполняется ещё одна операция сравнения, когда определяется, горит ли светодиод. Если РВ0 = 1, то есть светодиод не горит, то разряд сбрасывается в «0», если РВ0 = 0, то есть светодиод горит, то разряд устанавливается в «1», то есть диод гасится.
Эти переключения осуществляются всё время , в течение которого кнопка нажата и программа остановится после отпускания кнопки в случайном состоянии.
Для исключения этого в программу вводится процедура ожидания. По ней программа останавливается после переключения диода и ожидает отпускания кнопки, после чего выполнение главного цикла возобновляется.
Поэтому в программу вводится две операции.
4. Сначала программа читает значение PD0 и сравнивает его с «1». Если PD0 = 0 (кнопка нажата), то цикл ожидания повторяется.
5. Если PD0 = 1 (кнопка отжата), то цикл ожидания прерывается, и управление переходит на начало основного цикла.