Оглавление
Предисловие 3
ВВЕДЕНИЕ 5
ГЛАВА 1. Что нужно знать программисту о микроконтроллерах семейства i8051 9
1.1. Общие сведения об архитектуре i8051 9
1.2. Правила записи команд микроконтроллера семейства i8051 на Ассемблере 14
1.3. Форматы и способы адресации данных 16
1.4. Форматы и способы адресации команд 19
1.5. Команды пересылки информации 21
1.6. Команды поразрядной обработки информации 23
1.7. Команды арифметических операций 26
1.8. Управляющие команды 28
ГЛАВА 2. Директивы ассемблера для микроконтроллеров семейства i8051 32
2.1. Общие понятия о процессах трансляции и компоновки 32
2.2. Обработка имен транслятором и компоновщиком 36
2.3. Директивы резервирования памяти и инициализации данных 43
2.4. Использование выражений в операндах 46
2.5. Директивы условной трансляции 47
2.6. Директивы подстановок 49
2.7. Директивы управления вводом и выводом 54
ГЛАВА 3. Кросс-средства фирмы 2500 A.D. Software, Inc. для семейства i8051 58
3.1. Общие сведения по пакету программ 58
3.2. Работа с транслятором 60
3.3. Сообщения транслятора об ошибках 62
3.4. Работа с библиотекарем 66
3.5. Сообщения библиотекаря об ошибках 71
3.6. Работа с компоновщиком (редактором связей) 72
3.7. Как вычисляются адреса при компоновке модулей 77
3.8. Сообщения компоновщика об ошибках 78
3.9. Форматы некоторых файлов 84
ГЛАВА 4. Программирование арифметических действий 88
4.1. Кодирование информации в микроконтроллере 88
4.2. Арифметические действия с большими числами 94
4.3. Арифметические действия с отрицательными числами 100
4.4. Контроль точности при программировании арифметических операций 103
ГЛАВА 5. Программирование вычисления функций 108
5.1. Возведение в квадрат и извлечение квадратного корня 108
5.2. Переход от десятичной системы счисления к двоичной и обратно 112
5.3. Вычисление функций при помощи таблиц 118
5.4. Вычисление обратной функции по таблице прямой функции 125
5.5. Компенсация систематических погрешностей при помощи таблиц 130
ГЛАВА 6. Программирование фильтрации сигналов 134
6.1. Особенности цифровой фильтрации сигналов 134
6.2. Программирование простейших фильтров нижних частот 136
6.3. Программирование фильтра для оценки параметров сигнала 139
6.4. Программирование медианного фильтра 142
ГЛАВА 7. Программирование взаимодействия с внешними устройствами 149
7.1. Общие вопросы взаимодействия 149
7.2. Порядок выполнения прерываний в микроконтроллерах семейства i8051. 151
7.3. Синхронизация работы программы внешним или внутренним сигналом 153
7.4. Программирование приема информации от датчиков 159
7.5. Программирование выдачи команд на исполнительные устройства 161
7.6. Программирование ввода и вывода информации для пользователя 163
ГЛАВА 8. Несколько рекомендаций о стиле программирования 169
8.1. Стиль программирования и использование ресурсов 169
8.2. Оформление исходного текста программы 171
8.3. Системы обозначений, выражения и простые подстановки 173
8.4. Применение подпрограмм и сложных текстовых подстановок 176
Заключение 179
Приложение 1. Перечень команд семейства i8051, упорядоченный по кодам операций 181
Приложение 2. Сводка команд i8051 в алфавитном порядке 187
Предисловие
Автор, попав в начале 80-х гг. прошлого века по командировочным делам в Государственный оптический институт (ГОИ, бывший тогда головным научно-исследовательским учреждением Миноборонпрома), обмер, будто пораженный громом, красующимся на стене лозунгом с аршинными буквами "КАЖДОМУ ПРИБОРУ — СВОЙ МИКРОПРОЦЕССОР!". Этот призыв по сути дела был направлен в наступившее ныне будущее, когда массовый выпуск микроконтроллеров и наборов микросхем к ним освоен не только зарубежной, но и отечественной промышленностью.
Применение микроконтроллеров, начинавшееся в ту пору с цифровых часов и микрокалькуляторов, в настоящее время продолжает расширяться и оправдано не только малыми размерами, весом и энергопотреблением при высокой надежности и низкой стоимости этих микросхем. Главной причиной эффективности использования микроконтроллеров является их функциональная универсальность, которая обусловлена возможностью их программирования. Однако книги по программированию для микроконтроллеров на современном книжном рынке практически отсутствуют. Издания по микроконтроллерам в основном ориентированы на аппаратное обеспечение, хотя в них и приводятся сведения по архитектуре и системе команд, а иногда и по кросс-средствам для разработки и отладки программ.
Автор поставил перед собой достаточно скромную цель: поделиться практическим опытом программирования на языке Ассемблера для микроконтроллеров семейства i8051. Для автора работа по программированию для микроконтроллеров началась с заданного в лоб вопроса, сумеет ли он написать и отладить программу управления центрифугой. Самонадеянный ответ: “Не знаю, не пробовал. Наверно смогу!” не оставил путей к отступлению, и вот уже накоплен пятилетний опыт, оказавшийся успешным в производственном смысле.
Конечно, было бы хорошо издать фундаментальный труд, являющийся аналогом поваренной книги и состоящий из текстов функционально законченных блоков небольшого или среднего размера, которые могут оказаться полезными при разработке программ для самых разных изделий. Разработчикам и программистам нужны также книги о номенклатуре и характеристиках разнообразнейших микросхем, предназначенных для работы с микроконтроллерами. Из-за недостатка такого рода информации разработчикам микроконтроллерных устройств зачастую приходится “изобретать велосипед”. Программирование драйверов для работы с микросхемами, подключаемыми к микроконтроллерам, также является интересной и важной задачей, не нашедшей отражения в книгах. Однако для ее решения пришлось бы собрать и обобщить разнообразный материал по очень большому количеству прикладных программ, что трудно сделать без риска быть обвиненным в разглашении фирменных секретов или, как говорят, "ноу-хау". Поэтому автор решил ограничиться учебным пособием.
Автор считает приятным долгом выразить признательность инженеру Волченкову А.В., сотрудничество с которым позволило разработать не только вышеупомянутую программу управления центрифугой, но и множество других не менее интересных и полезных программ. Его постоянная готовность помогать коллегам и устранять какие бы то ни было погрешности в своей части работы сделали совместную с ним деятельность автора вдохновляющей и плодотворной.
К.Э.