Микроконтроллеры. Способы адресации.

Микроконтроллеры семейства 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 — сброс сторожевого таймера.

Все команды этой группы выполняются за один машинный цикл.

Наши рекомендации