Мир книг по микроэлектронике
Книги авторства Белова Александра
На главнуюРеквизиты автора Сайт МирМК FUSE калькулятор Сайт "Симферополь вчера и сегодня"


А. В. Белов

Программирование микроконтроллеров для начинающих и не только

Содержание

Глава 1
Цифровая техника — это очень просто. . . . . . . . . 9

  1.1. Сначала был микропроцессор . . . . . . . . . 9
      Что же такое микропроцессор. . . . . . . . . . . . . . 9
      Виды памяти. . . . . . . . . . . . . . . . . . . . . . . . . 13
      Различия между микропроцессорами и микроконтроллерами. . . . . . . . . . . 14
  1.2. Считаем по-другому . . . . . . . . . . 15
      Десятичная система исчисления. . . 15
      Восьмиричная система исчисления. . . 16
      Шестнадцатиричная система исчисления. . . 17
      Двоичная система исчисления . . . 18
      Способы обозначения чисел в разных системах исчисления. . 18
      Арифметическая операция сложения. . . . . . . . . . . . . . . . . . . . . . 19
      Арифметическая операция умножения . . . . . . . . . . . . . . . . . . . . . . 20
  1.3. Электронные цифры . . . . . . . . . . . . . . . . . . . . . . . . 21
      Педставление чисел на ПК. . . . . . . . . . . . . . . . . . . . . . . . . . . 21
      Двухуровневый сигнал. . . . . . . . . . . . 22
  1.4. Логические элементы. . . . . . . . . . . . . . . . . . . . . . . . 24
      Знакомство с логическими элементами. . . . . 24
      Простые логические элементы . . . . . 25
      Таблица истинности . . . . . . . . . . 25
      Составные логические элементы. . . . . 26
  1.5. Простейший триггер . . . 28
      Что такое триггер . . . . . . . . . . . . . . . 28
      Устройство и работа RS-триггера. . . . . . . . . . . . . . . . . . . 29
      Борьба с дребезгом контактов . . . 31
  1.6. Хранение информации . . . . . . . . . . . . . . . . . . . . . . . . 33
      Устройство и работа D-триггера . . . . . . . . . . . . . . . . . . . . 33
      Параллельный регистр . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
      Параллельный регистр с расширенными возможностями. . . . . . . . . . 35
      Устройство и работа JK-триггера. . . . . . . . . . . . . 36
  1.7. Счетчики . . . . . 36
      Работа делителя частоты. . . . . . . . . . . . . . . . . . . 36
      Счетчики прямого счета. . . . . . . . . . . . . . . . . . . . . 38
      Счетчики с обратным отсчетом. . . . . 39
      Делители с переменным коэфициентом деления. . . . . . . . . . . 41
      Таймеры . . . . . . . . . . . . . . . . . . . . . . . .42
  1.8. Дешифраторы . . . . . . . . . . . . . . . . . 43
      Устройство и прицип действия дешифратора. . 43
      Селектор памяти ячеек ОЗУ. . . . . . . . . . . . . . . . . . . . . . . . . . . 44
      Каскадирование дешифраторов. . . . . . . . . . . 46
   1.9. Мультиплексоры. . . . . . . . . . . . . . . . . . . . . . 47

Глава 2
Как работают микропроцессоры и микроконтроллеры. . . . . 49

   2.1. Типовая схема микропроцессорной системы . . . . . . . 49
      Структурная схема типичной микропроцессорной системы . . . . . . 49
      Виды памяти . . . . . . . . . . . . . 50
      Порты ввода-вывода . . . . . . . . . . . . . . . . 51
      Процессор и цифровые шины . . . . . . . . . . . . . . . . . . 52
      Шина данных . . . . . . . . . . . . . . . . . . . . . . 53
      Шина адреса . . . . . . . . . . . . 53
      Шина управления. . . . . . . . . . . . . . . . . . . . . . '355
      Принцип действия микропроцессорной системы. . . . . . . . . . . 55
  2.2. Алгоритм работы микропроцессорной системы. . . 56
      Возможности процессора. . . . . . . . . . . . . . . . . . . . 56
      Программа . . . . . . . . . . . . . . 57
      Процесс выполнения команды. . . . . . . . . . . . . . . . . . . . . . . . . 58
      Рабочие регистры. . . . . . . . . . . . . . . . . . . . . . 59
      Команды микропроцессора. . . . . . . . . . . . . 60
      Команды условного и безусловного перехода . . . . . . . . . . . . 61
      Команда организации цикла. . . . . . . . . . . . . 62
      Команды перехода к подпрограмме. . . . . . . . . . . . . . . . . . . . . . 64
  2.3. Механизм прерываний. . . . . . . . . . . . . . . . . . . . . 65
  2.4. Прямой доступ к памяти. . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  2.5. Микроконтроллеры. . . . . . . . . . . . . . . . . . . . . 69

