Смекни!
smekni.com

Методические указания к лабораторным работам со стендом (стр. 2 из 9)

3. В окне редактора ввести код программы.

Рисунок 7. AVR Studio

4. Сохранить набранный файл с расширением *.ASM (*.С).

5. Откомпилировать набранную программу - кнопка «F7» на клавиатуре или нажать кнопку

.

6. Возможные ошибки в программе можно просмотреть в окне «message».

7. После устранения всех ошибок, откомпилировать программу снова и записать данные файла с расширением *.НЕХ в микроконтроллер.

Для этого:

- нажать кнопку «AVR» на панели «AVRStudio toolbar», появится окно «STK500»;

- в закладке «Program» выбрать «Device» - устройство (ATmega16);

- в разделе «Flash», в поле «Input HEX File» указать расположение откомпилированного файла.

Рисунок 8. AVR Studio

При передаче данных с персонального компьютера в стенд STK500 данные отображаются на индикаторе стенда. Горит светодиод Led7, Led6, Led5..

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

Запись новой программы возможна в любой момент времени работы загруженной программы.

Лабораторная работа №1

Тема: Изучение структуры стенда STK500 и системы команд микроконтроллера ATmega16.

Цель: Изучить функциональные возможности учебно-отладочного стенда, внутреннюю структуру и систему команд МК ATmega16. Получить первичные навыки программирования МК ATmega16.

Для выполнения данной лабораторной работы нужно знать:

  • Структурную схему стенда, распределение памяти, назначение основных узлов.
  • Архитектуру ATmega16.
  • Типы данных, синтаксис команд пересылки, арифметических команд, команд переходов.
  • Организацию и программирование портов ввода/вывода.
  • Что такое регистры общего назначения, как с ними работать, и для чего они нужны.
  • Директивы ассемблера.

Краткие теоретические сведения

Память

В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память данных и память программ. Кроме того, ATmega128 содержит память на EEPROM(ЭСППЗУ) для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными.

Внутрисистемно программируемая флэш-память программ ATmega16 содержит 16 кбайт внутренней внутрисистемно перепрограммируемой флэш-памяти для хранения программы. Поскольку все AVR-инструкции являются 16 или 32-разр., то флэш-память организована как 8 кбайт ´ 16. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы.

Флэш-память характеризуется износостойкостью не менее 10.000 циклов запись/стирание. Программный счетчик РС у ATmega16 является 13-разр., поэтому, позволяет адресоваться к 8 кбайт памяти программ.

Таблицы констант могут располагаться в пределах всего пространства памяти программ (см. описание инструкции чтения из памяти программ).

Рисунок 9. Память программ

Первые 1120 ячеек памяти данных относятся к файлу регистров, памяти ввода/вывода и встроенному статическому ОЗУ. В первых 96 ячейках расположен файл регистров (32 ячейки) и стандартная память ввода-вывода (64 ячейки). Следующие 1024 ячейки внутренней статической ОЗУ данных.

Реализовано пять различных способов адресации для охвата всей памяти: прямая, косвенная со смещением, косвенная, косвенная с предварительным декрементом и косвенная с последующим инкрементом. Регистры R26 – R31 из файла регистров используются как регистры-указатели для косвенной адресации.

Прямая адресация позволяет адресоваться ко всей памяти данных. Косвенная адресация со смещением позволяет адресовать 63 ячейки, начиная с адреса указанного в регистрах Y или Z.

При использовании инструкции косвенной адресации с предварительным декрементом и последующим инкрементом значения адресных регистров X, Y и Z, соответственно декрементируются до или инкрементируются после выполнения инструкции.

32 рабочих регистров общего назначения, 64 регистра ввода-вывода и 1024 байт внутреннего статического ОЗУ данных в ATmega16 доступны с помощью всех этих режимов адресации.

Рисунок 10. Распределение памяти в ATMega 16

Пример записи в регистр общего назначения:

.DEF Treg=r16 ;Присваиваем регистру общего назначения имя Treg

.CSEG

Start:

ldi Treg, 00000001b ;запись числа в «Treg» т.е. в регистр R16

ПОРТЫ ВВОДА/ВЫВОДА

Порт B

Порт B 8-разрядный двунаправленный порт.

Для обслуживания порта отведено три регистра: регистр данных PORTB ($18, $38), регистр направления данных - DDRB ($17, $37) и выводы порта B ($16, $36). Адрес выводов порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.

Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20 мА и непосредственно управлять светодиодными индикаторами. Выводы PB0..PB7 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, при этом выводы являются источниками тока (IIL). Дополнительные функции выводов порта B приведены в таблице 16.

Таблица 1. Альтернативные функции выводов порта B

Вывод

Альтернативная функция

PB0

AIN0 (Положительный вход аналогового компаратора)

PB1

AIN1 (Отрицательный вход аналогового компаратора)

PB5

MOSI (Вход данных для загрузки памяти)

PB6

MISO (Выход данных для чтения памяти)

PB7

SCK (Вход тактовых импульсов последовательного обмена)

При использовании альтернативных функций выводов регистры DDRB и PORTB должны быть установлены в соответствии с описанием альтернатив­ных функций.

РЕГИСТР ДАННЫХ ПОРТА B - PORTB

Бит

$18

Чт./зап. Начальн.знач.

7

6

5

4

3

2

1

0

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

PORTB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B - DDRB

Бит

$17

Чт./зап. Начальн.знач.

7

6

5

4

3

2

1

0

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

DDRB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

ВЫВОДЫ ПОРТА B - PINB

Бит

$16

Чт./зап. Начальн.знач.

7

6

5

4

3

2

1

0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

PINB

R

R

R

R

R

R

R

R

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логичес­кие значения, присутствующие на выводах порта.

Порт B, как порт ввода/вывода общего назначения

Все 8 бит порта B при использовании для ввода/вывода одинаковы.