Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
3.17. Вопросы и задания
1. Каково назначение символа «;» в программах на Си?
2. Сколько байт отводится для хранения переменной в формате integer?
3. Какое количество байт отводится для хранения переменной указателя?
4. В какой области памяти МК семейства 68HC12 размещаются переменные со статическим классом хранения?
5. Расскажите о двух назначениях символа * в программах на Си.
6. Опишите процесс преобразования файла с исходным текстом программы на Си в файл исполняемых кодов программы.
1. Глобальные переменные обладают свойством доступности данных из любой функции программного модуля. Почему тогда все используемые в программном модуле переменные не объявляют глобальными, ведь так программисту удобнее?
2. Создайте структуру для хранения записей телефонных абонентов. Каждая запись должна включать имя абонента, номер телефона, улицу и номер дома проживания, город, почтовый индекс.
3. В тексте программы на Си присутствует запись:
Поясните, какие действия компилятора или управляющей программы соотносятся с этим выражением?
4. Поясните назначение макроопределения. Приведите примеры макроопределений в программах на Си.
5. В чем отличие макроопределения от функции?
1. Напишите программу на Си, которая переключает состояние светодиодов из выключенного во включенное и наоборот каждые 5 с. Функциональная схема подключения светодиодов (в составе семисегментного индикатора) к МК семейства 68HC12 приведена на рис. 3.12.
Рис. 3.12. Схема подключения семисегментного индикатора к микроконтроллеру 68HC912B32
2. Используя понятия структуры и указателя, напишите программу, которая выводит на экран дисплея информацию об абоненте телефонной компании, которая записана в формате, который Вы разработали в задании №2 раздела «более сложные вопросы».
3. Напишите программу для отображения на семимегментном индикаторе последовательности цифр от 0 до 9. Каждая цифра должна светиться 100 мс. Функциональная схема подключения семисегментного индикатора к МК семейства 68HC12 приведена на рис. 3.12. Семисегментный индикатор выполнен по схеме с общим катодом. Схема соединения светодиодов внутри корпуса индикатора и обозначения сегментов индикатора представлены на рис. 3.13. Аноды диодов подключаются к выходам логических буферных элементов (интегральная схема 74ALS244) через резисторы, которые служат ограничителями тока каждого сегмента (светодиода) индикатора. Входы интегральной схемы 74ALS244 подключены к выходам порта МК. Для формирования на индикаторе образов цифр и букв необходимо вывести под управлением программы на выводы порта МК кодовые комбинации, которые перечислены в табл. 3.9.
| Цифра шестнадцатеричной системы счисления | Кодовая комбинация | Цифра шестнадцатеричной системы счисления | Кодовая комбинация |
|---|---|---|---|
| 0 | 0x3F | 1 | 0x06 |
| 2 | 0x5B | 3 | 0x4F |
| 4 | 0x66 | 5 | 0x6D |
| 6 | 0x7D | 7 | 0x07 |
| 8 | 0x7F | 9 | 0x6F |
| A | 0x77 | B | 0x7F |
| C | 0x39 | D | 0x3F |
| E | 0x79 | F | 0x71 |
Табл. 3.9. Кодовые комбинации для высвечивания цифр шестнадцатеричной системы счисления
Рис. 3.13. Семисегментный индикатор с общим катодом
В процессе создания программы разработайте структуру программы, блок-схему алгоритма, псевдокод. Напишите функцию, которая получает в качестве параметра номер отображаемой цифры и формирует на выходе порта PORTB соответствующий код засветки. Напишите функцию отсчета задержки в 100 мс. Напишите основную функцию main.c., в которой последовательно перебираются и передаются для отображения все цифры.
Глава 4
МИКРОКОНТРОЛЛЕРЫ 68HC12 И HCS12: АРХИТЕКТУРА И ПРОГРАММИРОВАНИЕ
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ СМОЖЕТЕ:
• Описать структуру и определить основные отличительные особенности МК семейства 68НС12;
• Описать различные режимы работы МК 68HC12;
• Описать, какие действия выполняются над аппаратными средствами МК в состоянии сброса;
• Объяснить необходимость подсистемы прерывания в составе МК;
• Объяснить последовательность действий на аппаратном и программном уровне, которые выполняются при обработке запроса на прерывание в МК;
• Описать работу модуля тактирования в составе МК 68HC12;
• Описать структуру и режимы работы модуля таймера TIM, счетчика внешних событий и модуля меток реального времени, привести примеры программирования всех перечисленных подсистем реального времени;
• Разъяснить термины, которые используются при описании обмена данными в последовательном коде;
• Описать структуру аппаратных средств и привести примеры программирования контроллера асинхронного последовательного обмена SCI в составе МК 68HC12;
• Составить программу для обмена в последовательном коде c заданными параметрами для модуля SCI;
• Описать структуру аппаратных средств и привести примеры программирования контроллера синхронного последовательного обмена SPI в составе МК 68HC12;
• Разъяснить физический смысл процессов и терминов, связанных с аналого цифровым преобразованием, таких, как квантование по времени и по уровню, кодирование информации, частота выборки, разрешающая способность, скорость потока данных оцифровки;
• Грамотно рассчитать параметры процесса аналого цифрового преобразования для сигнала с заданной частотой и формой;
• Описать модуль аналого цифрового преобразователя ATD в составе МК 68HC12;
• Разработать программу для выполнения нескольких преобразований модулем ATD по заданному сценарию;
• Подробно описать усовершенствования модуля АЦП в составе МК HCS12 по сравнению с модулем ATD в составе 68HC12;
• Составить программу и использовать модуль широтно-импульсного модулятора PWM в составе МК 68HC12B32 для управления электрическими двигателями.
Знакомясь с оглавлением, Вы должны были заметить, что эта глава — самая длинная в книге. В ней мы с достаточной степенью подробности изучим структуру и режимы работы всех подсистем микроконтроллеров семейства 68HC12 и HCS12. Для определенности рассмотрение будем вести на примере двух моделей МК: MC68HC912B32 и MC9S12DP256. Далее с целью удобства восприятия будем называть эти модели просто B32 и DP256. Периферийные модули в составе МК 68HC12 и HCS12 очень похожи друг на друга. Поэтому мы сначала будем рассматривать модули МК 68HC12, а затем остановимся на отличиях конкретного модуля в составе семейства HCS12 от его прототипа в составе 68HC12. Изучению каждого периферийного модуля будет предшествовать краткая теоретическая справка, затем будут рассмотрены структура аппаратных средств и регистры специальных функций модуля. В завершение для каждого модуля приведены несколько примеров его программного обслуживания.