Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Методические указания к практическому заданию 2 страница




; классический шифратор 4 в 2. Использование организации массива

; в ОЗУ и косвенной адресации.

; вход В5, В3, А1, А0, выход С1, С0.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $30; адрес начала основной программы в памяти программ.

 

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$00

OUT PORTC,R16; начальная выходная комбинация

OUT DDRA,R16; программирование порта А на вход

OUT DDRB,R16; программирование порта В на вход

LDI R17,$FF

OUT DDRC, R17; программирование порта С на выход

;******************** задание массива входных переменных

LDI R16,1

STS 100,R16

LDI R16,2

STS 101,R16

LDI R16,4

STS 102,R16

LDI R16,8

STS 103,R16

;******************** задание массива выходных кодов

LDI R16,0

STS 104,R16

LDI R16,1

STS 105,R16

LDI R16,2

STS 106,R16

LDI R16,3

STS 107,R16

PROGRAMMA:

;******************* опрос портов I/O

IN R16,PINA; поместить входные данные из порта А в R16

IN R17,PINB; поместить входные данные из порта В в R17

;******************* компоновка входной информации в один байт

BST R17,3; перемещение бита В3 в бит 2 регистра R16

BLD R16,2; через флаг Т регистра статуса

BST R17,5; перемещение бита В5 в бит 3 регистра R16

BLD R16,3; через флаг Т регистра статуса

ANDI R16,$0F; обнуление четырех старших бит регистра R16

;***************** задание начального адреса массивов в ОЗУ

LDI R27,0; начальный адрес массива входных переменных

LDI R26,100

;***************** обработка массива входных переменных

CIKL:

LD R17,X; загрузка в R17 элемента массива входных переменных

CP R16,R17; сравнение входной комбинации и элемента массива

BREQ VYVOD; переход на метку вывода информации, если они равны

INC R26; установка адреса следующего элемента массива

; входных переменных

RJMP CIKL; переход к новому циклу сравнения

VYVOD:

ADIW R26,4; вычисление адреса элемента выходного кода

LD R18,Y; поместить в R18 выбранный элемент массива выход-

; ных кодов

OUT PORTC,R18; отправить выходной код на выход

RJMP PROGRAMMA; перейти на метку PROGRAMMA для нового оп-

;роса входа

 

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

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

Общий массив входных переменных и выходных кодов здесь находится не в ОЗУ, а в программной памяти. Он задается директивой DB и организуется в процессе компиляции. Начальный адрес этого массива определяется путем подсчета команд, которые выполняются перед директивой DB. В данном случае это команда rjmp, которая занимает два байта и находится по адресу $000. Поэтому начальный адрес массива 0 + 2 = 2, т. е. $002. В этом общем массиве комбинация входных переменных и соответствующий ей выходной код смещены относительно друг друга на 4 адреса (байта памяти).

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

 

;*******************************************

; классический шифратор 4 в 2. Использование организации массива

; в памяти программ и косвенной адресации.

; вход В5, В3, А1, А0, выход С1, С0.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

MASSIV:

.DB 1, 2, 4, 8, 0, 1, 2, 3; задание в памяти программ общего массива

; входных переменных и выходных кодов

.org $30; адрес начала основной программы в памяти программ.

 

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$00

OUT PORTC,R16; начальная выходная комбинация

OUT DDRA,R16; программирование порта А на вход

OUT DDRB,R16; программирование порта В на вход

LDI R17,$FF

OUT DDRC, R17; программирование порта С на выход

 

PROGRAMMA:

;******************* опрос портов I/O

IN R16,PINA; поместить входные данные из порта А в R16

IN R17,PINB; поместить входные данные из порта В в R17

;******************* компоновка входной информации в один байт

BST R17,3; перемещение бита В3 в бит 2 регистра R16

BLD R16,2; через флаг Т регистра статуса

BST R17,5; перемещение бита В5 в бит 3 регистра R16

BLD R16,3; через флаг Т регистра статуса

ANDI R16,$0F; обнуление четырех старших бит регистра R16

;***************** задание начального адреса общего массива входных

; переменных и выходных кодов

LDI R31,0; старший байт регистра Z

LDI R30,2; младший байт регистра Z

;******************обработка массивов

CIKL:

LPM; извлечение из памяти программ в регистр R0

; элемента массива входных переменных

CP R16,R0; сравнение элемента массива входных переменных

