Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет-AVR.doc
Скачиваний:
94
Добавлен:
02.11.2018
Размер:
3.04 Mб
Скачать

1.14. Аналоговый компаратор (Analog Comparator)

Модуль аналогового компаратора входит в состав всех МК AVR семейства Mega. Компаратор позволяет сравнивать значения напряжений, присутствующих на двух выводах МК. Результатом сравнения является логическое значение, которое может быть прочитано из программы. По результату сравнения может быть сгенерировано прерывание, а также осуществлен захват состояния таймер/счетчика Т1. Используемые компаратором входы МК AIN0 (PB2), AIN1 (PB3).

Управление компаратором и контроль его состояния осуществляется с помощью регистра ACSR, расположенного по адресу ($08 ($28)).

По своему действию рассматриваемый узел МК является обычным компаратором. Если напряжение на выводе AIN0 (неинвертирующий вход) больше напряжения на выводе AIN1 (инвертирующий вход), то результат сравнения будет равен «1». В противном случае результат – «0». Подробно со структурой и функционированием модуля SPI можно ознакомиться в [1].

2. Система команд

Программа для любого микроконтроллера представляет собой последовательность команд, записанных в памяти программ. Большинство команд при выполнении изменяют содержимое одного или нескольких РОН, регистров ввода/вывода или ячеек ОЗУ. Доступ к регистрам осуществляется по их адресам, являющимися операндами команды, однако, при написании ассемблерных программ гораздо удобнее обращаться к регистрам, используя вместо числовых значений адресов их стандартные, принятые символические обозначения. Чтобы задать соответствие этих имен реальным адресам необходимо подключить в начале программы файл определения адресов регистров ввода/вывода (при помощи директивы ассемблера .INCLUDE). Программа для микроконтроллера AVR ATmega8515 должна начинаться с директивы ассемблера:

.include “8515def.inc”

Систему команд МК AVR ATmega8515 можно условно разбить на несколько групп команд:

– логических операций,

– арифметических операций и сдвига,

– операций с битами,

– пересылки данных,

– передачи управления,

– управления системой.

Команды логических операций

Команды логических операций позволяют выполнять стандартные логические операции над байтами, такие, как

– логическое умножение «И» – (AND Rd, Rr,...),

– логическое сложение «ИЛИ» – (OR Rd, Rr,…),

– операцию «исключающее ИЛИ» – (EOR Rd, Rr,…),

а также инверсию (COM Rd) и отрицание (NEG Rd) регистров.

К этой группе можно отнести также команды очистки (CLR Rd)/установки (SER Rd) регистров. Операции производятся между регистрами общего назначения, между регистром и константой, результат сохраняется в РОН. Все команды этой группы выполняются за один машинный цикл.

Команды арифметических операций и сдвига

К данной группе относятся команды, выполняющие базовые операции:

– сложение (ADD Rd, Rr,…),

– вычитание (SUB Rd, Rr,…),

– инкремент (INC Rd),

– декремент (DEC Rd),

– сдвиги вправо (ROR Rd; LSR Rd,..) и влево (ROL Rd; LSL Rd,…),

– умножение 8-разрядных значений (MUL Rd, Rr,…).

Все операции производятся только над РОН. При этом МК AVR оперируют как знаковыми, так и беззнаковыми числами. Почти все команды выполняются за один машинный цикл.