Принятые обозначения. Регистр статуса (SREG)
Знакомство с микроконтроллером Atmel AVR Atmega 16 и средой разработки AVR Studio.
Подготовил: Яромчук Максим
студент 2 курса 4 группы
Минск 2011
Содержание:
1.) Структурная схема AtmelAVRAtmega16.
2.) Регистровая память и ОЗУ.
3.) Описание регистров МК Atmega AVR.
4.) Описание групп команд.
5.) Основные функции AVR Studio 4.
6.) Последовательность этапов прохождения задач пользователя в AVR Studio 4.
1.)Структурная схема AtmelAVRAtmega16
ОЗУ состоит из 2 частей - регистровой памяти и внутреннего статического ОЗУ.
Регистровая память состоит из 2 частей - из 32РОН и РВВ. Размер регистровой памяти для всех моделей семейства одинаков и составляет 96 байт. Соответственно, под РОН отводится 32 байта, а под РВВ - 64байта - и то не все, также они есть в различных моделях, в разных моделях разный набор регистров в зависимости от набора периферии.
Далее, после регистровой памяти идет статическое ОЗУ. Размер ее от 0 (вообще нету) до 512 (а если и есть, то ее размер 64/128/256/512байт) байт.
Начиная с адреса 0х00 и заканчивая 0х1F, идет регистровый файл РОНа. Начиная с адреса 0х20, начинается область регистров ВВ. заканчивается она 0х5F. Начиная с адреса 0х60, начинается собственно внутреннее статическое ОЗУ.
Регистровая память (РОН и РВВ) :
Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.
В области регистров ввода/вывода расположены различные служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами.
Принятые обозначения. Регистр статуса (SREG)
SREG: Регистр статуса
C: Флаг переноса
Z: Флаг нулевого значения
N: Флаг отрицательного значения
V: Флаг-указатель переполнения дополнения до двух
S: NЕV, Для проверок со знаком
H: Флаг полупереноса
T: Флаг пересылки, используемый командами BLD и BST
I: Флаг разрешения/запрещения глобального прерывания
Регистры и операнды:
Rd: Регистр назначения (и источник) в регистровом файле
Rr: Регистр источник в регистровом файле
R: Результат выполнения команды
K: Литерал или байт данных (8 бит)
k: Данные адреса константы для счетчика программ
b: Бит в регистровом файле или I/O регистр (3 бита)
s: Бит в регистре статуса (3 бита)
X, Y, Z: Регистр косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30)
P: Адрес I/O порта
q: Смещение при прямой адресации (6 бит)
I/O регистры
RAMPX, RAMPY, RAMPZ: Регистры связанные с X, Y и Z регистрами, обеспечивающие косвенную адресацию всей области СОЗУ микроконтроллера с объемом СОЗУ более 64 Кбайт
Стек:
STACK: Стек для адреса возврата и опущенных в стек регистров
SP: Указатель стека
Флаги:
Ы Флаг, на который воздействует команда
0: Очищенный командой Флаг
1: Установленный командой флаг
-: Флаг, на который не воздействует команда
Обозначение Функция
ADC Сложить с переносом
ADD Сложить без переноса
ADIW Сложить непосредственное значение со словом
AND Выполнить логическое AND
ANDI Выполнить логическое ANDc непосредственным значением
ASR Арифметически сдвинуть вправо
BCLR Очистить флаг
BLD Загрузить T флаг в бит регистра
BRBC Перейти если бит в регистре статуса очищен
BRBS Перейти если бит в регистре статуса установлен
BRCC Перейти если флаг переноса очищен
BRCS Перейти если флаг переноса установлен
BREQ Перейти если равно
BRGE Перейти если больше или равно (с учетом знака)
BRHC Перейти если флаг полупереноса очищен
BRHS Перейти если флаг полупереноса установлен
BRID Перейти если глобальное прерывание запрещено
BRIE Перейти если глобальное прерывание разрешено
BRLO Перейти если меньше (без знака)
BRLT Перейти если меньше чем (со знаком)
BRMI Перейти если минус
BRNE Перейти если не равно
BRPL Перейти если плюс
BRSH Перейти если равно или больше (без знака)
BRTC Перейти если флаг T очищен
BRTS Перейти если флаг T установлен
BRVC Перейти если переполнение очищено
BRVS Перейти если переполнение установлено
BSET Установить флаг
BST Переписать бит из регистра во флаг T
CALL Выполнить длинный вызов подпрограммы
CBI - Очистить бит в регистре I/O
CBR Очистить биты в регистре
CLC Очистить флаг переноса
CLH Очистить флаг полупереноса
CLI Очистить флаг глобального прерывания
CLN Очистить флаг отрицательного значения
CLR Очистить регистр
CLS Очистить флаг знака
CLT Очистить флаг T
CLV Очистить флаг переполнения
CLZ Очистить флаг нулевого значения
COM Выполнить дополнение до единицы
CP Сравнить
CPC Сравнить с учетом переноса
CPI Сравнить c константой
CPSE Сравнить и пропустить если равно
DEC Декрементировать
EOR Выполнить исключающее OR
ICALL Вызвать подпрограмму косвенно
IJMP Перейти косвенно
IN Загрузить данные из порта I/O в регистр
INC Инкрементировать
FMUL Дробное незнаковое умножение
FMULS Дробное умножение со знаком
FMULSU Дробное умножение знакового с незнаковым
JMP Перейти
LDRd,X Загрузить косвенно
LDRd,X+ Загрузить косвенно инкрементировав впоследствии
LDRd,-X Загрузить косвенно декрементировав предварительно
LDI Загрузить непосредственное значение
LDS Загрузить непосредственно из СОЗУ
LPM Загрузить байт памяти программ
LSL Логически сдвинуть влево
LSR Логически сдвинуть вправо
MOV Копировать регистр
MUL Перемножить
NEG Выполнить дополнение до двух
NOP Выполнить холостую команду
OR Выполнить логическое OR
ORI Выполнить логическое OR с непосредственным значением
OUT Записать данные из регистра в порт I/O
POP Загрузить регистр из стека
PUSH Поместить регистр в стек
RCALL Вызвать подпрограмму относительно
RET Вернуться из подпрограммы
RETI Вернуться из прерывания
RJMP Перейти относительно
ROL Сдвинуть влево через перенос
ROR Сдвинуть вправо через перенос
SBC Вычесть с переносом
SBCI Вычесть непосредственное значение с переносом
SBI Установить бит в регистр I/O
SBIC Пропустить если бит в регистре I/O очищен
SBIS Пропустить если бит в регистре I/O установлен
SBIW Вычесть непосредственное значение из слова
SBR Установить биты в регистре
SBRC Пропустить если бит в регистре очищен
SBRS Пропустить если бит в регистре установлен
SEC Установить флаг переноса
SEH Установить флаг полупереноса
SEI Установить флаг глобального прерывания
SEN Установить флаг отрицательного значения
SER Установить все биты регистра
SES Установить флаг знака
SET Установить флаг T
SEV Установить флаг переполнения
SEZ Установить флаг нулевого значения
SLEEP Установить режим SLEEP
STX,Rr Записать косвенно
STY,Rr Записать косвенно из регистра в СОЗУ с использованием индекса Y
STZ,Rr Записать косвенно из регистра в СОЗУ с использованием индекса Z
STS Загрузить непосредственно в СОЗУ
SUB Вычесть без переноса
SUBI Вычесть непосредственное значение
SWAP Поменять нибблы местами
TST Проверить на ноль или минус
WDR Сбросить сторожевой таймер