; с входной комбинацией

BREQ VYVOD; переход на метку вывода элемента массива, если он

; равен входной комбинации

INC R30; установка адреса следующего элемента массива

RJMP CIKL; переход к новому циклу сравнения

VYVOD:

ADIW R30,4; вычисление адреса выводимого элемента массива

; выходных кодов

LPM; извлечение из памяти программ в регистр R0

; элемента массива входных переменных

OUT PORTC,R0; отправить выходной код на выход

RJMP PROGRAMMA; перейти на метку для нового опроса входа

 

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

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

Программирование портов I/O аналогичное предыдущим программам.

Входная информация компануется в регистрах R16 и R17 в двух младших разрядах с помощью сдвига и переноса значений битов в нужные места через флаг Т регистра статуса.

Значение битов С1 и С0 определяется одновременно с помощью побитной операции ИЛИ формируется в регистре R16 и отправляется на выход.

Блок-схема алгоритма программы, реализующее аналитическое выражение работы шифратора, показана на рисунке 6.6.

 

 

Рисунок 6.6 Блок-схема алгоритма пятого варианта программы

 

Текст программы, составленный по этой блок-схеме алгоритма:

 

;*******************************************

; классический шифратор 4 в 2. Использование напрямую аналитического

; выражения

; вход В5, В3, А1, А0, выход С1, С0.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $30; адрес начала основной программы в памяти программ.

 

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$00

OUT PORTC,R16; установка начальной выходной комбинации

OUT DDRA,R16; программирование порта А на вход

OUT DDRB,R16; программирование порта В на вход

LDI R17,$FF

OUT DDRC, R17; программирование порта С на выход

 

PROGRAMMA:

;******************* опрос портов I/O

IN R16,PINA; поместить входные данные из порта А в R16

IN R17,PINB; поместить входные данные из порта В в R17

;*******************компоновка входной информации в R16 и R17

BST R17,5; перемещение бита 5 (В5) в

BLD R17,0; в бит 0 регистра R17 через флаг Т регистра статуса

BLD R17,1; в бит 1 регистра R17 через флаг Т регистра статуса

LSR R16; перемещение бита 1 (А1) регистра R16 в бит 0 R16

BST R17,3; перемещение бита 3 (В3) в

BLD R16,1; в бит 1 регистра R16 через флаг Т регистра статуса

;******************формирование выходного кода

OR R16,R17; вычисление выходного кода

ANDI R16, $03; обнуление битов 2…7 выходного кода

OUT PORTC,R16; отправить выходной код на выход

RJMP PROGRAMMA; переход на метку PROGRAMMA для нового оп-

; роса входа

 

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

 

 
 

 


нет

 

Рисунок 6.7 Блок-схема алгоритма шестого варианта программы

 

Наиболее рациональное построение такой программы с использованием внешнего прерывания будет рассмотрено в следующей лабораторной работе. Здесь же рассмотрен способ построения с помощью непрерывного опроса синхронизирующего входа. Синхронизирующим входом выбран порт D2 микроконтроллера. Активный перепад с 0 на 1.

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

 

 
 

 

 


Рисунок 6.8 Блок-схема алгоритма подпрограммы, имитирующей шифратор

После блока программирования портов I/O предусмотрен блок организации стека. Стек необходим при использовании подпрограмм. Подробно стек и его организация будет рассмотрено в следующей лабораторной работе.

Основная (фоновая) программа начинается с тестирования (опроса состояния) бита 2 порта D (регистр PIND) на единичное значение. Если бит равен 0, то опрос повторяется снова до тех пор, пока бит не примет значение 1. Когда бит равен 1, осуществляется вызов подпрограммы и ее выполнение. После выполнения подпрограммы происходит возврат в основную программу и снова начинается опрос состояния бита 2 порта D. Только теперь тестирование происходит на нулевое значение и опрос повторяется до тех пор, пока бит не примет значение 0. Когда бит равен 0, осуществляется переход к блоку тестирование бита 2 порта D на единичное значение. Весь цикл повторяется сначала.

Блок-схема алгоритма программы работы шифратора для этого случая показана на рисунке 6.7.

Собственно шифратор реализует подпрограмма. Она ничем не отличается от третьего варианта (реализация с использованием цикла). Блок-схема алгоритма подпрограммы, имитирующей шифратор показана на рисунке 6.8.

 