Глава 3
Вперед, к практике: знакомтесь — микроконтроллеры AVR. . . . . . . . . . . 71

   3.1. Общие сведения. . . . . . . . . . . . . . . . . . . . . . . . 71
      Особенности новой серии микроконтроллеров. . 71
      Состав серии AVR. . . . . . . . . . . . . . . . . . . . . . 72
      Особенности серии AVR. . . 73
      Внутренняя память. . . . . . . . . . . . . . . . . . . . . 73
      Способы программирования Flash- и EEPROM-памяти. . . . . . . 74
      Порты ввода-вывода. . . . . . . . . . . . . . . . . . . . . 74
      Периферийные устройства . . . . . . . . . . . . . . . 75
      Другие устройства. . . . . . . . . . . . . . . . . . . . . 76
  3.2. Регистры общего назначения (РОН ). . . . . 76
  3.3. Регистры ввода-вывода . . . . . . . . . . . . . 77
  3.4. Память. . . . . . . . . 78
      Общие сведения. . . . . . . . . . . . . . . . . . . . . . 78
      Память программ. . . . 78
      Оперативная память микроконтроллеров AVR . . 80
      Область памяти, совмещенная с набором регистров общего назначения (РОН ). . . . . 81
      Область памяти, совмещенная с регистрами ввода-вывода (РВВ) . . . 81
      Область внутреннего ОЗУ. . . . . . . . . . . . . . . . . . . . 82
      Область внешнего ОЗУ. . . . . . . . . . . . . . . . . . 82
      Энергонезависимая память данных (EEPROM) . . 82
  3.5. Счетчик команд и стековая память. . . . . . . . . . . . . . . 83
  3.6. Подсистема ввода-вывода. . . . . . . . . . . . . . . . 86
  3.7. Система прерываний. . . . . . . . . . . . . . . .88
      Назначение системы прерываний. . . . . 88
      Управление системой прерываний . . . 88
      Алгоритм работы системы прерываний . . . . . . . . 89
  3.8. Таймеры-счетчики. . . . . . . . . . . . . . . . . . . . . 90
      Общие сведения. . . . . . . . . . . . . . . . . . . . . . . 90
      Режимы работы таймеров . . . . . . . . . . . . . . . . 92
      Режим Normal. . . . . . . . . . . . . . . . . . . . . . 92
      Режим «Захват» (Capture). . . . . . . . . . . . . . . . . . . . 92
      Режим «Сброс при совпадении» (CTC). . . . . . 93
      Режим «Быстродействующий ШИМ» (Fast PWM) . . . 94
      Режим «ШИМ с точной фазой» (Phase Correct PWM). . 95
      Асинхронный режим. . . . . . . . . . . . . . . . . . . . 96
      Предделители таймеров/счетчиков. . . . . . . . . . . . . . 97
  3.9. Другие встроенные периферийные устройства. . . . . . . 98
      Аналоговый компаратор. . . . . . . . . . . . . 98
      Аналого-цифровой преобразователь. . . . . . . . . . . . . 99
      Последовательный канал (UART/USART) . . . . . . . . . . . . 100
      Последовательный периферийный интерфейс (SPI) . . . . . 101
      Последовательный двухпроводный интерфейс (TWI). . . . . . 102
  3.10. Другие ячейки. . . . . . . . . . . . . . . . . . . . . . 102
      Конфигурационные ячейки . . . . . . . . . . . 102
      Ячейки защиты и идентификации . . . . . . . . . . . . . . 103

