Добавил:
volobl035@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

KT_metod_ch2

.pdf
Скачиваний:
6
Добавлен:
17.06.2018
Размер:
502.08 Кб
Скачать

Присвоим переменной b значение 1.

add a,b

Сложим переменные a и b, результат сложения поместим в a.

sub b,a

Сложим переменные b, a. Результат сложения поместим в b.

Прежде чем приступать к отладке программы, выполним расчеты вручную.В результате выполнения двух последних операций мы должны получить в регистрах R16 – 11,а в регистре R17 -10.

Запустим компиляцию нажав на кнопку F7. В статусном окне вы должны увидеть результаты и найденные ошибки. Если ошибок нет, появится сообщение 0 errors, 0 warnings.

Если компиляция прошла успешно, нажмите на кнопку Play (синий треугольник) и слева разверните раздел Registers 16-32.

Отладка программы осуществляется последовательным нажатием кнопки

F11.

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

6. Команды перехода

В отличии от высокоуровневых языков, таких как C++ или Delphi , в языке ассемблера нет переходов по условиям «Если». Для этого применяется так называемый статусный регистр SREG.

Изменим нашу первую программу следующим образом:

.def a=r16

.def b=r17

.org $000

rjmp programm1 programm1:

ldi a,1 ldi b,3

cp a,b (команда сравнения переменных a,b)

Произведем компиляцию и запустим программу. В окне I/O view откроем вкладку I/O Atiny 2313 и затем вкладку CPU. Разверните статусный регистр и проведите отладку с помощью кнопки F11. Запишите флаги, которые будут установлены.

Теперь повторите ту же операцию для тех случаев, когда переменные будут равны или когда переменная a будет больше чем переменная b. Запишите результаты.

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

Напишем программу, которая учитывает установку флагов:

def a=r16

.def b=r17

.org $000

rjmp programm1 programm1:

ldi a,10 ldi b,1 cp a,b

brcs proc2 ldi a,5

rjmp programm1 proc2:

ldi a,6

rjmp programm1

В этой программе, в случае когда a больше чем b, в переменную а будет всегда заносится значение 5. Если а будет меньше чем b, то соответственно в переменную а будет заноситься значение 6.

Переход осуществляется с помощью команды brcs, которая срабатывает, когда устанавливается флаг С.

Самостоятельно напишите программу по сортировке 3х чисел по возрастанию.

7. ЗАДАНИЕ НА КОНТРОЛЬНУЮ РАБОТУ

Контрольная работа состоит из решения двух задач с использованием микроконтроллера.

Вариант выдается на установочной лекции.

7.1. Задание 1

Разработать полную электрическую схему (выбрать источник питания, кварцевый резонатор, семисегментный индикатор и другие элементы схемы) с использованием микроконтроллера Atmel Atiny 2313 и написать программу для разработанного устройства.

Разработанное устройство должно выполнять следующую задачу:

Устройство контроля проверяет наличие аварийного сигнала на аналоговом датчике аварии. Если аварийный сигнал выше 3В, это означает наличие аварии. Максимальное значение – 5В.

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

Если аналоговый сигнал больше 1В и меньше 3В – на экране семисегментного индикатора должна гореть черточка.

Если обрыва нет, то на индикаторе должен отображаться 0. Схему выполнить на листах формата А4 или А3.

№ используемых

Время

Номер варианта

 

присоединений

ожидания

для второго

 

 

(секунды)

вопроса

1

1,2,3,4,5

1

13

2

1,2,3,4,7

2

2

3

2,3,4,5,6

3

1

4

2,4,5,6,7

4

4

5

3,4,5,6,7

5

5

6

1,3,5,6,7

6

6

7

2,3,4,6,9

7

11

8

5,6,7,8,9

8

7

9

2,3,5,6,9

9

4

10

4,5,6,7,8

10

12

11

1,2,5,6,7

11

8

12

1,3,4,8,9

12

10

13

1,2,5,6,9

13

9

14

2,4,5,6,9

14

2

15

