Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Порядок выполнения работы. Программа, в которой команды выполняются последовательно одна за другой, встречается редко




Программа, в которой команды выполняются последовательно одна за другой, встречается редко. В подавляющем числе программ используется ветвление по тем или иным условиям. Ассемблер для микроконтроллеров имеет большое разнообразие переходов по условию. По условию возможен переход к какой-нибудь команде или пропуск следующей одной команды. Переход или пропуск команды осуществляется, если условие выполняется. Переход возможен, как вперед (максимум через 63 команды), так и назад (максимум через 64) команды.

Программа микроконтроллера выполняется последовательно команда за командой. После выполнения последней команды, программа начинает выполняться с самого начала автоматически. Для того чтобы программа выполнялась с нужного места, необходимо использовать команду безусловного перехода.

Переход может быть осуществлен:

а) по результату сравнения двух регистров общего назначения или регистра общего назначения с константой. Возможные варианты сравнения: Rd = Rr (Rd = K), Rd ¹ Rr (Rd ¹ K), Rd < Rr (Rd < K), Rd ≥ Rr (Rd ≥ K);

б) по значению одного из битов (установлен или сброшен) в регистре статуса (SREG).

Пропуск команды может быть осуществлен:

а) при равенстве двух регистров общего назначения (Rd = Rr);

б) по значению одного из битов (установлен или сброшен) в регистрах общего назначения (РОН)

в) по значению одного из битов (установлен или сброшен) в 32 младших регистрах I/O.

Во многих программах возникает необходимость повторять одно и тоже действие несколько раз. Для этого в языках высокого уровня предусмотрены специальные команды цикла. В ассемблере для микроконтроллеров такой специальной команды нет, и поэтому цикл приходится организовывать самостоятельно. Вариантов организации цикла много. Ниже предлагается один из них.

Количество повторений цикла известно.

LDI R16,К; установка счетчика циклов.

CIKL:; метка начала цикла.

…; начало тела цикла.

 

…; конец тела цикла.

DEC R16; уменьшение счетчика циклов на 1.

CPI R16,0; проверка числа выполненных циклов.

BRNE CIKL; переход на метку CIKL, если заданное число циклов не

…; выполнено, т.е результат сравнения не 0. Если резуль-

; тат сравнения 0,то выход из цикла и выполнение сле-

; дующей команды.

Значение К может лежать в диапазоне 1…255. Если необходимое число повторений больше 255, то можно организовать повторение самого цикла. В этом случае цикл может иметь вид:

LDI R17,К; установка внешнего счетчика циклов.

LDI R16,К; установка внутреннего счетчика циклов.

CIKL2:; метка начала внешнего цикла.

CIKL1:; метка начала внутреннего цикла.

…; начало тела цикла.

 

…; конец тела цикла.

DEC R16; уменьшение счетчика внутренних циклов на 1.

CPI R16,0; проверка числа выполненных внутренних циклов.

BRNE CIKL1; переход на мет CIKL1, если заданное число внутрен-

; них циклов не выполнено.

DEC R17; уменьшение счетчика внешних циклов на 1.

CPI R17,0; проверка числа выполненных внешних циклов.

BRNE CIKL2; переход на мет CIKL, если заданное число внешних

…; циклов не выполнено, т.е результат сравнения не 0.

; Если результат сравнения 0,то выход из цикла и

; выполнение следующей команды.

 

При необходимости изменения числа повторения цикла в процессе выполнения программы, например, задания числа повторения с внешних устройств через порт А, вместо команды LDI R17,К используется команда IN R17,PINA.

Если число повторений цикла заранее не известно, и он выполняется до момента соблюдения некоторого условия можно предложить следующий вариант выполнения такого цикла (например, при равенстве двух регистров):

CIKL:; начало цикла.

CP R1,R2; проверка соблюдения условия выхода из цикла.

BREQ WYX; переход на метку WYX, выход из цикла при соблюдении

; условия.

…; начало тела цикла.

 

…; конец тела цикла.

RJMP CIKL; переход на начало цикла.