Текст программы, составленный по блок-схемам алгоритмов, показанных на рисунках 6.7 и 6.8:

 

;*******************************************

; классический шифратор 4 в 2 с входом синхронизации

; вход В5, В3, А1, А0, выход С1, С0.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $30; адрес начала основной программы в памяти программ.

 

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$00

OUT PORTC,R16; установка начальной выходной комбинации

OUT DDRA,R16; программирование порта А на вход

OUT DDRB,R16; программирование порта В на вход

OUT DDRD,R16; программирование порта D на вход

LDI R17,$FF

OUT DDRC, R17; программирование порта С на выход

;******************* организация стека

LDI R16,$00

OUT SPL, R16; запись адреса в младший байт указателя стека

LDI R17,$02; запись адреса в старший байт указателя стека

OUT SPH, R17; итоговый физический адрес $0200 (512)

;******************* основная (фоновая) программа

OPROS0:

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

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

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

; равен 0

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

OPROS1:

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

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

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

; равен 1

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

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

 

;******************** подпрограмма

PROGRAMMA:

;******************* опрос портов I/O

IN R16,PINA; поместить входные данные из порта А в R16

IN R17,PINB; поместить входные данные из порта В в R17

;******************* компоновка входной информации в один байт

BST R17,3; перемещение бита В3 в бит 2 регистра R16

BLD R16,2; через флаг Т регистра статуса

BST R17,5; перемещение бита В5 в бит 3 регистра R16

BLD R16,3; через флаг Т регистра статуса

;******************* задание начальной комбинации счетчика циклов

LDI R19,0; первая выходная комбинация

LDI R18, 4; установка счетчика циклов

;****************** цикл

CIKL:

SBRC R16,0; тестирование бита 0 регистра R16 и пропуск следую-

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

OUT PORTC,R19;

LSR R16; сдвиг вправо для подготовки теста следующего бита

INC R19

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

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

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

; не выполнено

RET; выход из подпрограммы

 

4 КОНТРОЛЬНАЯ РАБОТА №2

 

4.1 Теоретические вопросы.

 

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

Разработать программу, реализующую:

1) Одновибратор 2) Одновибратор с перезапуском 3) Реле времени

4) Генератор импульсов меандр 5) Деление чисел 6) Кольцевой счетчик

7) Определение длительности входного импульса

8) Определение частоты входных импульсов 9) Секундомер

10) Генератор пачки импульсов 11) Делитель тактовой частоты

12) Делитель входной частоты 13) Счетчик внешних импульсов

14) Программируемый делитель тактовой частоты

15) Программируемый делитель входной частоты

16) Генератор импульсов переменной длительности

17) Генератор импульсов переменной скважности 18) Светофор

19) Динамическую индикацию числа на многоразрядном семисегментном

индикаторе

20) Буквы азбукой Морзе

Номера линий входов и выходов, номер таймера, тактовая частота микроконтроллера, временные параметры, а также другие подробности задаются индивидуально. Если номер зачетки больше 20. то вариант выбирается путем вычитания из последних цифр числа 20, 40, 60 или 80

 

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

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

Счетчики/таймеры являются аппаратными устройствами и в случае их применения, как правило, рациональнее использовать прерывания.

Рассмотрим примеры построения программ с использованием таймера/счетчика.

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

При тактовой частоте 1 МГц длительность такта составит 1 мкс. Следовательно, для задания интервала времени в 2 секунды необходимо 2 000 000 тактов внутреннего генератора, т.е. модуль счета таймера/счетчика должен 2 000 000. Такой модуль счета в микроконтроллере АТ90S8535 может обеспечить только таймер/счетчик Т1 с использованием предделителя. Коэффициент деления предделителя необходимо выбирать таким, чтобы погрешность от деления общего модуля счета на коэффициент деления предделителя была наименьшая. Максимальная точность обеспечивается, когда общий модуль счета делится на коэффициент деления предделителя без остатка. Если в данном случае взять коэффициент деления предделителя 64, то остатка не будет. Модуль счета непосредственно счетчика/таймера Т1 2000000/64 = 31250.

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

Рассмотрим реализацию первого метода.

Детектором комбинации сброса в ноль является компаратор. В данной программе применяется компаратор А, т. к. в этом случае есть возможность сброса счетчика/таймера Т1 в 0 без использования прерывания. Как только комбинация в счетчике достигает значения, установленного в компараторе, произойдет сброс в 0. В регистр компаратора записывается число 31250.