Глава 4
Осваиваем программы отладки и транслирования. . . . . . . . . . . . . 104

  4.1. Программная среда AVR Studio. . . . . . . . . . . . . . . . . 104
      Отладка программы. . . . . . . 104
      Программный отладчик . . . . . . . . . . . . . . . . . . . . 105
      Аппаратный отладчик. . . . . . . . . . 106
      Полнофункциональные программные имитаторы электронных устройств. . . . . 106
      Внутренний отладчик микроконтроллеров AVR . . . 107
      Программная среда «AVR Studio» . . . . . . . . 108
      Главная панель программы «AVR Studio». . . 109
      Создание проекта. . . . . . . . . . . . . . . . . . . . . . . 116
      Трансляция программы. . . 118
      Отладка программы. . . . . . . . . . . . . . . . . . . . . 121
      Исправление ошибок . . . . . . . . . . . . . 128
      Создание проектов на языке СИ. . . . . . . . . . 128
  4.2. Система программирования Code Vision AVR . . . 130
      Общие сведения. . . . . . . . . . . . . 130
      Интерфейс системы Code Vision AVR. . . . . . . . . . . . . 131
      Создание проекта без использования мастера. . . 133
      Отладка программы . . . . . . . . . . . 137
  4.3. Программаторы . . . . . . . . . . . . . 138
      Общие сведения. . . . . . . . . . . . . . . . . . . . . . . . 138
      Универсальные и специализированные программаторы. . . 139
      Способ подключения программатора к компьютеру . . . . . . 140
      Схема программатора для LPT порта . . . 141
      Схема программатора для COM порта. . . . . 142
      Схема программатора для USB порта . . . 143
      Внутрисхемное программирование . . . . . . . 145
      Питание программатора. . . . . . . . . . . . . . . . 145
      Программа управления программатором PonyProg . . . . . . 146
      Программирование микросхем . . . . . 148
      Режимы работы программатора. . . . . . . . . . 154
      Работа с управляющей программой USBasp . . . . . . . 155

Глава 5
Полезные устройства на микроконтроллерах своими руками. . . 160

  5.1. Общие положения. . . . . . . . . . . . . . . . . . . . . 160
  5.2. Простейшая программа . . . . . . . . . . . . . . . . 163
      Постановка задачи . . . . . . . . . . . . . . . . . . . . . 163
      Принципиальная электрическая схема . . . 163
      Алгоритм . . . . . . . . . . . . . . . . . .165
      Программа на Ассемблере. . . . . . . . . . . . . . . 166
      Директивы . . . . . . . . . . . . . . . . 168
      Операторы . . . . . . . . . . . . . . . . 171
      Описание программы (листинг 5.1) . . . 172
      Программа на языке СИ. . . . . . . . . . . . . . . . . 175
      Работа программы, написанной на языке Си . . . . . . . . . 181
      Комментарии. . . . 187
     Описание программы (листинг 5.2) . . . . . . . 187
  5.3. Переключающийся светодиод . . . . . . . . 189
      Постановка задачи . . . 189
      Принципиальная схема . . . . . . . . . . . . . 189
      Алгоритм . . . . . . . . . . . . . . . 190
      Программа на Ассемблере. . . . . . . . . . . . . . . 193
      Описание программы (листинг 5.3) . . . . . 194
      Программа на языке СИ. . . . . . . . . . . . . . . . . 195
      Описание программы (листинг 5.4) . . . . . . . . . . . . . 196
  5.4. Боремся с дребезгом контактов. . . . . 198
      Постановка задачи. . . . . . . . . . . . . . . . . . . . . 198
      Схема . . . . . . . . . . . . . . . . . . . . . .198
      Алгоритм . . . . . . . . . . . . . . . . . . 198
      Программа на Ассемблере. . . . . . . . . . . . . . . . . . . . . . . . . . . 199
      Описание программы (листинг 5.5) . . . . . . . . . . . . . 202
      Программа на языке СИ. . . . . . . . . . . . . . . . . . . . 203
  5.5. Мигающий светодиод . . . . . . . . . . . . . . . . 205
      Постановка задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . 205
      Схема . . . . . . . . . . . . . . . 205
      Алгоритм программы. . . . . . . . . . 205
      Программа на Ассемблере. . . . . . . . . . . . . . . 206
      Описание программы (листинг 5.7) . . . . . . . . . . . . . . 207
      Программа на языке СИ. . . . . . . . . . . . . 209
  5.6. Бегущие огни. . . . . . . . . . . . . . . . . . . . . . . . . . 210
      Постановка задачи. . . . . . . . . . . . . . . . 210
      Схема . . . . . . . . . . . . . . . . . . .210
      Алгоритм . . . . . . . . . . . . . . . . . 211
      Выполнение алгоритма сдвига. . . . . . . . . . . . . 212
      Программа на Ассемблере . . . . . . . . . . . 212
      Описание программы (листинг 5.9) . . . . . . . 213
      Программа на языке СИ. . . . . . . . . . . . . 217
  5.7. Использование таймера. . . . . . . . . . . . . . . . . 220
      Постановка задачи . . . . . . . . . . . .220
      Схема . . . . . . . . . . . . . . . . . 220
      Алгоритм . . . . . . . . . . . . . . . . . . . . 220
      Программа на Ассемблере . . . . . . . . . . . . . . . 221
      Описание программы (листинг 5.11). . . . . . 222
      Программа на языке СИ. . . . . . . . . . . . . . . . . . . . . . . . . . . 226
  5.8. Использование прерываний по таймеру. . . . . . . . . . . . 228
      Постановка задачи. . . . . . . . . . . . . . . . . . . . . 228
      Схема . . . . . . . . . . . . . . . . . . . . . . 228
      Алгоритм . . . . . . . . . . . . . . . . . . 228
      Программа на Ассемблере. . . . . . . . . . . . 230
      Описание программы (листинг 5.13) . . . . . . . . . . . . . . 232
      Программа на языке СИ . . . . . . . . . . . . . . . . . 238
      Описание программы (листинг 5.14) . . . . . . . . . . . . . 241
  5.9. Формирование звука . . . . . . . . . . . . . . . . . . . . 244
      Постановка задачи . . . . . . . . . . . . . . . . . . . . . . 244
      Схема . . . . . . . . . . . . . . . . . . . . 245
      Алгоритм . . . . . . . . . . . . . . . . . . . 246
      Программа на Ассемблере. . . . . . . . . . . . . . . 247
      Описание программы (листинг 5.15). . . . . . . . . . . . . . 251
      Программа на языке СИ. . . . . . . . . . . . . 256
      Описание программы (листинг 5.16) . . . . . . . . . . . . . . 260
  5.10. Музыкальная шкатулка . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
      Постановка задачи . . . . . . . . . . . . . 262
      Схема . . . . . . . . . . . . . . . . . . . . . . . . . . 262
      Алгоритм . . . . . . . . . . . . . . . . . . . . . . 262
      Кодируем мелодии. . . . . . . . . . . . . 264
      Алгоритм работы музыкальной шкатулки. . . . . . . . . . . 265
      Программа на Ассемблере . . . . . . . . . . . . . . . 266
      Описание программы (листинг 5.17 ). . . . . . . . 272
      Процедура вычисления адреса. . . 273
      Текст программы «шаг за шагом». . . 273
      Особенности программы. . . 274
      Подпрограмма формирования задержки. . . 277
      Программа на языке СИ . . . . . . . . . . . . . . . . . 279
      Описание программы (листинг 5.18) . . . . . . 281
  5.11. Кодовый замок. . . . . . . . . . . . . 286
      Постановка задачи. . . . . . . . . . . . . . . . . . . . . 286
      Алгоритм . . . . . . . . . . . . . . . 287
      Схема . . . . . . . . . . . . . . . . . . 289
      Программа на Ассемблере . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
      Описание программы (листинг 5.19) . . . . . . . . . . . 293
      Процедура записи ключевой комбинации в EEPROM. . . . . . . . . 307
      Процедура проверки кода. . . . . . . . . . . . . . . . . . . . . . . . . . . 308
      Процедура открывания замка. . . . . 309
      Программа на языке СИ. . . . . . . . . . . . . . . . . . . . . . . . . . . 309
      Описание программы (листинг 5.20). . . . . . . . . . . . 312
  5.12. Кодовый замок с музыкальным звонком. . . . . . . . . . . . 322
      Постановка задачи. . . . . 322
      Алгоритм . . . . . . . . . . . . . . 322
      Схема . . . . . . . . . . . . . . . . . . 323
      Программа на Ассемблере. . . . . . . . . . . . . . . 324
      Программа на языке СИ. . . . . . . . . . . . . . . . 334