WYX:; метка перехода из цикла при соблюдении условия.

 

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

Ниже приведен вариант цикла, в котором соблюдение условия выхода из цикла проверяется после выполнения цикла. В этом случае при любых условиях цикл будет выполнен хотя бы один раз.

CIKL:; начало цикла.

…; начало тела цикла.

 

…; конец тела цикла.

CP R1,R2; проверка соблюдения условия выхода из цикла.

BREQ WYX; переход на метку WYX, выход из цикла при соблюдении

; условия.

RJMP CIKL; переход на начало цикла.

WYX:; метка перехода из цикла при соблюдении условия.

 

Пример организации цикла при тестировании бита (в данном случае второго в регистре общего назначения R1):

CIKL:; начало цикла.

SBRC R1,2; проверка соблюдения условия выхода из цикла (тест бита).

RJMP WYX; переход на метку WYX, выход из цикла при соблюдении

; условия (бит равен 1).

…; начало тела цикла.

 

…; конец тела цикла.

RJMP CIKL; переход на начало цикла.

WYX:; метка перехода из цикла при соблюдении условия.

 

Пока значение второго бита регистра общего назначения R1 остается равным 0, будет пропускаться команда RJMP WYX и выполняться цикл. Как только значение этого бита станет равным 1, будет выполнена команда RJMP WYX, и осуществится выход из цикла на метку WYX.

В некоторых случаях требуется выполнение каких-то действий не в процессе непрерывного цикла, а однократно при изменении входного сигнала с 0 на 1 или с 1 на 0 (например, при динамической синхронизации). При построении таких программ наиболее рационально использовать внешнее прерывание. Но если по каким-либо причинам это невозможно, можно предложить следующий алгоритм. Само действие оформлено в виде подпрограммы, а основная (фоновая) программа выполняет опрос входного сигнала. Если входной сигнал 0, то опрос повторяется вновь до тех пор, пока на входе не появится 1. После этого однократно выполняется подпрограмма и снова начинается опрос входного сигнала, только теперь опрос повторяется до тех пор, пока на входе не появится 0. После появления 0 осуществляется переход на начало основной программы и цикл начинается снова. Таким образом, подпрограмма выполняется при появлении перепада с 0 на 1.

Пример текста такой программы:

 

; начало основной (фоновой) программы

OPROS0:

SBIS PIND,2; тестирование бита 2 порта D и пропуск следую-

; щей команды, если он равен 1

RJIMP OPROS0; переход на начало опроса, если бит 2 порта D

; равен 0

RCALL PROGROMMA; переход к выполнению подпрограммы

OPROS1:

SBIC PIND,2; тестирование бита 2 порта D и пропуск следую-

; щей команды, если он равен 0

RJIMP OPROS1; переход на начало опроса, если бит 2 порта D

; равен 1

RJIMP OPROS0; переход на начало основной (фоновой) программы,

; если бит 2 порта D равен 0

PROGROMMA:

…; начало подпрограммы

RET; конец подпрограммы

 

Если необходимо выполнение подпрограммы при появлении перепада с 1 на 0, то изменяется только порядок опроса.

 

 

6.3.1 Выполняется при подготовке к работе.

а) Рассмотреть принципы построения и структуру текста программы для микроконтроллеров AVR;

б) Изучить систему команд для микроконтроллеров AVR;

в) Изучить теоретические сведения;

г) Подготовить алгоритм программы в виде блок-схемы;

д) Подготовить исходный текст программы;

е) Отладить программу в среде AvrStudio;

ж) Подготовить текстовый файл программы на электронном носителе.

6.3.2 Выполняется на лабораторном занятии.

а) Отладить программу в среде AvrStudio (если это не удалось при подготовке к работе) и продемонстрировать ее работу;

б) Со своего рабочего места ввести программу в компьютер, скомпилировать и записать в микроконтроллер;

в) Продемонстрировать работу программы на лабораторном стенде;

г) Подготовить распечатку программы с комментариями.




Поделиться с друзьями:


Дата добавления: 2014-11-18; Просмотров: 558; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.026 сек.