В качестве выхода используется собственный выход счетчика/таймера Т1 – порт PD5.

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

При просмотре работы программы в симуляторе для ускорения работы в регистр OCR1AH следует записать число 00, а в регистр OCR1AL число 0F.

Текст программы:

;*******************************************

; Включение лампы сразу после подачи питания и

; свечение в течение 2 секунд. Выход PD5.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $30; адрес начала основной программы в памяти программ.

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$20

OUT PORTD,R16; установка исходного состояния лампы: включено

OUT DDRD,R16; программирование 5 линии порта D на выход

;******************* программирование режима работы таймера Т1

LDI R17,$7A; запись числа 31250 в регистр сравнения

OUT OCR1AH, R17; выхода OCR1A компаратора

LDI R17,$12

OUT OCR1AL, R17

LDI R17,$80; программирование режима выхода PD5:

OUT TCCR1A, R17; выключить лампу через 2 с.

LDI R17,$0B; установка коэффициента деления предделителя 64,

OUT TCCR1B, R17; разрешения сброса в 0 при совпадении с

; компаратором и включение таймера Т1.

;******************** основная (фоновая) программа

PROGRAMMA:

RJMP PROGRAMMA; переход на метку PROGRAMMA

 

Рассмотрим реализацию второго метода.

В качестве выхода используется порт PС0.

Прерывание по переполнению таймера/счетчика Т1 возникает после его переполнения, следовательно, запись комбинации в таймер при использовании подпрограммы прерывания может быть осуществлена только после его переполнения. Потому запись комбинации в таймер/счетчик Т1 надо считать синхронной. Модуль счета двоичного суммирующего счетчика с синхронной записью определяется по формуле М = 2 n d. Из этой формулы определяется комбинация, которая должна записываться в счетчик. d = 34286. В шестнадцатеричном коде d = 86ЕЕ.

В данном примере в качестве выхода таймера/счетчика Т1 используется линия 0 порта С общего назначения.

Подпрограмма обработки прерывания заключается установку порта РС0 в ноль (выключение лампочки).

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

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

Текст программы:

 

;*******************************************

; Включение лампы сразу после подачи питания и

; свечение в течение 2 секунд. Выход PС0.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $08; вектор прерывания по переполнению таймера.

rjmp Prer1; адрес подпрограммы прерывания при переполнении

; таймера/счетчика Т1.

.org $30; адрес начала основной программы в памяти программ.

 

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$01

OUT PORTC,R16; установка исходного состояния лампы: включено.

OUT DDRC,R16; программирование 0 линии порта С на выход.

;******************* задание стека.

LDI R16,$00

OUT SPL, R16; запись адреса в младший байт указателя стека

LDI R17,$02; запись адреса в старший байт указателя стека

OUT SPH, R17; итоговый физический адрес $0200 (512)

;******************* программирование режима работы таймера Т1

LDI R17,$86

OUT TCNT1H, R17; запись числа 34286 (86ЕЕ) в таймер Т1

LDI R17,$EE

OUT TCNT1L, R17

LDI R17,$03; установка коэффициента деления предделителя 64,

OUT TCCR1B, R17; и включение таймера Т1.

LDI R17,$04; разрешение прерывания при переполнении

OUT TIMSK, R17; таймера Т1.

SEI; разрешение всех прерываний

;******************** основная (фоновая) программа

PROGRAMMA:

RJMP PROGRAMMA; переход на метку PROGRAMMA

;******************* подпрограмма обработки прерывания

Prer1:

CBI PORTC, 0; выключение лампы

RETI; выход из подпрограммы

 

Рассмотрим работу таймера/ счетчика в режиме счета внешних событий. На микроконтроллер поступают импульсы с внешнего устройства. Для подсчета используется таймер/счетчик Т0. Требуется при поступлении единичного уровня сигнала на линию 0 порта А выводить содержимое счетчика в порт С.

На таймер/счетчик Т0 входной сигнал поступает с внешнего вывода РВ0.

Текст программы:

;*******************************************

; Счет внешних импульсов

; Вход В0. Выход порт С.

;*******************************************

.include “8535def.inc”; файл описания AT90S8535.

.cseg

.org $00; адрес начала программы в памяти программ.

rjmp nacalo; прерывание по сбросу и включению питания.

