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

Микропроцессорные системы. Методическое пособие по выполнению лабораторных работ

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
880 Кб
Скачать

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

встроенный калиброванный RC-генератор;

обработка внутренних и внешних прерываний;

5 режимов с пониженным энергопотреблением: Idle, ADC Noise

Reduction, Power-save, Power-down, и Standby;

напряжение питания 4.5 - 5.5В;

тактовая частота 0-16 МГц;

23 порта ввода/вывода, объединенных в 3 группы:

-порт В (PB0 - РВ7): Два вывода (РВ6 и PB7) используются для подключения кварцевого резонатора. Выводы РВ2 - РВ5 зарезервированы для внутрисхемного программирования, таким образом, для общего применения остаются порты PB0 и PB1;

-порт С (PC0 - РС6 : 7 выводов): порты PC0 - РС5 можно использовать в качестве аналоговых входов, РС6 обычно используется для сброса;

-порт D (PD0 - PD7 : 8 выводов): эти порты можно использовать для общего применения.

Обобщенная структурная схема микроконтроллера ATmega8 приведена

на рисунке 1.

Рассмотрим структурную схему вычислительного ядра контроллера

ATmega8 (рис.2, табл. 1).

Микроконтроллеры AVR построены по Гарвардской архитектуре, основная особенность которой – отдельное хранение данных и команд.

10

1 2

3

1 - Блок выборки инструкций 2 - АЛУ и регистры общего назначения (РОС) 3 - Контроллеры периферии

Рисунок 1 - Обобщенная структурная схема микроконтроллера ATmega8

Таблица 1- Состав ядра микроконтроллера ATmega8

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

Описание

устройства

 

 

Арифметическо - логическое устройство.

ALU (АЛУ)

Выполняет арифметические и логические операции над

регистрами ЦПУ

 

 

11

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

Описание

устройства

 

GENERAL

 

PURPOSE

Регистры для хранения промежуточных

REGISTERS

результатов расчетов.

(Регистры общего

 

назначения)

 

X,Y,Z

Регистры адреса.

STATUS

Устанавливается по завершении операции,

REGISTER

определяет ее результат.

(Регистр статуса)

 

INSTRUCTION

Регистр, содержащий текущую инструкцию.

REGISTER

 

PROGRAM

Память программы.

FLASH

 

SRAM

Оперативная память.

INSTRUCTION

Декодер текущей инструкции.

DECODER

 

 

Линии управления. Декодер инструкций

CONTROL LINES

воздействует на состояние процессора посредствам

 

линий управления.

PROGRAM

Программный счетчик. Указывает на текущую

COUNTER

команду.

STACK POINTER

Указывает на вершину стека

12

Рисунок 2- Структура вычислительного ядра контроллера ATmega8

В соответствии с гарвардской архитектурой память AVRмикроконтроллера разделена на две области: память данных и память программ. Кроме того, ATmega8 содержит память EEPROM для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными (рис.3).

Флэш-память программ размером 8Кб обладает износостойкостью не менее 10000 циклов запись/стирание. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы.

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

Рисунок 3 - Распределение памяти в ATMega8

13

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

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

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

В ATmega8 имеется три порта ввода/вывода PORTB, PORTC, PORTD. Для управления каждым из них выделено по 3 регистра: регистр данных PORTx, выводы порта PINx и регистр направления DDRx.

Регистр PORTx используется для чтения/записи в регистр защелку. Ячейка PINx дает доступ к логическим значениям на ножках порта x. Биты регистра DDRx определяют направление для соответствующих ножек (0 - вход/1 - выход).

Пример настройки порта ввода/вывода:

;PORTB configure

14

ldi r16,0x00 ;все ножки настроены на вход

out DDRB,r16 ;Запись в регистр ввода/вывода. Запись напрямую не возможна.

ldi r16,0xFF ; Все ножки с подтягивающим резистором. out PORTB,r16

nop

Таблица 2 - Возможные настройки порта ввода/вывода

DDRxn

PORTxn

Вх/Вых

Подтягивающ.

Комментарий

 

 

 

резистор

 

0

0

Вход

Нет

Третье состояние (Hi-Z).

Висячий вход.

 

 

 

 

 

 

 

 

Pxn источник тока IIL,

0

1

Вход

Да

если извне соединен с

землей.

 

 

 

 

Вход с подтягивающим

 

 

 

 

