УДК 004.382.7
ББК 32.973.26
С89
С89
Суэмацу, Ёсикадзу
Микрокомпьютерные системы управления. Первое знакомство.
/Пер. с яп.; под ред. Ёсифуми Амэмия. — 2е изд., стер. —
М.: ДМК Пресс, 2017. — 256 с.: ил.
ISBN 9785970605028
Kнига призвана дать общее представление об областях примене
ния и возможностях микрокомпьютеров, используемых в качестве уп
равляющих устройств различными процессами и системами. В попу
лярной форме излагаются основные понятия из области микропро
цессорной техники, программирования, цифровой электроники, ме
тоды обработки данных, возможности и конфигурация микроком
пьютеров. На примере конкретных задач управления подробно рас
смотрены принципы составления программ для микроЭВМ, системы
команд, взаимодействие с периферийными устройствами.
Предназначена для начинающих радиолюбителей, студентов и
школьников, осваивающих основы проектирования и программиро
вания микропроцессорных контроллеров.
УДК 004.382.7
ББК 32.973.26
Original Japanese edition published as Illustrated Introduction to Mechatronics.
Introduction to Personal Computers Based Controllers
(Revised 2nd Edition) by Yoshikazu Suematsu.
Published by Ohmsha, Ltd., 31 Kanda Nishikicho, Chiyodaku, Tokyo, Japan.
Translation rights arranged with Ohmsha, Ltd.
Все права защищены. Никакая часть этого издания не может быть воспроизведена в любой
форме или любыми средствами, электронными или механическими, включая фотографирова
ние, ксерокопирование или иные средства копирования или сохранения информации, без пись
менного разрешения издательства.
ISBN 9784274086755 (яп.)
ISBN 9785941202140 (Д одэка)
© Yoshikazu Suematsu
ISBN 9785970605028 (ДМК Пресс) © Издание, ДМК Пресс, 2017
© Перевод, макет, ДодэкаXXI
Стр.5
ОГЛАВЛЕНИЕ
От редактора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
1. МИКРОКОМПЬЮТЕР КАК ОРУДИЕ ТРУДА . . . . . . . . . . . . .15
1.1. Где применяются микрокомпьютеры . . . . . . . . . . . . . . . . . . . . . .15
1.2. Функции контроллеров бытовых приборов . . . . . . . . . . . . . . . .21
1.3. Алгоритм работы микрокомпьютера . . . . . . . . . . . . . . . . . . . . . .25
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
2. УСТРОЙСТВО МИКРОКОМПЬЮТЕРА . . . . . . . . . . . . . . . . . .33
2.1. Внешний вид микрокомпьютера . . . . . . . . . . . . . . . . . . . . . . . . .34
2.2. Процессор (ЦПУ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
2.3. Запоминающее устройство . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
2.4. Порты вводавывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
3. МИКРОКОМПЬЮТЕРНАЯ МАТЕМАТИКА . . . . . . . . . . . . . . .51
3.1. Двоичная система счисления . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
5
Стр.6
ОГЛАВЛЕНИЕ
Сложение двоичных чисел . . . . . . . . . . . . . . . . . . . . . . . . . . .53
Отрицательные двоичные числа
(представление в дополнительном коде) . . . . . . . . . . . . . . . .55
Вычитание двоичных чисел . . . . . . . . . . . . . . . . . . . . . . . . . .57
Умножение двоичных чисел . . . . . . . . . . . . . . . . . . . . . . . . . .59
3.2. Шестнадцатеричная система счисления . . . . . . . . . . . . . . . . . .59
3.3. Двоичнодесятичный код (BCD) . . . . . . . . . . . . . . . . . . . . . . . .62
3.4. Логические операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
Логическое сложение (ИЛИ) . . . . . . . . . . . . . . . . . . . . . . . . .64
Логическое умножение (И) . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Отрицание (НЕ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
Исключающее ИЛИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
4. ЦИФРОВЫЕ СХЕМЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
4.1. Вентильные схемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
4.2. Триггеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Счетный триггер (Tтриггер) . . . . . . . . . . . . . . . . . . . . . . . . .76
Dтриггер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
4.3. ТТЛ (транзисторнотранзисторные логические схемы) . . . . .78
Вентильные схемы ТТЛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Схемы с Zсостоянием . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Дешифратор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
«Защелка» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
4.4. Архитектура микрокомпьютера . . . . . . . . . . . . . . . . . . . . . . . . .86
Соединение процессора и ЗУ . . . . . . . . . . . . . . . . . . . . . . . . .86
Соединение ЦПУ с портами вводавывода . . . . . . . . . . . . . .92
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
5. ПРОГРАММЫ ДЛЯ МИКРОКОМПЬЮТЕРА . . . . . . . . . . . . .97
5.1. «Лингвистические» способности микрокомпьютера . . . . . . . .97
6
Стр.7
ОГЛАВЛЕНИЕ
5.2. О том, что такое «мнемоника» и как она заменяет
машинный код . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
5.3. Схема выполнения команды . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
6. ВВЕДЕНИЕ В МАШИННЫЙ ЯЗЫК . . . . . . . . . . . . . . . . . . . .111
6.1. Назначение регистров ЦПУ . . . . . . . . . . . . . . . . . . . . . . . . . . .111
Регистры A и F для хранения результатов вычислений . . .111
Регистры общего назначения — «записная книжка»
процессора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Дополнительные регистры — «дублеры» главных
регистров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Регистры — указатели адреса IX и IY . . . . . . . . . . . . . . . . . .116
Счетчик команд (PC) и указатель стека (SP) . . . . . . . . . . . .116
6.2. Kоманда загрузки данных (Load) . . . . . . . . . . . . . . . . . . . . . . .117
6.3. Kоманды арифметических операций . . . . . . . . . . . . . . . . . . . .119
Kоманды сложения и вычитания . . . . . . . . . . . . . . . . . . . . .119
Kоманды увеличения (INC) и уменьшения (DEC) . . . . . .120
Kоманда сравнения (CP) . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
6.4. Kоманды логических операций . . . . . . . . . . . . . . . . . . . . . . . .122
Kоманды «И», «ИЛИ», «Исключающее ИЛИ» . . . . . . . . . .123
Kоманды инверсии (CPL) и изменения знака (NEG) . . . .124
6.5. Kоманды перехода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Команды безусловного перехода (JP, JR) . . . . . . . . . . . . . . .125
Команды условного перехода . . . . . . . . . . . . . . . . . . . . . . . .127
6.6. Kоманды вызова подпрограммы и возврата
из подпрограммы (CALL, RET) . . . . . . . . . . . . . . . . . . . . . . . .129
6.7. Команды ввода и вывода (IN, OUT) . . . . . . . . . . . . . . . . . . . .134
Цикл считывания данных из порта ввода . . . . . . . . . . . . . .134
Цикл записи в порты вывода . . . . . . . . . . . . . . . . . . . . . . . .136
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
7
Стр.8
ОГЛАВЛЕНИЕ
7. СОСТАВЛЕНИЕ ПРОГРАММ . . . . . . . . . . . . . . . . . . . . . . . . .141
7.1. Технические характеристики микрокомпьютера
(аппаратные средства) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
7.2. Задача № 1 — поочередно зажечь определенное
количество светодиодов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Программирование «по частям» . . . . . . . . . . . . . . . . . . . . . .144
Kомпоновка единой программы . . . . . . . . . . . . . . . . . . . . . .148
Программа в машинных кодах и на языке ассемблера . . . .149
7.3. Задача № 2 — запомнить последовательность сигналов
и воспроизвести ее (вариант 1) . . . . . . . . . . . . . . . . . . . . . . . . .153
Процедура записи в память последовательности
сигналов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Процедура воспроизведения последовательности
сигналов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
7.4. Задача № 3 — запомнить последовательность сигналов
и воспроизвести ее (вариант 2) . . . . . . . . . . . . . . . . . . . . . . . .161
Запоминаем последовательность сигналов . . . . . . . . . . . . .161
Воспроизводим последовательность сигналов, соблюдая
временные интервалы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Kоррекция ошибок ввода состояния выключателей
(устранение «дребезга») . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
7.5. Задача № 4 — программа с использованием
таблицы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
7.6. Задача № 5 — управление шаговым двигателем . . . . . . . . . . .180
Kак управлять шаговым двигателем . . . . . . . . . . . . . . . . . . .180
Импульсы управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Описание программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186
8. ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА УПРАВЛЯЮЩЕГО
МИКРОКОМПЬЮТЕРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
8.1. БИС портов вводавывода . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
8
Стр.9
ОГЛАВЛЕНИЕ
8.2. Обработка прерывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Понятие прерывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Сигнал прерывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195
Программирование ПИ на обработку прерывания . . . . . .198
Задача № 6 — программа контроля механической
системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
8.3. БИС таймерасчетчика (CTC) . . . . . . . . . . . . . . . . . . . . . . . . .205
8.4. Преобразования цифровых и аналоговых сигналов . . . . . . . .208
Цифроаналоговый преобразователь (ЦАП) . . . . . . . . . . . .209
Аналогоцифровой преобразователь (АЦП) . . . . . . . . . . . .214
Задача № 7 — программа ввода в ЦПУ изменяющегося
во времени аналогового сигнала . . . . . . . . . . . . . . . . . . . . . .222
Обобщение главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Практические задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Ответы к практическим заданиям . . . . . . . . . . . . . . . . . . . . . . . . . . .244
Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Стр.10