КАТЕГОРИИ: Архитектура-(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; Просмотров: 595; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |