Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Система команд avr-микроконтроллеров




Министертво образования и науки Российской Федерации

Федеральное госудаственное бюджетное образовательное учреждение высшего профессионального образования
«Мордовский государственный университет им. Н. П. Огарева»

А.Ю.Бальзамов

 

 

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
ДЛЯ AVR-МИКРОКОНТРОЛЛЕРОВ

 

 

ЛАБОРАТОРНЫЙ ПРАКТИКУМ
по основам микропроцессорной техники

 

Саранск

Издательство Мордовского университета


УДК [004.42:621.316.544.1](075.8)

ББК 397

Б211

 

Рецензенты:

кафедра информационно-вычислительных систем Саранского кооперативного института АНО ВПО Центросоюза РФ «Московский университет кооперации»;

кандидат физико-математических наук старший научный сотрудник ЗАО НПК «Электровыпрямитель» Б. П. Сурин

 

Бальзамов А. Ю.

Б211 Программирование на ассемблере для AVR-микроконтроллеров: Лаб.
практикум по основам микропроцессорной техники / А. Ю. Бальзамов. – Саранск: Изд-во Мордов. ун-та, 2012. – 108 с.

ISBN 978=5=7103=

 

Рассматривается архитектура популярных микроконтроллеров семейства AVR фирмы «Atmel», система команд и ассемблер этих микроконтроллеров. Приводится описание лабораторного комплекса «Микроконтроллеры и автоматизация» на базе микроконтроллеров ATmega8535 и интегрированной среды разработки программ AVR-Studio. Предлагаются варианты лабораторных работ для изучения функционирования AVR-микроконтроллеров.

Предназначено для организации лабораторных занятий по курсам «Основы микропроцессорной техники», «Микропроцессорные средства и системы», «Микропроцессоры и микроконтроллеры» и т. п., изучаемым студентами направлений «Электроника и наноэлектроника», «Информатика и вычислительная техника» и других инженерных направлений и специальностей.

 

Учебное издание

 

БАЛЬЗАМОВ Александр Юрьевич

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
ДЛЯ AVR-МИКРОКОНТРОЛЛЕРОВ

Лабораторный практикум по основам микропроцессорной техники

Печатается в авторской редакции в соответствии с представленным оригинал-макетом

Дизайн обложки Е. Н. Моисеевой

 

Подписано в печать 00.11.12. Формат 64 x 84 1/16.

Усл. печ. л. 6,28. Тираж 200 экз. Заказ № _____.

Издательство Мордовского университета

Типография Издательства Мордовского университета

430005, г. Саранск, ул. Советская, 24

 

ISBN 978=5=7103= © Бальзамов А.Ю., 2012

© Оформление. Издательство

Мордовского университета, 2012


Предисловие

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

Микроконтроллерные системы изучаются на примере одних из наиболее популярных в настоящее время в мире микроконтроллеров AVR фирмы «Atmel». Для обучения используется лабораторный комплекс «Микроконтроллеры и автоматизация» разработки научно-производственного предприятия «Учебная техника – Профи» (г. Челябинск), а также интегрированная отладочная среда разработки программ AVR-Studio. Дается краткое описание архитектуры и системы команд AVR-микроконтроллеров, ассемблерных директив и особенностей построения ассемблерных программ, структуры лабораторного комплекса и основных возможностей AVR-Studio.

Лабораторные работы по программированию AVR-микроконтроллеров рассчитаны на освоение их основных программно-аппаратных средств: системы команд, портов ввода-вывода, системы прерываний, таймеров/счетчиков, аналого-цифрового преобразователя, а также особенностей построения микроконтроллерных систем автоматизации производства. В каждой лабораторной работе дается необходимый теоретический материал и предлагается 16 различных вариантов индивидуальных заданий. Для облегчения процесса написания студентами индивидуальных программ приводится ряд примеров составления аналогичных программ.


1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR
СЕМЕЙСТВА MEGA ФИРМЫ «ATMEL»

Общие сведения

