- •Эрни Каспер Программирование на языке Ассемблера для микроконтроллеров семейства i8051
- •1.Что нужно знать программисту о микроконтроллерах семейства i8051
- •1.1.Общие сведения об архитектуре i8051
- •1.2.Правила записи команд микроконтроллера семейства i8051 на Ассемблере
- •1.3.Форматы и способы адресации данных
- •1.4.Форматы и способы адресации команд
- •1.5.Команды пересылки информации
- •1.6.Команды поразрядной обработки информации
- •1.7.Команды арифметических операций
- •1.8.Управляющие команды
- •2.Директивы ассемблера для микроконтроллеров семейства i8051
- •2.1.Общие понятия о процессах трансляции и компоновки
- •2.2.Обработка имен транслятором и компоновщиком
- •2.3.Директивы резервирования памяти и инициализации данных
- •2.4.Использование выражений в операндах
- •2.5.Директивы условной трансляции
- •2.6.Директивы подстановок
- •2.7.Директивы управления вводом и выводом
- •Глава 3.
- •3.Кросс-средства фирмы 2500 a.D. Software, Inc. Для семейства i8051
- •Глава 4
- •4.Программирование арифметических действий
- •4.1.Кодирование информации в микроконтроллере
- •4.2.Арифметические действия с большими числами
- •4.3.Арифметические действия с отрицательными числами
- •4.4.Контроль точности при программировании арифметических операций
- •Глава 5
- •5.Программирование вычисления функций
- •5.1.Возведение в квадрат и извлечение квадратного корня
- •5.2.Переход от десятичной системы счисления к двоичной и обратно
- •5.3.Вычисление функций при помощи таблиц
- •5.4.Вычисление обратной функции по таблице прямой функции
- •5.5.Компенсация систематических погрешностей при помощи таблиц
- •Глава 6
- •6.Программирование фильтрации сигналов
- •6.1.Особенности цифровой фильтрации сигналов
- •6.2.Программирование простейших фильтров нижних частот
- •6.3.Программирование фильтра для оценки параметров сигнала
- •6.4.Программирование медианного фильтра
- •Глава 7
- •7.Программирование взаимодействия с внешними устройствами
- •7.1.Общие вопросы взаимодействия
- •7.2.Порядок выполнения прерываний в микроконтроллерах семейства i8051.
- •7.3.Синхронизация работы программы внешним или внутренним сигналом
- •7.4.Программирование приема информации от датчиков
- •7.5.Программирование выдачи команд на исполнительные устройства
- •7.6.Программирование ввода и вывода информации для пользователя
- •8.Несколько рекомендаций о стиле программирования
- •8.1.Стиль программирования и использование ресурсов
- •8.2.Оформление исходного текста программы
- •8.3.Системы обозначений, выражения и простые подстановки
- •8.4.Применение подпрограмм и сложных текстовых подстановок
8.Несколько рекомендаций о стиле программирования
8.1.Стиль программирования и использование ресурсов
Начнем с того, что современная технология программирования предусматривает определенную последовательность выполнения работ. После создания исходного текста необходимо транслировать его в объектный код и при наличии синтаксических ошибок корректировать программу до их устранения. Затем аналогичным образом повторяется компоновка объектных модулей до устранения синтаксических ошибок в связях между модулями и до приемлемого использования ресурсов памяти. Полученную в результате трансляции и компоновки исполняемую программу нужно отлаживать до устранения ошибок в семантике (смысле действий, производимых программой).
Но в рамках этой технологии программист имеет множество степеней свободы (их излишек не всегда способствуют успешному программированию). Возможности выбора алгоритма решения задачи и языка для написания исходного текста приводят к множеству вариантов. В этом плане использование Ассемблера при создании исходных текстов программ для микроконтроллеров можно считать хорошим ограничением. Система команд семейства i8051 имеет достаточно разнообразные операции и способы адресации операндов, что также предоставляет некоторую свободу действий программисту и позволяет создавать отличающиеся по стилю исполнения программы, выполняющие одну и ту же задачу.
Существование стиля обусловлено тем, что работа может быть выполнена разными способами с более или менее одинаковыми результатами. Стиль в смысле приемов и методов, используемых для повышения эффективности того или иного вида работы, очень важен. Вдобавок стиль программирования сродни также совокупности приемов, используемых для выражения мысли. Но не следует увлекаться аналогиями, ибо искусственный язык программирования предназначен для выражения не мыслей, а правил вычисления (алгоритмов). Целесообразность того или иного стилистического приема в программировании определяется экономией самых разных ресурсов на этапах разработки, изготовления и эксплуатации изделия. Таким образом стиль программирования является дополнительным фактором, оправдывающим применение микроконтроллеров для удешевления разработки, производства и эксплуатации изделий, а также для повышения удобства работы с изделием.
Критерии оптимизации программ с точки зрения экономии ресурсов должны выбираться в зависимости от конкретных обстоятельств. Задачей программиста является экономия таких ресурсов, как время работы программы и используемые объемы ОЗУ и ПЗУ. В отличие от больших проектов программирование для микроконтроллеров осуществляется как правило или одним программистом, или небольшой группой программистов. Хотя в силу этого обстоятельства опасность случившегося при вавилонском столпотворении смешения языков отпадает, хороший стиль программирования всегда полезен. Он важен для экономии времени, затрачиваемого на разработку программы, ее отладку и поддержку, необходимую в процессе усовершенствования изделия по результатам его эксплуатации или в случае введения доработок в аппаратуру.
Стиль программирования в значительной степени определяет успехи программиста и отражает его индивидуальность. Неряшливость в программировании тоже можно считать стилем, но это плохой стиль. Для улучшения стиля программисту время от времени необходимо осмысливать проделанную работы не только с точки зрения достигнутых результатов, но и с точки зрения затраченных на это средств. Усвоение хорошего стиля программирования должно идти параллельно с обучением программированию на Ассемблере. Стиль характеризует творческую сторону работы программиста, поэтому строгих правил здесь нет. Автор попытался изложить общие рекомендации, следуя которым можно быстрее добиться успеха. Однако каждый программист волен применять те или другие советы по-своему или не применять их. Важно не сотворить себе кумира (здесь автору приходится чистосердечно признаться, что в силу ряда причин его стиль программирования оставляет желать много лучшего) и по мере накопления опыта создавать удобные для себя правила и приемы программирования.
