Микроконтроллеры. Способы адресации.
Микроконтроллеры семейства Mega имеют наиболее богатый набор периферийных устройств (ПУ). При этом в большинстве моделей имеются все ПУ, которые вообще встречаются в составе микроконтроллеров AVR. Этими устройствами являются:
· 8-разрядные таймеры/счетчики (таймеры ТО и Т2). В ряде моделей эти таймеры/счетчики могут работать в качестве часов реального времени (в асинхронном режиме);
· 16-разрядные таймеры/счетчики (таймеры Т1иТЗ);
· сторожевой таймер VVDT;
· генераторы сигнала с ШИМ разрядностью 8 бит (один из режимов работы 8-разрядных таймеров/счетчиков ТО и Т2);
· одно-, двух- и трехканальные генераторы сигнала с ШИМ регулируемой разрядности (один из режимов работы 16-разрядных таймеров Т1 и ТЗ). Разрешение ШИМ-сигнала для разных моделей составляет 8... 10 бит или 1 ...16 бит;
· аналоговый компаратор;
· многоканальный 10-разрядный АЦП как с несимметричными, так и с дифференциальными входами;
· полнодуплексный универсальный асинхронный приемопередатчик (UART);
· полнодуплексный универсальный синхронный/асинхронный приемопередатчик (USART);
· последовательный синхронный интерфейс SPI;
· последовательный двухпроводный интерфейс TWI (аналог интерфейса I2С).
Способы адресации:
1. Прямая
-адресация 1регистра общего назначения
-2-х регистров общего назначения
-регистров ввода/вывода
-прямая адресация ОЗУ
При косвеной адресации операнд находится в одном из регистров указателей (X;Y;Z)
2. Косвеная
-простая
-относительная
-прединкримент
-постинкремент
Команды микроконтроллера AVR. Программирование микроконтроллера AVR.
Все множество команд микроконтроллеров AVR семейств Tiny и Mega можно разбить на несколько групп:
• команды логических операций;
• команды арифметических операций и команды сдвига;
• команды операций с битами;
• команды пересылки данных;
• команды передачи управления;
• команды управления системой.
Команды логических операций
Команды логических операций позволяют выполнять стандартные логические операции над байтами:
логическое умножение (И);
логическое сложение (ИЛИ);
операцию «исключающее ИЛИ»;
вычисление обратного (дополнение до единицы) и дополнительного (дополнение до двух) кодов числа;
команды очистки/установки регистров;
команду перестановки тетрад.
Операции производятся между регистрами общего назначения либо между регистром и константой; результат сохраняется в РОН. Все команды из этой группы выполняются за один машинный цикл.
Команды арифметических операций и команды сдвига
1. сложение;
2. вычитание;
3. сдвиг (вправо и влево);
4. инкремент и декремент;
5. умножение 8-разрядных значений.
Все операции производятся только над регистрами общего назначения. При этом микроконтроллеры AVR позволяют легко оперировать как знаковыми, так и беззнаковыми числами, а также работать с числами, представленными в дополнительном коде.
Почти все команды рассматриваемой группы выполняются за один машинный цикл. Команды умножения и команды, оперирующие двухбайтовыми значениями, выполняются за два цикла.
Команды операций с битами
К данной группе относятся команды, выполняющие установку или сброс заданного разряда РОН или РВВ. Причем для изменения разрядов регистра состояния SREG имеются также дополнительные команды (точнее говоря, эквивалентные мнемонические обозначения общих команд), т. к. проверка состояния разрядов именно этого регистра производится чаще всего. Условно к этой группе можно отнести также две команды передачи управления типа «проверка/пропуск», которые пропускают следующую команду в зависимости от состояния разряда РОН или РВВ.
Все задействованные разряды РВВ имеют свои символические имена. Определения этих имен описаны в том же включаемом файле, что и определения символических имен адресов регистров (см. раздел 19.2). Таким образом, после включения в программу указанного файла в командах вместо числовых значений номеров разрядов можно будет указывать их символические имена.
Следует помнить, что в командах CBR и SBR операндом является битовая маска, а не номер разряда. Для получения битовой маски из номера разряда следует воспользоваться ассемблерным оператором «сдвиг влево» («), как показано в следующем примере:
sbrrl6, (1«SE) + (1«SM)
outMCUCR,rl6 ;Установить флаги SE и SM регистра MCUCR
Всем командам данной группы требуется один машинный цикл для выполнения, за исключением случаев, когда в результате проверки происходит пропуск команды. В этом случае команда выполняется за 2 или 3 машинных цикла в зависимости от пропускаемой команды.
Команды пересылки данных
Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) предопределило разнообразие команд данной группы. Пересылка данных, выполняемая командами группы, может производиться в следующих направлениях:
• РОН <=>РОН;
• РОН <=> РВВ;
• РОН <=> память данных.
Также к данной группе можно отнести стековые команды PUSH и POP (отсутствуют в микроконтроллерах семейства Tiny), позволяющие сохранять в стеке и восстанавливать из стека содержимое РОН.
На выполнение команд данной группы требуется в зависимости от команды от одного до трех машинных циклов.
Команды передачи управления
В эту группу входят:
команды перехода,
команды вызова подпрограмм и возврата из них,
команды типа «проверка/пропуск», пропускающие следующую за ними команду при выполнении некоторого условия,
команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.
Команды управления системой
В эту группу входят всего 3 команды:
• NOP — пустая команда;
• SLEEP — перевод микроконтроллера в режим пониженного энергопотребления;
• WDR — сброс сторожевого таймера.
Все команды этой группы выполняются за один машинный цикл.