Микроконтроллеры AVR появились на рынке в конце 1990-х годов и в короткие сроки завоевали высокую популярность. С каждым годом они захватывают все новые и новые ниши на рынке. Не последнюю роль в этом играет соотношение показателей цена/быстродействие/энергопотребление, до сих пор являющееся едва ли не лучшим на рынке 8-битных микроконтроллеров. Кроме того, постоянно растет число выпускаемых сторонними производителями разнообразных программных и аппаратных средств поддержки разработок устройств на их основе. Все это позволяет говорить о микроконтроллерах AVR как об индустриальном стандарте среди 8-битных микроконтроллеров.

В настоящее время в рамках единой базовой архитектуры микроконтроллеры AVR подразделяются на несколько семейств, среди которых основными являются:

• Classic AVR (снимается с производства);

• Tiny AVR;

• Mega AVR;

• Mega AVR для специальных применений.

Микроконтроллеры семейства Tiny имеют небольшие объемы памяти программ и данных и весьма ограниченную периферию. Практически все они выпускаются в 8-выводных корпусах и предназначены для интеллектуальных датчиков различного назначения (контрольные, охранные, пожарные), игрушек, зарядных устройств, различной бытовой техники.

Микроконтроллеры семейства Mega имеют наиболее развитую периферию, наибольшие среди всех микроконтроллеров AVR объемы памяти программ и данных. Они предназначены для использования в мобильных телефонах, в контроллерах различного периферийного оборудования (такого как принтеры, сканеры, современные дисковые накопители, приводы CD-ROM/DVD-ROM и т. п.), в сложной офисной технике и т. д.

Процессорное ядро (CPU) AVR-микроконтроллеров (рис. 1) выполнено по усовершенствованной RISC-архитектуре (enhanced RISC), в которой используется ряд решений, направленных на повышение быстродействия микроконтроллеров.

Арифметико-логическое устройство (АЛУ), выполняющее все вычисления, подключено непосредственно к 32 рабочим регистрам, объединенным в регистровый файл. Благодаря этому АЛУ может выполнять одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за такт. Кроме того, практически каждая из команд (за исключением команд, у которых одним из операндов является 16-битный адрес) занимает одну ячейку памяти программ.

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

 

Рис.1. Архитектура процессорного ядра AVR-микроконтроллера

 

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

AVR-микроконтроллеры изготавливаются по малопотребляющей КМОП-технологии и имеют полностью статическую архитектуру, минимальная тактовая частота равна нулю.

Основные параметры и характеристики микроконтроллеров AVR семейства Mega:

• FLASH-память программ объемом от 8 до 256 Кбайт (число циклов стирания/записи не менее 10 000);

• оперативная память (статическое ОЗУ) объемом от 512 байт до 8 Кбайт;

• память данных на основе ЭСППЗУ (EEPROM) объемом от 256 байт до
4 Кбайт (число циклов стирания/записи не менее 100 000);

• возможность защиты от чтения и модификации памяти программ и данных;

• возможность программирования непосредственно в системе через последовательные интерфейсы SPI и JTAG;

• возможность самопрограммирования;

• возможность внутрисхемной отладки в соответствии со стандартом IEEE 1149.1 (JTAG), а также наличие собственного однопроводного интерфейса внутрисхемной отладки (debugWire1);

• разнообразные способы синхронизации: встроенный RС-генератор с внутренней или внешней времязадающей RС-цепочкой, встроенный генератор с внешним кварцевым или пьезокерамическим резонатором, внешний сигнал синхронизации;

• наличие нескольких режимов пониженного энергопотребления;

• наличие сторожевого таймера;

• наличие детектора пониженного напряжения питания (Brown-Out Detector-BOD);

• возможность программного снижения частоты тактового генератора.

• векторная система прерываний, поддержка очереди прерываний;

• большое число источников прерываний (до 45 внутренних и до 32 внешних);

• наличие аппаратного умножителя.

Периферийные модули

Микроконтроллеры AVR семейства Mega имеют от 23 до 86 линий ввода/вывода, которые объединяются в 8-разрядные порты ввода/вывода, причем отдельные линии могут быть запрограммированы как входные или как выходные независимо друг от друга. Каждая линия имеет входной буфер с триггером Шмита а индивидуально отключаемый внутренний подтягивающий резистор сопротивлением 20...50 кОм.

Кроме того, имеется богатый набор периферийных устройств:

• один или два 8-битных таймера/счетчика, во всех моделях с двумя 8-битными таймерами/счетчиками один из них может работать в качестве часов реального времени (в асинхронном режиме);