Приложение 1

Сводная таблица команд Ассемблера микроконтроллеров AVR. . . . . . 339
Группа команд логических операций. . . 339
Группа команд арифметических операций. . . . . . . . . . . . . . . . . . . 339
Группа команд операций с разрядами . . . . . . . . . . . . . . . . . . . . . . 339
Группа команд сравнения. . . . . . . . . . . . . . . . . . . . . 340
Группа команд операций сдвига . . . . . . . . . . . . . . . . . . . . . . . . . 340
Группа команд пересылки данных . . . . . . . . . . . . . . . . . . . . . . . 341
Группа команд управления системой . . . . . . . . . . . 341
Группа команд передачи управления (безусловная передача управления). . . . . . 342
Группа команд передачи управления (пропуск команды по условию). . . . . . . . . . . . 342
Группа команд передачи управления (передача управления по условию). . . . . . . 342

Приложение 2

Как работать с виртуальным диском . . . . . . 343
Раздел «Примеры программ из книги». . . . 344
Раздел «Видеоуроки» . . . . . . . . . . . . . 345
Раздел «Инструментальные программы». . . 346
Раздел «Справочные материалы». . . . . . . . . . . . . 347
Список литературы. . . . . . . . . . . . . . . . . . . . . . . . 350
Список полезных ссылок на ресурсы Интернет. . . . . . . . . . 350

 

 

На главную www.mirmk.ru