1,5,6,8,9

15

13

16

3,5,7,8,9

0.1

4

17

1,2,3,8,9

0.2

5

18

1,2,3,5,7

0.3

1

19

1,3,5,6,7

0.4

9

20

1,2,3,4,7

0.5

7

21

1,3,5,6,8

0.6

12

22

1,2,3,6,7

0.7

4

23

1,3,4,7,8

0.8

2

24

1,3,4,8,9

0.9

1

25

1,2,5,7,8

0.15

6

26

1,5,6,8,9

0.11

3

27

3,4,5,8,9

0.16

9

28

3,4,5,7,9

0.12

11

29

2,4,5,8,9

0.14

2

30

2,3,4,6,9

0.11

8

Если номер больше указанного в таблице, выбирается вариант соотв. порядковому номеру с вычитанием 30 из него.

Микроконтроллер работает с частотой 4мгц. Для упрощения написания кода, каждой команде соответствует 2 такта. В качестве преобразователя аналогового сигнала можно использовать схему на усилителях или дополнительный микроконтроллер с АЦП.

Программа должна быть написана только на языке Assembler специфики

AVR.

7.2 ЗАДАНИЕ 2

В задании требуется описать алгоритм и написать текст программы на языке

Assembler.

ВАРИАНТ №1

Программа получает данные в двоичном виде (последовательно группами до 3 битов) и выводит их на 2 семисегментных индикатора в шестнадцатеричном виде если эти числа больше 4.

ВАРИАНТ № 2

Программа получает данные о температуре с порта. Температура изменяется от 0 до 255. 255 соотв. 60 градусам. Требуется вывести данные на 2 индикатора.

ВАРИАНТ № 3

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

ВАРИАНТ №4

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

ВАРИАНТ №5

Получить с порта данные о состоянии температуры котла. Температура изменяется от 0 до 255. Значение 255 соответствует 150 градусам по Цельсию. В случае превышения средней температурой отметки в 90 градусов вывести сигнал аварии на пульт дежурного. Средней температурой считается среднее значение температуры за 5 измерений.

ВАРИАНТ №6

На два пина порта подаются сигналы от системы защит. В случае возникновения аварийного сигнала на одном из пинов, активировать проверку на втором пине. Если на двух пинах присутствует аварийный сигнал, последовательно вывести коды аварии 00001111, 01010101 на выходной порт с интервалом в 2 секунды

ВАРИАНТ № 7

Постоянно мониторить сигнал на входном порту. В случае, если четыре старших бита полученных с порта дадут число большее, чем четыре

младших, вывести сумму этих чисел на выходной порт дважды, с интервалом в 1 секунду.

ВАРИАНТ №8

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

ВАРИАНТ № 9

На входящий порт поступает сигнал на один из пинов в двоичном виде. Последовательность состоит из 8 битов. Принять сигнал , перевести в десятичный вид, вычесть из полученного числа 100 и отправить в двоичном виде на выходной порт.

Вариант № 10

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

Вариант 11

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

Вариант 12

Программа выводит на семисегментный индикатор последовательно числа 5, 4, 9,2 с задержкой в 1 секунду.

Вариант 13

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

Требования к выполнению контрольной работы.

Контрольная работа выполняется в печатном виде на листах А4 согласно требованиям ВУЗа. Для успешной сдачи работы, допускается не более 15% ошибок в листинге программы в каждом из заданий.

Работа сдается на проверку до сессии, назначается время защиты, если работа проверена и дан допуск к защите.

Список учебников:

1.Голубцов М.С. Микроконтроллеры AVR от простого к сложному. Год издания: 2003 Солон-Пресс , с. 288

2.Белов А. В. Конструирование устройств на микроконтроллерах.

3.Белов А. В. Микроконтроллеры AVR в радиолюбительской практике.

4.Гребнев В. В. Микроконтроллеры семейства AVR фирмы Atmel.

5.Евстифеев А. В. Микроконтроллеры AVR семейств Tiny и Mega фирмы

Atmel.