• от одного до четырех 16-битных таймеров/счетчиков;

• одно- и двухканальные генераторы 8-битного ШИМ-сигнала (один из режимов работы 8-битных таймеров/счетчиков);

• двух- и трехканальные генераторы ШИМ-сигнала регулируемой разрядности (один из режимов работы 16-битных таймеров/счетчиков), разрешение формируемого сигнала может составлять от 1 до 16 бит;

• аналоговый компаратор;

• многоканальный 10-битный АЦП последовательного приближения, имеющий как несимметричные, так и дифференциальные входы;

• последовательный синхронный интерфейс SPI;

• последовательный двухпроводный интерфейс TWI (полный аналог интерфейса I2С);


• от одного до четырех полнодуплексных универсальных синхронных/асинхронных приемо-передатчиков (USART), которые в ряде моделей могут использоваться в качестве ведущего устройства шины SPI;

• универсальный последовательный интерфейс USI, который может использоваться в качестве интерфейса SPI или I2С, а также полудуплексного UART или 4/12-битного счетчика.

В качестве примера на рис. 2 приведена структурная схема микроконтроллера ATmega8535, который имеет четыре 8-битных порта ввода/вывода (порты A...D), два 8-битных (ТО, Т2) и один 16-битный (Т1) таймер/счетчик, 4 канала ШИМ, по одному интерфейсному модулю USART, SPI и TWI.

Конструктивное исполнение

В семейство Mega на сегодняшний день входит в общей сложности 24 модели микроконтроллеров, которые делятся на 4 группы.

1. Микроконтроллеры в 32-выводных корпусах типа TQFP и MLF (также выпускаются в 28-выводных корпусах типа DIP) с максимальным числом контактов ввода/вывода, равным 23.

2. Микроконтроллеры в 44-выводных корпусах типа TQFP и МLF (также выпускаются в 40-выводных корпусах типа DIP) с максимальным числом контактов ввода/вывода, равным 35 (модели с возможностью подключения внешнего ОЗУ) или 32 (остальные модели).

3. Микроконтроллеры в 64-выводных корпусах типа TQFP и MLF, имеют 53 или 54 контакта ввода/вывода.

4. Микроконтроллеры в 100-выводных корпусах типа TQFP, имеют 68 или 86 контактов ввода/вывода.

Некоторые из моделей выпускаются взамен снятых с производства микроконтроллеров семейства Classic, по цоколевке и функционально совместимы с ними, например, микроконтроллер ATmega8535 выпускается взамен AT90S8535.

Следует отметить, что одни модели микроконтроллеров семейства выпускаются как в коммерческом (диапазон рабочих температур 0 … +70 °С), так и в промышленном (диапазон рабочих температур —40... +85 °С) исполнениях, а другие — только в промышленном. Напряжение питания в различных исполнениях составляет 4,5 … 5,5, 2,7 … 5,5 или 1,8 … 5,5 В. Максимальная тактовая частота может составлять 4, 8, 10, 16 или 20 МГц.

Организация памяти

Обобщенная карта памяти микроконтроллеров AVR семейства Mega приведена на рис. 3. Поскольку микроконтроллеры AVR имеют 16-битную систему команд, объем памяти программ на рисунке указан не в байтах, а в 16-битных словах. Символ «$» перед числом означает, что это число записано в шестнадцатеричной системе счисления. Для микроконтроллера ATmega8535 объем памяти программ составляет 8 Кбайт (4К*16), ее верхняя граница F_END = $FFF, объем ОЗУ данных – 512 байт, верхняя граница S_END = $25F, объем ПЗУ данных – также 512 байт, верхняя граница E_END = $1FF.

Рис. 2. Структурная схема микроконтроллера ATmega8535


Память программ Память данных Память данных

Рис. 3. Карта памяти AVR-микроконтроллеров семейства Mega

 

Память программ (объемом от 8 до 256 Кбайт) предназначена для хранения команд, управляющих работой микроконтроллера, а также часто используется для хранения таблиц констант, не меняющихся во время работы программы. Для пересылки байта из памяти программ в память данных существует специальная команда — LPM. При использовании команды LPM адрес, по которому производится чтение, определяется содержимым индексного регистра Z. При этом старшие 15 битов содержимого регистра будут определять адрес слова (0... 32 К), младший бит будет определять, какой из байтов будет прочитан: 0 — младший байт, 1 — старший байт.

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

