Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера, Ревич Ю.В., 2014.
Изложены принципы функционирования, особенности архитектуры и приемы программирования микроконтроллеров Atmel AVR. Приведены готовые рецепты для программирования основных функций современной микроэлектронной аппаратуры: от реакции на нажатие кнопки или построения динамической индикации до сложных протоколов записи данных во внешнюю память или особенностей подключения часов реального времени. Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ. В книге учтены особенности современных моделей AVR и сопутствующих микросхем последних лет выпуска. Приложение содержит основные параметры микроконтроллеров AVR, перечень команд и тексты программ для них, а также список используемых терминов и аббревиатур.
Почему AVR?
У AVR-контроллеров «с рождения» есть две особенности, которые отличают это семейство от остальных МК. Во-первых, система команд и архитектура ядра AVR разрабатывались совместно с фирмой-разработчиком компиляторов с языков программирования высокого уровня IAR Systems. В результате появилась возможность писать AVR-программы на языке С без большой потери в производительности по сравнению с программами, написанными на ассемблере. Подробнее э.тот вопрос мы обсудим в главе 5.
Во-вторых, одним из существенных преимуществ AVR стало применение конвейера. В результате для AVR не существует понятия машинного цикла: большинство команд выполняется за один такт. Для сравнения отметим, что пользующиеся большой популярностью МК семейства PIC выполняют команду за 4 такта, а классические 8051 — вообще за 12 тактов (хотя есть и современные модели х51 с машинным циклом в один такт).
Правда, при этом пришлось немного пожертвовать простотой системы команд, особенно заметной в сравнении с x51, где, например, любые операции пересылки данных внутри контроллера, независимо от способа адресации, выполняются единственной командой mov в различных вариантах, в то время как в AVR почти для каждого способа есть своя команда, к тому же иногда с ограниченной областью действия. Существуют некоторые сложности и при операциях с битами. Тем не менее это не приводит к заметным трудностям при изучении AVR-ассемблера: наоборот, тексты программ получаются короче и больше напоминают программу на языке высокого уровня. Следует также учесть, что из общего числа команд (от 90 до 130, в зависимости от модели) только 50-60 уникальных, остальные взаимозаменяемые. И наконец, этот недостаток полностью нивелируется при использовании языка С, фактически уравнивающего разные архитектуры с точки зрения особенностей программирования.
Оглавление.
ВВЕДЕНИЕ. Микроконтроллеры, их возникновение и применение.
Предыстория микроконтроллеров.
Электроника в греческом стиле.
Почему AVR?.
Что дальше?.
ЧАСТЬ I. ОБЩИЕ ПРИНЦИПЫ УСТРОЙСТВА И ФУНКЦИОНИРОВАНИЯ ATMEL AVR.
Глава 1. Обзор микроконтроллеров Atmel AVR.
Семейства AVR.
Особенности практического использования МК AVR.
Глава 2. Общее устройство, организация памяти, тактирование, сброс.
Память программ.
Память данных (ОЗУ, SRAM).
Энергонезависимая память данных (EEPROM).
Способы тактирования.
Сброс.
Особенности подключения дополнительной внешней памяти данных.
Глава 3. Знакомство с периферийными устройствами.
Порты ввода-вывода.
Таймеры-счетчики.
Аналого-цифровой преобразователь.
Последовательные порты.
UART.
Интерфейс SPI.
Интерфейс TWI (I2С).
Универсальный последовательный интерфейс USI.
Глава 4. Прерывания и режимы энергосбережения.
Прерывания.
Разновидности прерываний.
Режимы энергосбережения.
Потребление МК AVR.
Потребление МК AVR и режимы энергосбережения.
ЧАСТЬ II. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ ATMEL AVR.
Глава 5. Общие принципы программирования МК семейства AVR.
Ассемблер или С?.
Способы и средства программирования AVR.
Редактор кода.
Об AVR Studio.
Обустройство ассемблера.
Программаторы.
О hex-файлах.
Команды, инструкции и нотация AVR-ассемблера.
Числа и выражения.
Директивы и функции.
Общая структура AVR-программы.
Обработка прерываний.
RESET.
Простейшая программа.
Задержка.
Программа счетчика.
Использование прерываний.
Задержка по таймеру.
Программа счетчика с использованием прерываний.
О конфигурационных битах.
Глава 6. Система команд AVR.
Команды передачи управления и регистр SREG.
Команды проверки-пропуска.
Команды логических операций.
Команды сдвига и операции с битами.
Команды арифметических операций.
Команды пересылки данных.
Команды управления системой.
Выполнение типовых процедур на ассемблере.
О стеке, локальных и глобальных переменных.
Глава 7. Арифметические операции.
Стандартные арифметические операции.
Умножение многоразрядных чисел.
Деление многоразрядных чисел.
Операции с дробными числами.
Генератор случайных чисел.
Операции с числами в формате BCD.
Отрицательные числа в МК.
Глава 8. Программирование таймеров.
8- и 16-разрядные таймеры.
Формирование заданного значения частоты.
Отсчет времени.
Точная коррекция времени.
Частотомер и периодомер.
Частотомер.
Периодомер.
Управление динамической индикацией.
LED-индикаторы и их подключение.
Программирование динамической индикации.
Таймеры в режиме PWM.
Глава 9. Использование EEPROM.
Еще раз о сохранности данных в EEPROM.
Запись и чтение EEPROM.
Хранение констант в EEPROM.
Глава 10. Аналоговый компаратор и АЦП.
Аналого-цифровые операции и их погрешности.
Работа с аналоговым компаратором.
Интегрирующий АЦП на компараторе.
Принцип работы и расчетные формулы.
Программа интегрирующего АЦП.
Встроенный АЦП.
Пример использования АЦП.
Программа.
Глава 11. Программирование SPI.
Основные операции через SPI.
Аппаратный вариант.
Программный вариант.
О разновидностях энергонезависимой памяти.
Запись и чтение flash-памяти через SPI.
Программа обмена с памятью 45DB011В по SPI.
Запись и чтение flash-карт.
Подключение карт ММС.
Подача команд и инициализация ММС.
Запись и чтение ММС.
Глава 12. Интерфейс TWI (I2С) и его практическое использование.
Базовый протокол I2С.
Программная эмуляция протокола I2С.
Запись данных во внешнюю энергонезависимую память.
Режимы обмена с памятью АТ24.
Программа.
Часы с интерфейсом I2С.
Запись данных.
Чтение данных.
Глава 13. Программирование UART/USART.
Инициализация UART.
Передача и прием данных.
Пример установки часов DS1307 с помощью UART.
Приемы зашиты от сбоев при коммуникации.
Проверка на четность.
Как организовать корректный обмен.
Дополнительные возможности USART.
Реализация интерфейсов RS-232 и RS-485.
Преобразователи уровня для RS-232.
RS-485.
Глава 14. Режимы энергосбережения н сторожевой таймер.
Программирование режима энергосбережения.
Пример прибора с батарейным питанием.
Доработка программы.
Использование сторожевого таймера.
ПРИЛОЖЕНИЯ.
Приложение 1. Основные параметры микроконтроллеров Atmel AVR.
Приложение 2. Команды Atmel AVR.
Арифметические и логические команды.
Команды операций с битами.
Команды сравнения.
Команды передачи управления.
Команды безусловного перехода и вызова подпрограмм.
Команды проверки-пропуска и команды условного перехода.
Команды переноса данных.
Команды управления системой.
Приложение 3. Тексты программ.
Демонстрационная программа обмена данными с flash-памятью 45DB011В по интерфейсу SPI.
Процедуры обмена по интерфейсу I2С.
Приложение 4. Обмен данными с персональным компьютером и отладка программ через UART.
Работа с COM-портом в Delphi.
COM-порт и Windows API.
Работа с СОМ через готовые компоненты.
Установка линии RTS в DOS и Windows.
Программа СОМ2000.
Отладка программ с помощью терминальной программы.
Приложение 5. Словарь часто встречающихся аббревиатур и терминов.
Соответствие терминов на русском их переводу на английский.
Соответствие терминов на английском их переводу на русский.
Литература.
Предметный указатель.
Купить .
Теги: учебник по программированию :: программирование :: Ревич
Смотрите также учебники, книги и учебные материалы:
- Проектирование и разработка web-приложений, Тузовский А.Ф., 2019
- Понимание языка ассемблера, Reverse Engineering для начинающих, Юричев Д., 2019
- С++ Мастер-класс, 85 нетривиальных проектов, решений и задач, Мозговой М.В., 2007
- Методы решения технических задач с использованием аналоговых вычислительных машин, Левин Л., 1964
- Arduino, датчики и сети для связи устройств, Иго Т., 2015
- Основы программирования, учебное пособие для СПО, Кувшинов Д.Р., 2019
- Access 2007 «без воды», все что нужно для уверенной работы, Голышева А.В., Клеандрова И.А., Прокди Р.Г., 2008
- Чистый код, Создание, анализ и рефакторинг, Мартин Р., 2019