void assign_doornumber(struct car *some_car);
:
:
;
assign_doornumber(&your_car)
:
:
void assign_doornumber(struct car *some_car) {
some_car–>doors = 4;
return 0;
}
А сейчас мы обсудим, как создать массив структур. Допустим, что мы уже определили структуру circuit_board как новый тип данных:
struct circuit_board {
int transistor;
int bus;
int serial_port;
int parallel_port;
}
Создадим теперь массив new_board с пятью элементами, каждый из которых является структурой типа circuit_board:
struct circuit_board new_board[5];
К каждой записи внутри каждого элемента этого массива можно обратиться, используя номер элемента (фактически это номер структуры внутри массива) и имя записи внутри структуры:
new_board[2].transistor = 100;
Это выражение присваивает значение 100 записи под именем transistor третьего элемента массива new_board (элементы в составе массива отсчитываются с нулевого). Этим разделом мы закончили краткий обзор техники программирования МК на Си. Перейдем теперь к рассмотрению процесса генерации файла исполняемого кода программы для выбранного типа МК из файла исходного текста программы на Си.
3.13. Процесс программирования и отладки микропроцессорной системы
В данном разделе мы обсудим технологию создания и отладки прикладной программы в микроконтроллерных системах. Сначала рассмотрим процесс создания исходного текста управляющей программы и его превращение в файл исполняемого кода (ехеcutable file).
3.13.1. Технология создания программного кода
Процесс программирования кажется достаточно простой монотонной деятельностью до тех пор, пока задача управления, которую требуется реализовать, достаточно проста. Однако программисты с опытом знают, что большинство технических заданий удивительно быстро превращается достаточно сложный проект, часть задач которого разработчиком ранее не реализовывалась. Именно по этой причине необходимо правильно организовать исполнение проекта, даже если первоначальная задача кажется простой. Поэтому авторы настоятельно советуют читателю приобрести навыки системного подхода к написанию программ, независимо от языка программирования, на котором реализуется проект. Поскольку данная книга не претендует на системное изложение вопросов теории программирования, то наши советы по данной теме будут достаточно краткими.
При написании программы первым делом необходимо как можно более полно понять принцип действия и особенности работы того устройства, для которого программа предназначена. На основе этих знаний следует создать такую структуру программы, которая позволит удовлетворить как текущему техническому заданию, так и возможным будущим его дополнениям. На первых порах Вы можете начать самостоятельную работу, следуя рекомендациям главы 2. Вы уже умеете перейти от произвольного описания алгоритма управления к структуре функций управления и блок схемам алгоритмов. Рассмотренные в главе 2 методы структурного проектирования позволят Вам сначала увидеть задачу управления целиком, а затем произвести ее разбиение на отдельные блоки (подзадачи). Каждая такая подзадача должна быть оформлена в виде законченной подпрограммы или функции. Выделенные функции впоследствии будут объединены в один программный модуль, который должен быть отлажен и тестирован до того, как все другие составляющие модули программы будут объединены. Процессы написания, тестирования и отладки программ близко связаны. Вы никогда не должны сначала собрать полный текст программы, а затем начать ее отлаживать. Правильным подходом является написание, тестирование и отладка каждого программного модуля по отдельности перед тем, как эти модули будут объединены вместе. Процесс объединения должен использовать тот же подход: добавлять уже оттестированные модули к отлаженной части общей программы следует последовательно. И после добавления каждого нового модуля не лениться тестировать функционирование получившегося нового промежуточного программного продукта, в том числе убедиться в исполнении новых добавленных функциональных возможностей.
Напомнив Вам основные моменты структурного подхода к процессу написания исходного кода и его отладке, рассмотрим процесс превращения файла исходного кода на Си в файл исполняемого кода для определенного типа микроконтроллера. Мы рассмотрим эту технологию с использованием интегрированной среды разработки ICC12 версии 6.12B от компании ImageCraft. Если Вы используете программную среду разработки от другого производителя, то этот материал не будет для Вас бесполезным, поскольку принципы преобразования кодов в процессе создания исполняемого модуля прикладной программы одинаковы для всех аналогичных программных продуктов.
Читать дальше