По адресу $0000 памяти программ находится вектор сброса. После инициализации (сброса) микроконтроллера выполнение программы начинается с этого адреса (по этому адресу должна размещаться команда перехода к инициализационной части программы). Начиная с адреса $001 (модели с памятью программ 8 Кбайт и меньше) или $0002 (остальные модели) памяти программ располагается таблица векторов прерываний. Размер этой области зависит от модели микроконтроллера.

При возникновении прерывания после сохранения в стеке текущего значения счетчика команд происходит выполнение команды, расположенной по адресу соответствующего вектора. Поэтому по данным адресам располагаются команды перехода к подпрограммам обработки прерываний. В моделях с памятью программ небольшого объема (8 Кбайт и менее) в таблице векторов прерываний используются команды относительного перехода (RJMP), а в остальных моделях — команды абсолютного перехода (JMP). Если в программе прерывания не используются, то основная программа может начинаться непосредственно с адреса $0001.

Память данных микроконтроллеров семейства Mega разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энергонезависимое ЭСППЗУ (EEPROM).

Регистровая память включает 32 регистра общего назначения (РОН), и 64 служебных регистра ввода/вывода (РВВ). В сложных моделях с развитой периферией имеется также область дополнительных (extended) регистров ввода/вывода (ДРВВ). Под РВВ в памяти микроконтроллера отводится 64 байта, а под ДРВВ — 160 или 416 байт (в зависимости от модели).

В отличие от процессоров с аккумулятором, в процессорном ядре AVR все 32 РОН непосредственно доступны АЛУ. Благодаря этому любой РОН может использоваться практически во всех командах и как операнд-источник, и как операнд-приемник. Последние 6 регистров общего назначения (R26...R31) могут также объединяться в три 16-битных регистра X, Y и Z, используемых в качестве указателей при косвенной адресации памяти данных.

