Программирование микроконтроллеров AVR и PIC
Аннотация
В книге рассмотрено программирование микроконтроллеров AVR и PIC компании Microchip (www.microchip.com). Книга состоит из 3 глав.
В главе 1 рассмотрены программные и аппаратные средства, используемые для программирования микроконтроллеров AVR и PIC. Приводятся сведения об операциях с портами микроконтроллеров, описывается среда программирования Microchip Studio для AVR и среда программирования MPLAB X IDE для PIC. Описывается программный пакет Proteus, используемый для моделирования работы созданных программ.
В главе 2 приводятся примеры программирования 8-разрядных микроконтроллеров AVR.
В главе 3 приводятся примеры программирования 8-разрядных микроконтроллеров PIC.
Тестирование и проверка работоспособности программ, созданных в главах 2 и 3, проводится либо с помощью программного пакета Proteus, либо на макетных сборках, использующих реальные образцы микроконтроллеров, программаторы/отладчики и макетные платы.
Каждая глава заканчивается контрольными вопросами и заданиями, предлагающими задачи для самостоятельного программирования. В конце книги приведены решения предлагаемых задач.
Оглавление
Введение _ 5
Глава 1. Программные и аппаратные средства программирования микроконтроллеров _ 21
1.1. Общие сведения _ 21
1.2. Операции с портами микроконтроллера _ 23
1.3. Интегрированная среда разработки Microchip Studio для AVR _ 31
1.3.1. Установка Microchip Studio _ 31
1.3.2. Создание проекта “Линейка светодиодов” в Microchip Studio _ 36
1.3.2.1. Начало работы _ 36
1.3.2.2. Разработка листинга программы _ 39
1.4. Интегрированная среда разработки MPLAB X IDE для PIC _ 44
1.4.1. Установка MPLAB X IDE и компиляторов _ 44
1.4.2. Пакеты семейства устройств DFP _ 49
1.4.3. Интерфейсное окно пользователя _ 55
1.4.4. Биты конфигурации_ 66
1.4.5. Создание проекта “Линейка светодиодов” в MPLAB X IDE _ 76
1.4.5.1. Начало работы _ 76
1.4.5.2. Разработка листинга программы _ 80
1.5. Программа Proteus для моделирования электронных схем _ 86
1.5.1. Интерфейсное окно Proteus _ 86
1.5.2. Моделирование электронных схем с микроконтроллерами в Proteus _ 94
1.5.2.1. Моделирование проекта с микроконтроллером AVR _ 94
1.5.2.2. Моделирование проекта с микроконтроллером PIC _ 100
1.5.2.3. Моделирование проекта “Матрица светодиодов” с микроконтроллером PIC _ 101
1.5.3. Создание проекта с листингом программы внутри Proteus без привлечения IDE _ 105
1.5.4. Использование виртуальных измерительных приборов в Proteus _ 110
1.6. Аппаратные средства программирования микроконтроллеров _ 113
Контрольные вопросы и задания _ 121
Глава 2. Примеры программирования 8-разрядных микроконтроллеров AVR _ 123
2.1. Подключение кнопки к микроконтроллеру _ 123
2.1.1. Создание проекта _ 123
2.1.2. Моделирование проекта на макетной плате _ 125
2.2. Подключение к микроконтроллеру одноразрядного семисегментного индикатора _ 129
2.3. Управление таймер-счетчиком _ 133
2.4. Управление внешними прерываниями _ 137
Контрольные вопросы и задания _ 143
Глава 3. Примеры программирования 8-разрядных микроконтроллеров PIC _ 145
3.1. Подключение к микроконтроллеру двух кнопок _ 145
3.2. Подключение к микроконтроллеру силовой нагрузки _ 154
3.3. Конфигуратор кода MPLAB Code Configurator (MCC). Создание проекта “Программирование ШИМ” _ 156
3.4. Управление вращением электродвигателя небольшой мощности _ 172
3.5. Работа с последовательным интерфейсом RS-232 _ 176
3.6. Работа с модулем АЦП микроконтроллера _ 183
3.6.1. Создание проекта _ 183
3.6.2. Моделирование на макетной плате _ 193
3.7. Подключение к микроконтроллеру жидкокристаллического индикатора _ 198
3.7.1. Создание проекта _ 198
3.7.2. Моделирование проекта на макетной плате _ 202
3.8. Подключение к микроконтроллеру температурного датчика _ 204
3.9. Подключение к микроконтроллеру малогабаритного шагового электродвигателя _ 208
3.9.1. Создание проекта_ 208
3.9.2. Моделирование проекта на макетной плате _ 219
Контрольные вопросы и задания _ 221
4. Решения и ответы _ 223
4.1. Решения и ответы к главе 1 _ 223
4.2. Решения и ответы к главе 2 _ 228
4.3. Решения и ответы к главе 3 _ 234
Литература _ 238
Введение
Микроконтроллер (МК, англ. MCU – Microcontroller Unit) – это электронный блок для управления различными устройствами, выполненный в виде единой микросхемы, или совсем коротко – это управляющая микросхема. В состав микроконтроллера входят микропроцессор, постоянное запоминающее устройство (ПЗУ, англ. ROM), оперативное запоминающее устройство (ОЗУ, англ. RAM), порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы и др. Учитывая количество входящих в состав микроконтроллера компонентов, его иногда называют однокристальным компьютером. Вычислительная мощность у микроконтроллера неизмеримо меньше, чем у компьютера, поэтому они используются для решения узкоспециализированных задач и находят широкое применение в устройствах промышленной автоматики, в системах автоматизации зданий, в периферийных устройствах компьютерной техники, в мобильной электронике, робототехнике, автомобильной технике и многих других приложениях.
В данном учебном пособии рассмотрено программирование микроконтроллеров AVR и PIC компании Microchip. Микроконтроллеры компании Microchip включают в себя 8, 16 и 32-разрядные модели микроконтроллеров. Не углубляясь в детали, приведем следующее определение разрядности: под разрядностью понимается количество бит информации, которые обрабатываются за один такт микропроцессора. Обзор микроконтроллеров компании Microchip начнем с семейства 8-разрядных микроконтроллеров.
8-разрядные микроконтроллеры:
- 8-разрядные микроконтроллеры AVR,
- 8-разрядные микроконтроллеры PIC,
8-разрядные микроконтроллеры AVR подразделяются на семейства:
- ATtiny:
- Флеш-память до 16 КБ; SRAM до 512 Б; EEPROM до 512 Б;
- Число линий ввода-вывода 4-18 (общее количество выводов 6-32);
- Ограниченный набор периферийных устройств.
- ATmega:
- Флеш-память до 256 КБ; SRAM до 16 КБ; EEPROM до 4 КБ;
- Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
- Аппаратный умножитель;
- Расширенная система команд и периферийных устройств.
- ATxmega:
- Флеш-память до 384 КБ; SRAM до 32 КБ; EEPROM до 4 КБ;
- Четырёхканальный DMA-контроллер;
- Инновационная система обработки событий.
Буквы в наименовании модели микроконтроллера (после дефиса) означают вариант корпуса (табл.1):
Таблица 1
Современная линейка микроконтроллеров AVR дополнена продуктами: AVR DD, AVR DB, AVR DA.
Продукты AVR DD имеют низкое энергопотребление и идеально подходят для сложных приложений или в качестве сопутствующего микроконтроллера в сложных конструкциях с несколькими уровнями питания. Семейство AVR DD имеет широкий набор функций, включая многовольтный ввод/вывод (MVIO), позволяющий обеспечивать двунаправленную связь с устройствами с разным уровнем питания. Гибкость семейства делает его пригодным для применения во встраиваемых системах, осуществляющих управление в режиме реального времени. Микроконтроллеры используются в промышленных системах, бытовой технике, автомобилестроении, IoT (Internet of Things – интернет вещей) и других приложениях. (Интернет вещей – это приложения, обменивающиеся информацией через интернет).
Основные характеристики:
- Встроенный генератор 24 МГц.
- До 8 КБ SRAM.
- 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
- 10-разрядный цифроаналоговый преобразователь (ЦАП).
- Аналоговый компаратор (AC) с масштабируемым опорным входом.
- Обнаружение сбоя часов.
- 16-разрядные часы реального времени (RTC) и таймер прерывания.
- Настраиваемое периферийное устройство с пользовательской логикой (CCL)
- Настраиваемый внутренний генератор опорного напряжения.
- USART / SPI двухрежимный двухпроводной интерфейс (TWI).
- Многовольтный ввод-вывод на порту C.
В семействе AVR DD имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл.2).
Таблица 2
Продукты AVR DB разработаны для сложных аналоговых приложений с низким энергопотреблением. Благодаря трем встроенным операционным усилителям, не имеют аналогов по своим возможностям формирования сигнала. AVR DB имеет многовольтный ввод-вывод (MVIO) и является идеальным вспомогательным микроконтроллером в сложных конструкциях с несколькими областями питания. Семейство AVR DB можно использовать для функций управления в режиме реального времени в системах промышленного управления, бытовой техники, автомобилестроения, интернета вещей (IoT), для емкостных сенсорных пользовательских интерфейсов и в других приложениях.
Основные характеристики:
- Встроенный генератор 24 МГц.
- До 16 КБ SRAM.
- 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
- 10-разрядный цифроаналоговый преобразователь (ЦАП).
- Формирование аналогового сигнала (3 операционных усилителя).
- Аналоговый компаратор (AC) с масштабируемым опорным входом.
- Сканирование с циклической проверкой избыточности (CRC).
- Обнаружение сбоя часов.
- 16-разрядные часы реального времени (RTC) и таймер периодического прерывания.
- Настраиваемое периферийное устройство пользовательской логики (CCL).
- USART/SPI/двухрежимный двухпроводный интерфейс (TWI).
- Многовольтный ввод-вывод на порту C.
- Допускаемые входы на 1,8 В могут выбираться для всех входных контактов.
В семействе AVR DB имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл. 3).
Таблица 3
Продукты AVR DA разработаны для приложений, выполняющих управление в режиме реального времени, и использующих устройства HMI с емкостным сенсорным экраном. Высокая плотность памяти делает микроконтроллеры подходящими как для проводной, так и беспроводной связи. В семействе используются новейшие чипы CIPs с низким энергопотреблением и напряжением 5 В для повышения помехоустойчивости. Настраиваемая пользовательская логика (CCL) периферийных устройств, наряду с интеллектуальными аналоговыми периферийными устройствами, делают семейство AVR DA идеальным решением для управления в реальном режиме времени. Микроконтроллеры используются в промышленных системах, бытовой технике, автомобилестроении, интернете вещей (IoT) и в приложениях с функциями сенсорного управления.
Основные характеристики:
- Встроенный генератор с частотой 24 МГц.
- До 16 Кб SRAM.
- 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
- 10-разрядный цифроаналоговый преобразователь (ЦАП).
- Аналоговый компаратор с масштабируемым опорным входом.
- 16-разрядные часы реального времени (RTC) и таймер периодического прерывания.
- Настраиваемое периферийное устройство с пользовательской логикой (CCL).
- Настраиваемый внутренний генератор опорного напряжения.
- USART/SPI двухрежимный двухпроводной интерфейс (TWI).
- До трех детекторов пересечения нуля (ZCD).
- Сканирование с циклической проверкой избыточности (CRC).
В семействе AVR DA имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл. 4).
Таблица 4
8-разрядные микроконтроллеры PIC подразделяются на три уровня:
- базовый уровень: младшие модели PIC10, PIC12, PIC16;
- средний уровень: старшие модели PIC10, PIC12, PIC16;
- повышенный уровень PIC
Микроконтроллеры PIC10 имеют простой набор инструкций, обеспечивающих удобство применения и быструю разработку приложений. Они имеют самый малый форм-фактор и могут применяться в конструкциях с ограниченными размерами. Это семейство микроконтроллеров включает в себя внутренний генератор, компаратор, АЦП, память данных.
Микроконтроллеры PIC12, PIC16 подходят для решения задач, требующих более сложных алгоритмов управления и большего объема памяти. Эти микроконтроллеры оснащены различными аналоговыми и цифровыми периферийными устройствами: SPI, I2C, USART, LCD, АЦП. Микроконтроллеры отлично подходят для устройств с малым потреблением энергии, работающих от батарей.
Микроконтроллеры с архитектурой PIC18 появились в 2000 году. Эта серия оказалась очень популярной. В отличие от более ранних устройств, которые чаще всего программировались на ассемблере, для PIC18 и более поздних устройств язык C стал преобладающим языком разработки. Микроконтроллеры PIC18 сочетают в себе максимальный уровень производительности с простотой использования 8-битной архитектуры, обладают наибольшим количеством выводов и достаточно большим объемом памяти, включая до 128 Кбайт флэш-памяти и до 8 Кбайт оперативной памяти. Микроконтроллеры имеют широкую номенклатуру периферийных устройств: CAN, USB, Ethernet, сенсорные датчики и драйверы ЖК-дисплеев.
16-разрядные микроконтроллеры PIC:
- PIC24F (16 МГц),
- PIC24H (40 МГц),
- PIC24E (70 МГц).
Семейство dsPIC с цифровым сигнальным процессором:
- dsPIC33C (100 МГц),
- dsPIC33E (70 МГц),
- dsPIC33F (16-50 МГц),
- dsPIC30F (30 МГц).
В 2001 году компания Microchip представила серию микросхем dsPIC, которая поступила в массовое производство в конце 2004 года. Это были первые 16-битные микроконтроллеры Microchip. Устройства dsPIC дополнительно включают возможности цифровой обработки сигналов. В отличие от dsPIC устройства PIC24 представляют собой микроконтроллеры общего назначения.
Семейство 16-разрядных микроконтроллеров PIC24 и dsPIC обеспечивает повышенную производительность, низкое энергопотребление, развитую периферию и полный набор программных и аппаратных средств, представляющих собой законченный комплект разработчика. Семейство dsPIC обеспечивает высокую производительность в вычислительных операциях и идеально подходит для разработки сложных приложений, работающих в режиме реального времени. Микроконтроллеры могут работать с напряжением питания 3 В и 5 В и с расширенным температурным диапазоном применения до +150°С, имеют встроенные функции, повышающие надежность и обеспечивающие безопасное отключение в случае возникновения внештатных ситуаций. Благодаря развитой периферии, 16-разрядные устройства находят широкое применение в промышленности, автомобилестроении, в бытовых приборах.
32-разрядные микроконтроллеры подразделяются на:
- 32-разрядные микроконтроллеры семейства PIC,
- 32-разрядные микроконтроллеры семейства SAM.
Семейство 32-разрядных микроконтроллеров PIC начинается с PIC32MX, который компания Microchip представила в 2007 году. PIC32MX выполнен на основе ядра MIPS32 M4K. Устройство программируется с помощью компилятора Microchip MPLAB C, предназначенного для микроконтроллеров PIC32. Сегодня доступен полный спектр 32-разрядных микроконтроллеров PIC24 среднего уровня, начиная с 28-контактного разъема в малогабаритных корпусах QFN и заканчивая высокопроизводительными устройствами с Ethernet, CAN и USB OTG интерфейсами. OTG (On-The-Go) – спецификация интерфейса USB, которая позволяет USB-устройству выступать в качестве хоста USB. Архитектура PIC32 привнесла в микроконтроллеры ряд новых функций, в том числе:
- максимальная скорость выполнения – 80 MIPS (MIPS – Million Instructions Per Second. Не путать с понятием MIPS-архитектура);
- самая большая флэш-память – 512 Кб;
- одна инструкция на выполнение тактового цикла;
- первый кэшированный процессор;
- полный JTAG и 2-проводное программирование и отладка;
- трассировка в реальном времени.
В 2013 году Microchip представила серию микроконтроллеров PIC32MZ, основанных на ядре MIPS M14K. Серия PIC32MZ имеет следующие характеристики:
- тактовая частота ядра 252 МГц;
- до 2 Мб флэш-памяти и 512 Кб ОЗУ;
- новые периферийные устройства, включая высокоскоростной USB.
В 2015 году Microchip выпустила семейство PIC32MZ EF с использованием обновленного процессора MIPS M5150 Warrior M-класса.
В следующем 2016 году Microchip представила семейство PIC32MM, специализированное для маломощных и недорогих приложений. В микроконтроллерах PIC32MM используется процессор MIPS32 M4K. Микроконтроллеры семейства PIC32MM предназначены для очень низкого энергопотребления и ограничены тактовой частотой до 25 МГц. Их ключевым преимуществом является поддержка 16-битных инструкций MIPS, что делает программу намного более компактной.
В 2017 году Microchip представила семейство PIC32MZ DA, включающее встроенный графический контроллер, графический процессор и 32 Мб DDR2 DRAM. В том же 2017 году Microchip представила семейство PIC32MK, специализирующееся на управлении двигателем и промышленном применении.
Номенклатура микроконтроллеров PIC32 и их сферы применения показана на рис. 1 (боковая стрелка показывает направление повышения производительности микроконтроллеров).
Рис. 1 (щелкнуть по рисунку для увеличения)
32-разрядные микроконтроллеры семейства SAM. Эти микроконтроллеры оснащены процессорами с ядром ARM Cortex-M, имеют в своем составе множество передовых периферийных устройств, которые делают их отличным вариантом для разработки различных 32-разрядных приложений. Периферийные устройства имеют усовершенствованный сенсорный контроллер (PTC), низкое энергопотребление и большой набор высокопроизводительных аналоговых функций.
Номенклатура 32-разрядных микроконтроллеров SAM компании Microchip и их возможные сферы применения показаны на рис. 2.
Рис.2 (щелкнуть по рисунку для увеличения)
Глава 1. Программные и аппаратные средства программирования микроконтроллеров
1.1. Общие сведения
При разработке приложений для микроконтроллеров Microchip используются программные и аппаратные средства.
Программные средства необходимы для написания и отладки программного кода. Программный код для микроконтроллеров пишется либо на языке ассемблера (машинно-ориентированный язык низкого уровня), либо на языках высокого уровня C/C++. Для микроконтроллеров компании Microchip используются следующие программные средства:
- Microchip Studio – интегрированная среда программирования для микроконтроллеров AVR и SAM.
- MPLAB® X IDE – интегрированная среда программирования для микроконтроллеров PIC. Совместно с MPLAB X IDE может использоваться плагин MPLAB Code Configurator (MCC), который облегчает и ускоряет процесс написания программного кода.
- Компилятор MPLAB® XC. Если разрабатываемое приложение будет написано на C/C++, то потребуется установить компилятор, который преобразует программу с языка высокого уровня в машинный код. Компания Microchip предлагает компиляторы MPLAB XC8, MPLAB XC16, MPLAB XC32 для 8, 16 и 32-разрядных микроконтроллеров.
- Proteus – программная среда для моделирования процесса выполнения программного кода.
Аппаратные средства необходимы для проверки работы созданной программы на реальном устройстве. Используются следующие аппаратные средства.
- Отладочные платы (Curiosity boards). Отладочные платы используются для прототипирования разрабатываемых устройств.
- Программатор (programmer). Программатор используются для загрузки созданной программы в микроконтроллер. Если используемая отладочная плата не имеет встроенного программатора, то его надо приобрести отдельно.
На рис. 1.5 показаны два варианта применения программатора: в верхней части рисунка показан автономный программатор (требуется кабель для соединения программатора с компьютером и второй кабель – для соединения с отладочной платой); в нижней части – программатор встроен в отладочную плату (требуется один кабель для соединения компьютера с отладочной платой).
Используемые в настоящее время программаторы для микроконтроллеров компании Microchip перечислены в таблице 1.6.
- Платы расширения. Эти платы позволяют нарастить функциональные возможности отладочных плат. Например, совместно с отладочными платами компании Microchip широко применяются платы расширения click boards ™ компании MikroElektronika (www.mikroe.com ). Click boards™ – это модульный стандарт плат расширения, которые добавляют отладочным платам новые функциональные возможности. Все click boards имеют стандартный разъем mikroBUS, что позволяет быстро создавать прототипы, не теряя времени на настройку или пайку оборудования. Эта концепция plug and play позволяет сосредоточиться не на оборудовании, а на реализации идеи проекта.
1.3. Интегрированная среда разработки Microchip Studio для AVR
1.3.2. Создание проекта «Линейка светодиодов» в Microchip Studio
1.3.2.1. Начало работы
Для программирования микроконтроллеров AVR будем использовать интегрированную среду разработки (Integrated Development Environment – IDE) Microchip Studio. Эта IDE представляет собой единую среду для записи, сборки и отладки программ на ассемблере и на C/C++. Официальную версию можно скачать бесплатно с сайта компании Microchip: https://www.microchip.com/en-us/tools-resources/develop/microchip-studio. Среду Microchip Studio можно использовать для разработки и отладки приложений на микроконтроллерах AVR ® и SAM. Несмотря на то, что она поставляется с новым названием и внешним видом, её можно использовать с любой существующей документацией и видеороликами от предыдущей среды разработки – Atmel Studio. Microchip Studio имеет следующие отличительные черты:
- Поддержка более 500 устройств AVR и SAM.
- Поддержка компилятора MPLAB ® XC8.
- Обширная библиотека исходного кода, включая драйверы, коммуникационные стеки, многочисленные примеры с исходным кодом, графические сервисы и сенсорные функции Advanced Software Framework (ASF).
- Расширения IDE через Microchip Gallery – онлайн-магазин приложений для инструментов разработки и встроенного программного обеспечения от Microchip и третьих сторон.
- Функционал для настройки емкостного сенсорного дизайна, проверки производительности системы, мониторинга энергопотребления и построения графиков и трассировки данных в режиме реального времени.
- Функционал для настройки и тестирования беспроводных устройств.
- Встроенный компилятор для создания и отладки кода на C/C++ и ассемблере.
- Расширенные функции отладки, включая сложные точки останова данных и поддержку трассировки (устройства SAM3 и SAM4).
- Встроенный редактор с визуальной поддержкой.
- Мастер проектов, который позволяет создавать проекты с нуля или из большой библиотеки примеров.
После установки и запуска Microchip Studio на экране монитора появляется начальное окно, показанное на рис. 1.3. Разработка программы начинается с создания проекта. Для начала на диске C создадим папку для хранения проектов, которую назовем, например, Projects_AVR. Чтобы создать проект, надо выбрать опции File –> New –> Project. Появится окно мастера создания проекта, показанное на рис. 1.4. Выберем в левой части окна язык C/C++, в средней части выберем AVR XC8 C Application Project.
Будем создавать проект, который представляет собой мигающую линейку из восьми светодиодов. Поэтому в нижней части этого окна в качестве имени проекта укажем Line_Leds, далее щелкнем по кнопке Browse и укажем созданную ранее папку Projects_AVR. Галочку около опции Create directory for solution убираем. Щелкаем OK. Появится новое окно, в котором выбираем микроконтроллер ATmega8A, как показано на рис. 1.5. Щелкаем OK.
Появляется окно, показанное на рис. 1.6 с начальным кодом на языке C. Здесь есть строки, выделенные символами:
/* … */ – начало и конец комментария.
Этими символами обозначается многострочный комментарий. Однострочный комментарий обозначатся двумя косыми чертами //. Комментарий служит для пояснения кода программы, компилятор на него не реагирует и просто пропускает. Поэтому без ущерба для программы комментарий можно удалить.
1.3.2.2. Разработка листинга программы
Давайте создадим программу для микроконтроллера ATmega. Начальный код, созданный при запуске Microchip Studio, можно просто удалить. При написании программы следует обращать внимание на подсказки редактора кода. Редактор знает доступные переменные и функции. Например, при вводе директивы #include уже при наборе первых букв #in появится список, из которого можно выбрать #include, щелкнув по клавише Enter. Так меньше шансов сделать ошибку при наборе кода. При редактировании программы, если нажать Ctrl + Space, появится список автозаполнения, из которого можно выбрать доступные варианты.
Создадим для микроконтроллера ATmega8A проект, содержащий программу для мигания линейки из восьми светодиодов.
Пример 1.5.
#define F_CPU 1000000UL // устанавливаем частоту процессора 1 МГц
#include <avr/io.h>
#include <util/delay.h> //подключаем утилиту delay (задержка выполнения кода)
int main(void)
{
DDRD = 0b11111111; //устанавливаем выводы порта D на выход
PORTD = 0; // записываем в порт D нули
while(1) // заголовок бесконечного цикла
{
PORTD = 0b11111111; //устанавливаем “1” во все биты (засвечиваем все //светодиоды)
_delay_ms(300); // ждем 300 мс
PORTD = 0; //устанавливаем “0” во все биты (гасим светодиоды)
_delay_ms(300); // ждем 300 мс
}
}
Поcле того, как программа написана, её необходимо скомпилировать. Для этого выбираем опции Build –> Build Solution (или щелкаем клавишу F7). Если код программы написан без ошибок, то в нижней части интерфейсного окна появится запись Build succeeded (сборка прошла успешно) (рис. 1.7).
Давайте немного усложним программу. Пусть светодиоды засвечиваются не все сразу, а последовательно по одному, начиная с нулевого и заканчивая седьмым. Таким образом, по линейке светодиодов от её начала (от нулевого светодиода) к концу побежит светящийся огонек.
Модифицированная программа имеет следующий вид.
Пример 1.6.
#define F_CPU 1000000UL // устанавливаем частоту процессора 1 МГц
#include <avr/io.h>
#include <util/delay.h> //подключаем утилиту delay (задержка выполнения кода)
int main(void)
{
DDRD = 0b11111111; //устанавливаем выводы порта D на выход
PORTD = 0; // записываем в порт D нули
while(1) // заголовок бесконечного цикла
{
int i; //определяем переменную i
PORTD=0b00000001; //засвечиваем нулевой светодиод
for (i=0; i<=7; i=i+1) //задаем цикл
{
if (i>=1)
PORTD=PORTD<<1; //применяем операцию сдвига влево на 1 позицию
_delay_ms(300); // ждем 300 мс
}
PORTD=0; //гасим все светодиоды
_delay_ms(300); // ждем 300 мс
}
}
Программа создана. Что дальше? А дальше надо смоделировать работу программы, и если программа работает так, как было задумано, то программу можно загружать в микроконтроллер. Все дальнейшие шаги работы с этой программой, а также и с другими программами подробно описаны в учебном пособии, а сейчас просто посмотрим небольшой видеофрагмент, как выглядит моделирование показанной в примере 1.6 программы в специализированном программном обеспечении Proteus.
Стоимость учебного пособия – 490 руб.