резистором.

1

0

Выход

Нет

Выход установлен в 0

1

1

Выход

Нет

Выход установлен в 1

2. Оборудование рабочего места

Компьютер с установленным пакетом программ PROTEUS VSM.

3.Задание

Соберите схему, соответствующую варианту задания и напишите программу для микроконтроллера ATmega8.

Вариант 1. Светодиод включается по нажатию на кнопку. Выключается при повторном нажатии.

Вариант 2. Переключатель двух светодиодов. По нажатию на кнопку включается один из двух светодиодов.

Вариант 3. Двухкнопочный переключатель. Одна кнопка включает светодиод, вторая выключает.

Вариант 4. Имитация светофора. Одна кнопка включает последовательно три светодиода. Каждое переключение происходит по нажатию кнопки.

15

4. Содержание и оформление отчета

Отчет по лабораторной работе оформляется на листах формата А4 и должен содержать:

1.Экранный снимок готовой схемы, собранной в окне программы ISIS.

2.Листинг программы.

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

5.Порядок выполнения работы

Выполнение задания необходимо проводить в порядке, приведенном ниже в рамках иллюстративного примера.

Пример.

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

Для начала в среде Proteus соберем схему с микроконтроллером

ATmega8 (рис. 5).

Рисунок 5

На схеме:

D1(LED-RED) – красный светодиод

16

R1(RES) – токоограничивающий резистор

ATMEGA8 – микроконтроллер ATmega8

R2(RES) – подтягивающий резистор

RESET(BUTTON) – кнопка сброса

Втекстовый редактор введите текст программы:

.cseg

.org 0x000 rjmp init

.org 0x012+2 init:

;PORTB настройка ldi r16, 0x01

out 0x17, r16 ;LED включен sbi 0x18, 0

loop: rjmp loop

Сохраните исходный текст в файл с расширением «.asm». Теперь исходный код необходимо ассемблировать. Для ассемблирования, в командной строке введите команду:

<путь>\avrasm2.exe <путь>\<имя файла>.asm

Удобно написать пакетный файл (.bat) для автоматической компиляции. Поле компиляции в папке с исходным кодом программы вы найдете файл с расширением .obj. Перед запуском эмуляции укажите путь к этому файлу в поле «Program File» в параметрах элемента ATMEGA8 в среде Proteus. Этим вы покажете среде, откуда загружать программу для контроллера. Теперь, когда вы запустите эмуляцию, светодиод загорится.

Разберем исходный текст по порядку:

1.«.cseg» – показывает, что мы пишем программу в сегменте кода;

17

2.«.org 0» – с этого адреса будут размещаться следующие далее

команды;

3.«rjmp init» – безусловный переход к метке init;

4.«.org 0x012+2» - конец таблицы векторов прерываний и начало программы;

5.«init:» - метка init, тут происходит начальная инициализация. Первой командой мы переходим сюда (см строка 3);

6.«;PORTB настройка» – комментарий;

7.«ldi r16, 0x01» – загрузка в регистр АЛУ r16 значения 0x01;

8.«out 0x17, r16» – запись в регистр периферии DDRB (см. далее) по адресу 0x17 значения из регистра АЛУ r16;

9.«;LED включен» - комментарий;

10.«sbi 0x18, 0» – установка нулевого бита регистра периферии PORTB (включает светодиод);

11.«loop:» – метка бесконечного цикла;

12.«rjmp loop» – организация бесконечного цикла.

После ассемблирования мы имеем объектный файл, который помещается в ПЗУ эмулируемого контроллера (Flash). При подаче питания и сбросе указатель команды устанавливается в ноль, и программа начинает выполняться с нулевого адреса (строки 1,2). Первой командой (строка 3) мы перемещаем указатель на начало программы (строка 5). Обратите внимание, программа записывается не с нулевого адреса, а с адреса 0x012+2, который является окончанием таблицы векторов прерываний (см. далее). Строки с 6 по 10 производят начальную конфигурацию контроллера. Последние две строки организуют бесконечный цикл, который не позволяет программе закончить свое выполнение.

6.Контрольные вопросы

1.Особенности архитектуры контроллера ATmega8.

2.Принцип работы портов ввода-вывода контроллераATmega8.

3.Состав ядра контроллераATmega8.

18

4.Регистры контроллераATmega8.

5.Назначение выводов контроллераATmega8.

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]