Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 1567
Скачиваний: 1
Таблица 3 |
||
Команда |
Описание |
Флаги Примечание |
out P, lb- |
Пересылка данных из регистра |
Нет |
Rr в регистр ввода-вывода Р, |
||
P « - R r |
||
Пересылка данных из регистра |
Нет |
|
push Rr |
Rr в стек, |
|
STACK <~ Rr |
||
Пересылка данных в регистр Rd |
||
popRd |
из стека, |
Нет |
Rd — STACK |
Команды пересылки косвенной адресации с использованием регистров X, Y, Z
Id Rd, X
Id Rd, -X
Id Rd, X+
st X, Rr
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром X,
Rd «- ОЗУ(Х)
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром X, и предшествующим декрементом X,
Rd*~03y(X-l), X « - X - l
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром X, и последующим ин крементом X,
Rd«-03y(X), X< - X+l
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром X,
ОЗУ(Х) <- Rr
Нет
Нет
Нет
J
Нет
80
Команда
st -X, Rr
st X+, Rr
Id Rd, Y
Id Rd, -Y
Id Rd, Y+
ldd Rd, Y+k
st Y,Rr
Описание
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром X, и предшествующим декрементом X,
03y(X-l)<-Rr, X —Х-1
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром X, и последующим инкрементом X,
03y(X)+-Rr, Х«-Х+1
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Y,
Rd <- 03Y(Y)
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Y, и предшествующим декрементом Y,
Rd<-03y(Y-l), Y « - Y - l
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Y, и последующим ин крементом Y,
Rd+-03Y(Y), Y<-Y+l
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Y со смещением к,
Rd <- ОЗУ(Y+k)
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным реги стром Y, 03Y(Y)«- Rr
Продолжение табл. 3
Флаги Примечание
Нет
Нет
Нет
Нет
Нет
Нет к=(0-63)
Нет
81
Команда
st -Y, Rr
st Y+, Rr
std Y+k, Rr
Id Rd, -Z
Id Rd, Z+
lddRd,Z-*k
1 st Z, Rr
st ~Z, Rr
Продолжение табл. 3
Описание
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром Y, и предшествующим декрементом Y,
ОЗУ(У-1)«-Rr, Y * - Y - l
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром Y, и последующим инкрементом Y,
03Y(Y) 4- Rr, Y< - Y+l
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром Y со смещением к, ОЗУ(Y+k) «- Rr
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Z, и предшествую-щим декрементом Z
Rd«-03Y(Z-1), Z « - Z - l
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гистром Z, и последующим ин крементом Z,
Rd<-03Y(Z), Z< - Z+l
Пересылка данных в регистр Rd из ОЗУ с адресом, указанным ре гислром Z со смещением к,
Rd <- 03Y(Z+k)
Пересылка данных из регистра Rr I в ОЗУ с адресом, указанным ре гистром Z, 03Y(Z) «- Rr Пересылка данных из регистра 1 Rr в ОЗУ с адресом, указанным регистром Z, и предшествующим декрементом Z,
03y(Z-l)*-Rr, Z<-Z-l I
Флаги
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Примечание
к=(0-63)
к-(0-63)
82
Команда
st Z+, Rr
std Z+k, Rr
1pm
Описание
Пересылка данных из регистра Rr в ОЗУ с адресом, указанным регистром Z, и последующим инкрементом Z,
03Y(Z)^-Rr, Z<-Z+l Пересылка данных из регистра Rr в ОЗУ с адресом, указанным ре-гистром Z со смещением к, ОЗУ(Z+k) «- Rr
Пересылка данных в регистр R0 из FLASH по адресу, указанному ре гистром Z,
R0«- PM(Z)
Окончание табл. 3
Флаги Примечание
Нет
Нет |
к=(0 - 63) |
Нет
Команды пересылки данных также реализуют стандартный набор опе раций:
•пересылка байта данных между регистрами общего назначения (mov);
•пересылка байта данных между регистром общего назначения и регист ром ввода-вывода (in, out);
•пересылка байта данных (с прямой или косвенной адресацией) между
регистром общего назначения и ОЗУ (Id, st) или стеком (pop, push). Команда загрузки константы в регистр допустима только для регистров
R16-R31. Команды пересылки данных флаги не формируют, формиро вание флагов по содержимому байтов данных при необходимости можно выполнить командами сравнения.
В мнемонических обозначениях команд можно использовать физиче ские адреса регистров или, что обычно более удобно и наглядно, стандарт ные символьные имена, описанные в файле "8535def.inc". Например, ко манды out $08, R16 и out ACSR, R16 имеют один и тот же смысл: пере сылка содержимого регистра общего назначения R16 в регистр управления АЦП.
Необходимо помнить, что управление всеми аппаратными средствами микроконтроллера производится пересылкой байтов управления, сформи рованных программно в регистрах общего назначения, в соответствующие регистры файла регистров ввода-вывода командой out. Анализ текущего состояния аппаратных средств можно производить чтением содержимого регистров ввода-вывода командой in. Как указывалось ранее, вектора пре рываний для координации работы аппаратных средств должны обеспечи вать программное управление параметрами и режимами их работы. Необ-
83
ходимый для выполнения этих функций обмен данными производится ко мандами in, out.
Пересылка данных между регистрами общего назначения и EEPROM данных производится через соответствующие регистры ввода-вывода спе циальной процедурой. Команда Ipm позволяет загружать в регистр R0 кон станты, которые хранятся в памяти программ (FLASH). Адрес FLASH дол жен указываться в регистре Z.
Каждая ячейка FLASH хранит два байта, поэтому младший бит регист ра Z (бит 0) определяет байт для пересылки в регистр R0 (0 - младший байт, 1 - старший байт). Адрес FLASH находится в регистре Z, начиная с бита 1. То есть бит 1 соответствует младшему биту адреса FLASH, что не обходимо учитывать при записи адреса в регистр Z. Адрес FLASH для ре гистра Z можно указать выражением Z=2*^pec FLASH), а бит 0 регистра Z формировать дополнительно в зависимости от того, какой байт двухбай товой ячейки FLASH пересылается в регистр R0.
4.1.3. Команды управления
Таблица 4 |
||||
Команда |
Описание |
Флаги |
Примечание |
|
rjmpk |
Безусловный переход (изме |
Нет |
-2048 < к < 2048 |
|
нение PC на k), PC «~ PC+l+k |
||||
ijmp |
Безусловный переход с ад |
Нет |
||
ресацией по Z, PC <— Z |
||||
Вызов подпрограммы (изме |
||||
rcall k |
нение PC на к), |
Нет |
-2048<к<2048 |
|
STACK*- PC, |
||||
РС<- РС+1+к |
||||
icall |
Вызов подпрограммы с ад |
Нет |
||
ресацией по Z, |
||||
STACK*-PC, PC<-Z |
||||
ret |
Возврат из подпрограммы, |
Нет |
||
PC <- STACK |
||||
reti |
Возврат из прерывания, |
I |
||
PC — STACK, I = 1 |
||||
84
Команда
brbs b, к
brbc b, к
breq к
brnek
brcc к (brio к)
Продолжение табл. 4
Описание |
Флаги |
|
[ |
Условный переход (измене |
|
ние PC на к), если бит b в |
Нет |
|
SREG установлен, PC <— |
||
PC+1-fk, если8ЯЕО(Ь)==1 |
||
1 |
Условный переход (изме |
|
нение PC на к), если бит b |
Нет |
|
SREG очищен, PC <- |
||
РС+1 +к, если SREG(b)=0 |
||
Условный переход (изме |
Нет |
|
нение PC на к), если равно, |
||
PC <- РС+Нк, если флаг Z=l |
||
Переход (изменение PC на к),
если не равно, PC <— PC+1 +к, Нет
если флаг Z=0 |
|
Условный переход на к по |
Нет |
флагу С=0, PC <- РС+1+к, |
|
если флаг С=0 |
Примечание
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < k < 6 3
brmi к |
N=1 |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
|Ьф1к |
N=0 |
к по флагу N |
|||
brvs к |
V=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brvck |
V=0 |
к по флагу V |
|||
brge к |
S=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brltk |
, S=0 |
к по флагу S |
|||
brhs к |
H=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brhc к |
H=0 |
к по флагу Н |
|||
bits к |
1 T=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brtck |
1 т=о |
к по флагу Т |
|||
brie к |
1=1 |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
bridk |
1 1=0 |
к по флагу I |
|||
85
Окончание табл. 4
Команда |
Описание |
Флаги |
Примечание |
1 Следующие команды пропускают одну операцию в программе, если ус ловие выполняется
sbrs Rr, b
sbrc Rr, b
sbis P, b
cpse Rd, Rr
Пропустить, если бит Ь в регистре Rr установлен, PC <- РС+2(3),
если Rr(b) = 1
Пропустить, если бит b в регистре Rr очищен,
PC *~ РС+2(3), если Rr(b) = 0
Пропустить, если бит b в регистре ввода-вывода Р установлен,
PC — РС+2(3), если Р(Ь) = 1
Пропустить, если Rd = Rr, PC« - РС+2(3), если Rd = Rr
Нет
Нет
Нет |
Р = (0 - 31) |
Нет
Команды управления необходимы для программной реализации алго ритмов со сложной и неоднозначной последовательностью действий. Эти команды позволяют обеспечить циклическое повторение отдельных фраг ментов программ, ветвление программ с анализом выполнения определен ных условий, вызов подпрограмм, в том числе и для обслуживания преры ваний, возврат из подпрограмм с корректным продолжением выполнения прерванной программы. Основные действия при исполнении команд управления - изменение состояния программного счетчика (PC), которым производится адресация во флэш-памяти (РМ).
Особенностью команд управления микроконтроллеров AVR является не абсолютная, а относительная адресация передачи управления (изменение текущего содержимого программного счетчика на величину указываемого в команде параметра к). Компиляторы при обработке текстов программ не требуют обязательного определения численного значения этого параметра.
При программировании на ассемблере в командах управления параметр к может быть заменен меткой. Ограничения на величину смещения к в ко-
86
мандах rjmp к, rcall к в микроконтроллере 8535 практически не имеют ни какого значения, так как размер адресного пространства памяти программ РМ составляет 4096 двухбайтовых ячеек (8 Кбайт). Если в командах услов ных переходов требуется смещение больше, чем указано в примечании, можно использовать для перехода промежуточную команду rjmp.
Пример:
ср RO, R21 ; сравнить содержимое регистров RO, R21 breq inter ; если равно, перейти к inter (смещение не более 63)
inter: rjmpfin ; перейти к fin (смещение в пределах адр. простр. РМ)
fin: nop |
;программа выполняется по равенству R0-R21 |
Команды "пропустить" (последние пять команд) выполняют условный переход со смещением только на одну команду. В комбинации с командами rjmp или rcall позволяют реализовать переход в любую часть программы аналогично приведенному выше примеру.
4.1.4. Команды преобразования битов в регистрах
Таблица 5
Команда
sbr Rd, К cbr Rd, К
sbi P, b cbi P, b bst Rr, b bid Rd, b
swap Rd
Описание
Установить в регистре Rd би ты по маске К
Очистить в регистре Rd биты по маске К
Установить в регистре вводавывода Р бит b, P(b)=l
Очистить в регистре вводавывода Р бит b, Р(Ь)=0
Пересылка бита b из регистра
Rr во флаг Т, |
Т <- Rr(b) |
Пересылка бита b в регистр |
|
Rd из флага Т, |
Rr(b) <- Т |
Поменять местами старшую и младшую тетрады в регистре Rd
Флаги |
Примечание |
Нет |
d = (16-31) |
Нет |
d = (16-31) |
Нет |
Р = (0-31) |
Нет |
Р = (0-31) |
Т |
|
Нет |
|
Нет |
87