В областях регистров ввода/вывода располагаются различные служебные регистры (регистр управления микроконтроллера, регистр состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. Общее их количество зависит от конкретной модели микроконтроллера.

К регистрам ввода/вывода, расположенным в основном пространстве ввода/вывода, можно напрямую обратиться с помощью команд IN и OUT, выполняющих пересылку данных между одним из 32 РОН и пространством ввода/вывода. В системе команд имеется также четыре команды побитового доступа, использующие в качестве операндов регистры ввода/вывода: команды установки/сброса отдельного бита (SBI и CBI) и команды проверки состояния отдельного бита (SBIS и SBIC). Но эти команды могут обращаться только к 1-й половине основного пространства ввода/вывода (адреса $00...$1F).

Среди РВВ есть один регистр, используемый наиболее часто в процессе выполнения программ. Это регистр состояния SREG. Он располагается по адресу $3F ($5F) и содержит набор флагов, показывающих текущее состояние микроконтроллера. Большинство флагов автоматически устанавливаются в 1 или сбрасываются в 0 при наступлении определенных событий (в соответствии с результатом выполнения команд). Все биты этого регистра доступны как для чтения, так и для записи; после сброса микроконтроллера все биты регистра сбрасываются в 0. Формат этого регистра следующий:

 

Регистр состояния – SREG

Бит                  
$3F ($5F) I T H S V N Z C SREG
Чтение/Запись R/W R/W R/W R/W R/W R/W R/W R/W  
Исходное значение                  

· Бит 7 – I: Общее разрешение прерываний. Для разрешения прерываний этот флаг должен быть установлен в «1». Разрешение/запрещение отдельных прерываний производится установкой или сбросом соответствующих разрядов регистров масок прерываний (регистра управления прерываниями). Если флаг сброшен, то прерывания запрещены независимо от состояния разрядов этих регистров. Флаг сбрасывается аппаратно после входа в прерывание и восстанавливается командой RETI для разрешения обработки следующих прерываний.

· Бит 6 – T: Хранение копируемого бита. Этот разряд регистра используется в качестве источника или приемника команд копирования битов BLD (Bit LoaD) и BST (Bit Store). Заданный разряд любого РОН может быть скопирован в этот разряд командой BST или установлен в соответствии с содержимым данного разряда командой BLD.

· Бит 5 – H: Флаг половинного переноса. Этот флаг устанавливается в «1», если произошел перенос из младшей половины байта в старшую (из 3-го разряда в 4-й) или заем из старшей половины байта при выполнении некоторых арифметических операций.

· Бит 4 – S: Флаг знака. Этот флаг равен результату операции «Исключающее ИЛИ» между флагами N (отрицательный результат) и V (переполнение числа в дополнительном коде). Соответственно этот флаг устанавливается в «1», если результат выполнения арифметической операции меньше нуля.

· Бит 3 – V: Флаг переполнения дополнительного кода. Этот флаг устанавливается в «1», при переполнении разрядной сетки знакового результата. Используется при работе со знаковыми числами (представленными в дополнительном коде).

· Бит 2 – N: Флаг отрицательного значения. Этот флаг устанавливается в «1», если старший (7-й) разряд результата операции равен «1». В противном случае флаг равен «0».

· Бит 1 – Z: Флаг нулевого значения. Этот флаг устанавливается в «1», если результат выполнения операции равен нулю.

· Бит 0 – C: Флаг переноса. Этот флаг устанавливается в «1», если в результате выполнения операции произошел выход за границы байта.

В табл. 1 приведены в качестве примера состав, назначение и адреса всех регистров ввода-вывода микроконтроллера ATmega8535.

Для хранения переменных помимо регистров общего назначения также используется статическое ОЗУ объемом от 512 байт до 8 Кбайт. Ряд микроконтроллеров семейства, кроме того, имеют возможность подключения внешнего статического ОЗУ объемом до 64 Кбайт.

В адресном пространстве ОЗУ также расположены все регистры микроконтроллеров, под них отведены младшие 96 (256) адресов. Каждый регистр имеет свой собственный адрес в пространстве памяти данных. Поэтому к регистрам можно обращаться двумя способами — как к регистрам и как к памяти, несмотря на то, что физически эти регистры не являются ячейками ОЗУ. Так, регистрам общего назначения R0 – R31 соответствуют адреса ОЗУ $000 – $01F, регистрам ввода/вывода $00 – $3F соответствуют адреса ОЗУ $020 – $05F (номер регистра плюс $20).

Таблица 1. Регистры ввода/вывода микроконтроллера ATmega8535

Название Адрес Функция
SREG $3F ($5F) Регистр состояния
SPH $3E ($5E) Указатель стека, старший байт
SPL $3D ($5D) Указатель стека, младший байт
OCR0 $3C ($5C) Регистр совпадения таймера/счетчика ТО
GICR $3B ($5B) Общий регистр управления прерываниями
GIFR $3A ($5A) Общий регистр флагов прерываний
TIMSK $39 ($59) Регистр маски прерываний от таймеров/счетчиков
TIFR $38 ($58) Регистр флагов прерываний от таймеров/счетчиков
SPMCR $37 ($57) Регистр управления и состояния операций записи в память программ
TWCR $36 ($56) Регистр управления TWI
MCUCR $35 ($55) Регистр управления микроконтроллера
MCUCSR $34 ($54) Регистр управления и состояния микроконтроллера
TCCR0 $33 ($53) Регистр управления таймера/счетчика ТО
TCNT0 $32 ($52) Счетный регистр таймера/счетчика ТО
OSCCAL $31 ($51) Регистр калибровки тактового генератора
SFIOR $30 ($50) Регистр специальных функций
TCCR1A $2F ($4F) Регистр А управления таймера/счетчика Т1
TCCR1B $2E ($4E) Регистр В управления таймера/счетчика Т1
TCNT1H $2D ($4D) Счетный регистр таймера/счетчика Т1, старший байт
TCNT1L $2C ($4C) Счетный регистр таймера/счетчика Т1, младший байт
OCR1AH $2B ($4B) Регистр А совпадения таймера/счетчика Т1, старший байт
OCR1AL $2A ($4A) Регистр А совпадения таймера/счетчика Т1, младший байт
OCR1BH $29 ($49) Регистр В совпадения таймера/счетчика Т1, старший байт
OCR1BL $28 ($48) Регистр В совпадения таймера/счетчика Т1, младший байт
ICR1H $27 ($47) Регистр захвата таймера/счетчика Т1, старший байт
ICR1L $26 ($46) Регистр захвата таймера/счетчика Т1, младший байт
TCCR2 $25 ($45) Регистр управления таймера/счетчика Т2
TCNT2 $24 ($44) Счетный регистр таймера/счетчика Т2
OCR2 $23 ($43) Регистр совпадения таймера/счетчика Т2
ASSR $22 ($42) Регистр состояния асинхронного режима
WDTCR $21 ($41) Регистр управления сторожевого таймера
UBRRH $20 ($40) Регистр скорости передачи USART, старший байт
UCSRC Регистр управления и состояния USART

Окончание табл. 1

Название Адрес Функция
EEARH $1F ($3F) Регистр адреса EEPROM, старший байт
EEARL $1E ($3E) Регистр адреса EEPROM, младший байт
EEDR $1D ($3D) Регистр данных EEPROM
EECR $1C ($3C) Регистр управления EEPROM
PORTA $1B ($3B) Регистр данных порта А
DDRA $1A ($3A) Регистр направления данных порта А
PINA $19 ($39) Выводы порта А
PORTB $18 ($38) Регистр данных порта В
DDRB $17 ($37) Регистр направления данных порта В
PINB $16 ($36) Выводы порта В
PORTC $15 ($35) Регистр данных порта С
DDRC $14 ($34) Регистр направления данных порта С
PINC $13 ($33) Выводы порта С
PORTD $12 ($32) Регистр данных порта D
DDRD $11 ($31) Регистр направления данных порта D
PIND $10 ($30) Выводы порта D
SPDR $0F ($2F) Регистр данных SPI
SPSR $0E ($2E) Регистр состояния SPI
SPCR $0D ($2D) Регистр управления SPI
UDR $0C ($2C) Регистр данных USART
UCSRA $0B ($2B) Регистр А управления и состояния USART
UCSRB $0A ($2A) Регистр В управления и состояния USART
UBRRL $09 ($29) Регистр скорости передачи USART, младший байт
ACSR $08 ($28) Регистр управления и состояния аналогового компаратора
ADMUX $07 ($27) Регистр управления мультиплексором АЦП
ADCSRA $06 ($26) Регистр А управления и состояния АЦП
ADCH $05 ($25) Регистр данных АЦП, старший байт
ADCL $04 ($24) Регистр данных АЦП, младший байт
TWDR $03 ($23) Регистр данных TWI
TWAR $02 ($22) Регистр адреса TWI
TWSR $01 ($21) Регистр состояния TWI
TWBR $00 ($20) Регистр скорости передачи TWI

 

В ОЗУ данных может быть организован стек, для использования которого необходимо проинициализировать указатель стека (пару регистров ввода/вывода SPH:SPL). Запись в стек выполняется в сторону уменьшения адресов памяти. В стек автоматически заносится адрес возврата при вызове подпрограммы или генерации прерывания, а также можно программно записать и считать любую информацию при помощи команд занесения в стек (PUSH) и извлечения из стека (POP).

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования готовой системы (калибровочные константы, серийные номера, ключи и т. п.), в микроконтроллерах семейства может использоваться встроенная EEPROM-память. Ее объем составляет для различных моделей от 256 байт до 4 Кбайт. Эта память расположена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью трех регистров ввода/вывода: регистра адреса, регистра данных и регистра управления.

Регистр адреса EEAR (EEPROM Address Register) физически размещается в двух РВВ — EEARH:EEARL. В этот регистр загружается адрес ячейки, к которой будет производиться обращение. Регистр адреса доступен как для записи, так и для чтения. Причем в регистре EEARH используются только младшие биты (количество задействованных битов зависит от объема EEPROM-памяти). Незадействованные биты регистра EEARH доступны только для чтения и содержат нули.

Во время записи в регистр данных EEDR (EEPROM Data Register) заносятся значения, которые будут сохранены в EEPROM по адресу, определяемому регистром EEAR, а во время чтения в этот регистр помещаются данные, считанные из EEPROM.

Регистр управления EECR (EEPROM Control Register) используется для управления доступом к EEPROM-памяти.


СИСТЕМА КОМАНД AVR-МИКРОКОНТРОЛЛЕРОВ

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...