Микроконтроллеры семейства AVR. Воробьева Г.С. - 73 стр.

UptoLike

Составители: 

7 <, >, <=, >= Сравнения Меньше, больше и тд.
8 ==, != Равно, не равно
9 & Поразрядные Поразрядное "И"
10 ^ Поразрядные Поразрядное "Исключающее ИЛИ"
11 ! Поразрядные Поразрядное "ИЛИ"
12 && Логические Логическое "И"
13 1 Логические Логическое "ИЛИ"
14 = Присваивание Возможны также сочетания оператора
присваивания с арифметическими и
поразрядными операторами, например,
a += b; равнозначно a = a + b;
a *= b+c; равнознаяно a = a * (b + c);
Вставка ассемблерного кода.
В некоторых случаях требуется оптимизировать код программы,
и/или уменьшить время выполнения тех или иных действий. Для этого
применяют вставки ассемблерного кода.
В программах, разрабатываемых с помощью средств WinAVR,
для выполнения ассемблерного кода доступен специальный оператор
asm. Его синтаксис:
asm(код: список выходных_операндов,
спиcок_входных_операндов)
Поясним использование оператора asm на простом примере чтения
значения из порта D:
asm("in %0, %1" : "=r" (value) : "I" (_SFR_IO_ADDR(PORTD) ) );
Смысл каждой части оператора asm, отделенной с помощью двоеточия:
1. Ассемблерная команда, определенная как строковая константа:
"in %0, %1".
2. Список выходных операндов, разделенных запятыми, В нашем
примере есть только один операнд: "=r" (value).
3. Список входных операндов, разделенных запятыми. В нашем
примере есть только один операнд: "I" (_SFR_IO_ADDR(PORTD)).
Вторая и третья части оператора asm предназначены для определения
связи между регистрами микроконтроллера и операндами С. В самих
ассемблерных инструкциях ссылки на операнды создаются с помощью
символа "%" и порядкового номера операнда (начиная с нуля). Так, в
рассмотренном выше примере ссылке %0 соответствует входной
операнд "=г" (value), а ссылке %1 – выходной операнд "I"
( _ SFR_IO_ADDR(PORTD)).
Часть оптимизационной стратегии компилятора. Например, если
бы значение переменной ни разу не использовалось в оставшейся части
программы, то представленный выше код скорее всего, был бы
73