Содержание.
Введение
1. Регистры общего назначения и АЛУ ……………………………………....4
2. Регистр состояния …………………………………………………………...5
3 Адресация устройств ввода-вывода и памяти SRAM ……………….……9
4. Программный счетчик и стек …………………………...…………………12
5. Прерывания ……………………………………………………………...….19
6. Способы адресации данных ……………………………………………….19
7. Регистры общего назначения …………...…………………………………21
Заключение……………………………………………………………………….26
Список литературы………………………………………………………………27
ВВЕДЕНИЕ
Тема реферата «Микроконтроллеры семейства AVR» по дисциплине «Однокристальные микроконтроллеры и микроЭВМ».
Цель работы - описать аппаратные средства, дать обобщенную архитектуру микроконтроллеров семейства AVR, привести особенности программирования.
Микроконтроллеры AVR считаются одним из направлений, активно развиваемых корпорацией Atmel. На настоящий момент соотношение «цена – производительность – энергопотребление» для микроконтроллеров AVR остается едва ли не лучшим в разряде 8-разрядных микроконтроллеров. Семейство интенсивно развивается, усложняется и совершенствуется.
МИКРОКОНТРОЛЛЕРЫСЕМЕЙСТВА AVR
Как и в любом процессоре, особенности AVR являются следствием общих принципов, использованных при их разработке. Контроллеры реализованы на базе набора регистров, представленных в графическом виде на рисунке 1. Структура микроконтроллера AVR показана на рисунке 2. Эта организация обеспечивает высокую эффективность процессора при обработке данных. Архитектура AVR оптимизирована, чтобы соединить достоинства Гарвардской и Принстонской архитектур для достижения очень быстрого и эффективного выполнения программ [11].
|
Рис. 1. Приоритеты регистров в архитектуре процессоров AVR
Регистры общего назначения и АЛУ
Простое ядро процессора, которое содержит регистры общего назначения и АЛУ, может выполнять 91 из 120 команд, реализуемых AVR. Каждая из этих команд использует содержимое регистров общего назначения при выполнении операций (рисунок 3).
Есть два типа команд, которые могут выполняться этим ядром. Арифметические операции выполняются над содержимым РОН, а операции изменения последовательности команд могут реализовать только переходы в программе, но не могут производить вызов подпрограмм или сохранение содержимого программного счетчика.
При обращении к РОН и АЛУ используется только один способ адресации – прямая регистровая адресация, которая осуществляется путем указания адреса выбираемого регистра. В команде могут быть указаны адреса одного или двух регистров. Например, сложение содержимого двух регистров с сохранением результата в первом из них выполняется при помощи команды add: (add А, В), которая может быть записана в виде: А = А + В – или представлена графически (рисунок 4).
Если второй операнд не требуется, в команде указывается только один регистр, как, например, в команде инверсии. Второй операнд может являться частью команды (непосредственная адресация), в этом случае данные с шины команд поступают на шину данных.
Рис. 2. Структура микроконтроллера AVR 8515 фирмы Atmel
Рис. 3. Структурная схема регистров общего назначения и АЛУ
|
Рис. 4. Пути передачи данных при выполнении команды AVR add А,В
Прибавление константы выполняется при помощи команды addiw A, const, что означает А = А + const и показано графически на рисунке 5. Содержимое программного счетчика инкрементируется после того, как очередная команда считывается из памяти или принимает новое значение при выполнении команды безусловного перехода jmp (рисунок 6).
Рис. 5. Пути передачи данных при выполнении команды adiw A, const
Рис. 6.Пути передачи данных при команде безусловного перехода jump label
Регистр состояния
При первом взгляде на описание регистра состояния в документации на микроконтроллеры AVR вас может удивить количество битов в нем и кажущаяся сложность выполняемых ими функций. После включения регистра состояния структура AVR будет иметь вид, показанный на рисунке 7.
Рис. 7. Архитектура AVR с учетом регистра состояния SREG
Регистр состояния является частью адресного пространства ввода–вывода и в нём устанавливаются признаки результата арифметических операций. Отдельные биты регистра имеют следующее назначение (таблица 1):
Таблица 1
Биты регистра состояния
Номер бита | Обозначение | Назначение |
С | Флаг переноса–заёма | |
Z | Флаг нуля | |
N | Флаг отрицательного результата | |
V | Флаг переполнения | |
S | Флаг знака | |
H | Флаг переноса между тетрадами (полупереноса) | |
T | Временный бит | |
I | Бит общего разрешения прерываний |
Основным признаком в регистре состояния является флаг нуля, который устанавливается в «l», когда результатом операции является ноль. Многие команды могут изменить этот флаг, что делает его неудобным для передачи параметров. Вместо него лучше использовать флаг переноса С, который применяется для этих целей другими процессорами во многих приложениях. В ряде случаев более удобным может оказаться использование временного бита Т, с помощью которого можно задавать значение одного бита, в качестве условия ветвления программы.
|
Как и в большинстве микроконтроллеров и микропроцессоров, флаг переноса–заёма С в AVR устанавливается после каждой операции сложения или вычитания. Он также используется для временного сохранения старшего или младшего бита операнда при операциях обыкновенных и циклических сдвигов, что типично для многих микроконтроллеров. При сложении флаг переноса устанавливается в «l», если результат больше $FF, а при вычитании – если результат меньше нуля.
Флаг переноса между тетрадами Н (полуперенос) устанавливается после выполнения сложения или вычитания, в процессе которого произошел перенос из младшей или заем в старшей тетраде (полубайте). Например, если прибавили 7 к содержимому регистра, в котором хранилось число 9:
add R16, R17; R16 = 9, R17 = 7
Регистр R17 содержит число 7, и после сложения с содержимым R16, в котором хранится 9, результатом будет число $10, которое не может быть размещено в младшей тетраде. В этом случае будет установлен флаг Н в регистре состояния. Если младшая тетрада результата имеет значение меньшее, чем 10, то флаг Н будет сброшен в «0».
Как и флаги полупереноса для всех других контроллеров, бит Н меняется при переносе–заёме из младшего шестнадцатиричного разряда (тетрады). Его изменение не основано на десятичном результате операции. Но если требуется контролировать декадный перенос при операциях с двоично-десятичными числами, бит полупереноса может быть непосредственно использован при выполнении операции сложения, как это показано выше. Если результат операции больше или равен 10, то устанавливается значение флага Н = 1, которое указывает, что правильный двоично-десятичный результат может быть получен путем прибавлении числа 6.
Использование флагов отрицательного результата N, переполнения V и знака S может показаться довольно сложным, если рассматривать, как они устанавливаются в «1» или сбрасываются в «0» при арифметических операциях. Следует понять их назначение, и тогда их применение станет простым и логичным. Эти биты надо проверять только после операции сложения или вычитания, в процессе которых используются или получаются отрицательные числа, представляемые в дополнительном коде.
Флаг отрицательного результата N устанавливается в «1», если старший (знаковый) разряд результата (бит 7) равен «1». Когда знаковый разряд установлен в «1», это часто означает, что результат отрицателен. Следует, однако, отметить, что знаковый разряд может быть установлен в «1» и в результате логической операции. В этом случае знаковый разряд не должен использоваться в каких-либо других целях, кроме указания на то, что он был установлен в 1 после соответствующей операции.
Флаг переполнения V устанавливается при сложении или вычитании двух чисел со знаком, представленных в дополнительном коде (дополнение до двух) в случае, если значение полученного результата выходит за пределы допустимого диапазона, который для восьмибитового числа со знаком составляет от минус 128 до плюс 127. При сложении двух положительных чисел флаг V устанавливается в «1» если сумма больше 127, в случае сложения двух отрицательных чисел – если результат меньше минус 128. Этот флаг показывает, что результат не является правильным 8-разрядным числом со знаком.
Вы можете сказать, что на самом деле результат является правильным, только его нельзя разместить в 8-разрядном регистре, и будете правы. Для разрешения этой ситуации служит флаг знака S, который позволяет представить результат сложения или вычитания 8-разрядных чисел в дополнительном коде в виде 9-разрядного числа со знаком. Если после операций сложения или вычитания чисел со знаком флаг переполнения V установлен в «1», то результатом будет 9-разрядное число со знаком, причем старшим (знаковым) разрядом числа является флаг S, а восемь бит результата будут храниться в 8-разрядном регистре–приемнике.
Бит Т – временный бит, который используется для хранения результата команд BST и BLD или для передачи однобитовых параметров. Хотя бит Т не изменяется никакими другими командами, он должен быть сохранен вместе с другими битами регистра состояния при выполнении прерываний или подпрограмм, которые могут изменить содержимое этого регистра.
Последним является общий флаг разрешения прерываний I. Когда он установлен в «1», запросы прерываний будут обслуживаться. Если флаг I сброшен в «0», то обслуживание прерываний будет отложено до тех пор, пока этот флаг не будет установлен в «1».
Адресация устройств ввода-вывода и памяти SRAM