Шрифт:
Мы также рассмотрели процесс преобразования исходного текста программы на Си в файл исполняемых кодов для МК выбранного типа. Мы показали Вам примеры всех промежуточных генерируемых файлов по ходу этого процесса. Мы также кратко остановились на аппаратных особенностях МК семейства 68HC12/HCS12 для целей отладки, рассмотрели возможности использования аппаратных и программных средств платы MC68HC912B32EVB для тестирования и отладки примеров следующих глав данной книги.
3.16. Что еще почитать?
1. Kernighan, В. W., and D. М. Ritchie. The С Programming Language, 2nd ed. Upper Saddle River, NJ: Prentice Наll, 1988.
2. Schildt, Н. С: The Complete Reference. Osborne McGraw Нill.
3. Harbison, Samuel Р. III, and Guy Steele Jr. С А Reference Manual, 5th ed. Upper Saddle River, NJ: Prentice Наll, 2002.
4. ImageCraft С Compiler and Development Environment for Motorola HC12, ImageCraft Creations Inc., Раlo Alto, СА, 2002.
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., в которой последовательно перебираются и передаются для отображения все цифры.