.org $30; адрес начала основной программы в памяти программ.

nacalo:;начало основной программы

;******************** программирование портов I/O

LDI R16,$00

OUT DDRA, R16; программирование линии 0 порта A на вход

OUT DDRB, R16; программирование линии 0 порта В на вход

LDI R16,$FF

OUT DDRC, R16; программирование порта С на выход

;******************* программирование режима работы таймера Т1

LDI R17,$07; разрешение работы Т0 от внешнего вывода,

OUT TCCR0, R17; переключающий перепад с 1 на 0.

;******************** основная (фоновая) программа

PROGRAMMA:

SBIC PINA,0

RCALL VYVOD

RJMP PROGRAMMA; переход на метку PROGRAMMA

;*********************

VYVOD:

IN R18, TCNT0

OUT PORTC, R18

RET

 

 
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

 

1 Современные микроконтроллеры. Архитектура, средства проектирования, примеры применения, ресурсы сети Интернет. - М:. «Телесистемы», 1998

2 Бродин В.Б. Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики – М.: ЭКОМ, 2002.

3 Техническое описание микроконтроллера AT90S8535

4 Бородин В.Б., Шагурин И.И. Микроконтроллеры: архитектура, программирование, интерфейс. - М.: ЭКОМ, 1999.

5 Предко М. Руководство по микроконтроллерам. Том 1. - М.: Постмаркет, 2001.

6 Предко М. Руководство по микроконтроллерам. Том 2. - М.: Постмаркет, 2001.

7 Баранов Н В. Применение микроконтроллеров AVR. – М.: Додэка ХХI, 2004.

8 Гребнев В В. Микроконтроллеры_AVR_фирмы_Atmel – М.: ИП РадиоСофт, 2002.

9 Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы Atmel. – М.: Додэка ХХI, 2006.

 

 

ПРИЛОЖЕНИЕ А

 

Описание Avr Studio


Avr Studio – это интегрированная отладочная среда разработки приложений для микроконтроллеров семейства AVR. Она содержит транслятор языка ассемблера, отладчик и программное обеспечение верхнего уровня для поддержки внутрисхемного программирования.

Отладчик Avr Studio поддерживает все типы микроконтроллеров AVR и может работать в двух режимах: программной симуляции и управления различными внутрисхемными эмуляторами. В данной лабораторной работе рассматривается программа Avr Studio версии 3.52.

Для запуска программы используется файл AvrStudio.exe. После стандартной установке он находится в папке C:\Program Files\Atmel\AVR Studio. В результате запуска появится основное диалоговое окно программы, показанное на рисунке 4.1.

 

 

Рисунок 4.1

 

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

Заранее создать папку, в которой будет размещаться проект, например «Проекты» в папке AVR Studio.

Из меню Project выбрать пункт New. Должно появиться окно, которое показано на рисунке 4.2.

 

Рисунок 4.2

 

В строку Project name необходимо вписать имя проекта, например, programma. В строке Location при помощи кнопки требуется выбрать место размещения проекта, например, C:\Program Files\Atmel\проекты. В строке Project type следует выбрать тип проекта, щелкнув мышью на AVR assembler. Завершить ввод, щелкнув кнопку OK.

 

 

Рисунок 4.3

Появится окно проектов Project:, в котором находится дерево файлов. В него входят файлы, которые будут компилироваться с расширением.asm (Assembler Files), а также дополнительные файлы библиотек (Other Files). Щелкнуть правой кнопкой мыши на ветви Assembler Files. В открывшемся меню выбрать пункт Create New File, как показано на рисунке 4.3.

 

 

Рисунок 4.4

 

В появившемся окне Create new file, которое отображено на рисунке 4.4, в строку Name ввести имя программы, например programma, обязательно указав расширение.asm. Завершить ввод, щелкнув кнопку OK. После этого в окне проектов появится в дереве файлов отдельной ветвью имя файла programma.asm.

Файл programma.asm нужно перетащить, удерживая на нем левую кнопку мыши на ветвь Assembler Files. После этого щелкнув правой клавишей мыши на ветви Assembler Files, снова вызвать меню и выбрать пункт параметры проекта (Project Settings). Появится окно AVR Assembler Options, как показано на рисунке 4.5. В пункте формат выходного файла (Output file format:) выбрать Intel Intellec 8/ MDS (Intel Hex) и нажать OK.




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


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


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



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




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