Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Микроконтроллеры? Это же просто! Том 1

Том 1
Покупка
Артикул: 095425.02.99
Доступ онлайн
180 ₽
В корзину
Первая в отечественной литературе книга, написанная на доступном вплоть до начинающих уровне, охватывающая абсолютно все аспекты использования микроконтроллеров. На примере ставшего «де-факто» промышленным стандартом микроконтроллерного семейства х51 рассмотрены внутреннее устройство микроконтроллера, его система команд, схемы его сопряжения с периферийными устройствами и программы, осуществляющие это сопряжение, техника написания и трансляции ассемблера программ, анализ сообщений компилятора об ошибках, техника занесения программы в микроконтроллер и последующей отладки занесенных программ. Рассмотрен ряд полезных программ (многобайтного умножения, деления, преобразования из одного представления в другое и т. д.). Отдельно даны примеры полностью законченных разработок. Приведено большое количество обзорных и справочных материалов, охватывающих практически все микроконтроллеры, программно и аппаратно совместимые с семейством х51, существующие на момент выпуска книги. Книга адресована специалистам в области микроконтроллерной техники, студентам, ее изучающим, а также тем, кто желает самостоятельно разобраться в этой области.
Фрунзе, А. В. Микроконтроллеры? Это же просто! Том 1 : практическое руководство / А. В. Фрунзе. - 2-е изд. - Москва : ДМК Пресс, Додэка-XXI, 2023. - 312 с. - ISBN 978-5-89818-590-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/2107962 (дата обращения: 11.12.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Микроконтроллеры?
Это же просто!

Том 1

А. В. Фрунзе

2023

МОСКВА
ДМК Пресс, ДодэкаXXI

2е издание, электронное

УДК 621.316.544.1(075)
ББК 31.264.5я7
Ф93

Ф93
Фрунзе, А. В.

Микроконтроллеры? Это же просто! Т. 1 / А. В. Фрунзе. — 2-е изд., эл. — 
1 файл pdf : 312 с. — Москва : ДМК Пресс, Додэка-XXI, 2023. — Систем. 
требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — 
Текст : электронный.

ISBN 978-5-89818-590-9

Первая в отечественной литературе книга, написанная на доступном вплоть до 
начинающих уровне, охватывающая абсолютно все аспекты использования микроконтроллеров. На примере ставшего «де-факто» промышленным стандартом микроконтроллерного семейства х51 рассмотрены внутреннее устройство микроконтроллера, его система команд, схемы его сопряжения с периферийными устройствами и 
программы, осуществляющие это сопряжение, техника написания и трансляции 
ассемблера программ, анализ сообщений компилятора об ошибках, техника занесения программы в микроконтроллер и последующей отладки занесенных программ. 
Рассмотрен ряд полезных программ (многобайтного умножения, деления, преобразования из одного представления в другое и т. д.). Отдельно даны примеры полностью 
законченных разработок. Приведено большое количество обзорных и справочных 
материалов, охватывающих практически все микроконтроллеры, программно и аппаратно совместимые с семейством х51, существующие на момент выпуска книги.
Книга адресована специалистам в области микроконтроллерной техники, студентам, ее изучающим, а также тем, кто желает самостоятельно разобраться в этой 
области.

УДК 621.316.544.1(075) 
ББК 31.264.5я7

Электронное издание на основе печатного издания: Микроконтроллеры? Это же просто! Т. 1 / 
А. В. Фрунзе. — Москва : ДМК Пресс, Додэка-XXI, 2015. — 312 с. — ISBN 978-5-97060-263-8. — 
Текст : непосредственный.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-590-9
© Издательский дом «Додэка-XXI» 
© Издание, ДМК Пресс, 2015 
® Серия «Программируемые системы»

Оглавление

— 3 —

Вступительная статья . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
Предисловие к второму изданию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7
Предисловие  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9

Глава 1. Первое знакомство . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.1. Память микроконтроллера  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
1.2. Особенности включения микроконтроллера и назначение выводов  . . . . . . . . . . . .  15
1.3. Двоичные и шестнадцатеричные числа  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
1.4. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  22

Глава 2. Сопряжение МК с программноуправляемыми ИС . . . . . . . . . . . . . . . . . . . 24

2.1. Сопряжение с параллельным АЦП  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24
2.2. Программа работы с параллельным АЦП  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28
2.3. Ассемблер: основные понятия и приемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
2.4. Ассемблер: особенности трансляции  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
2.5. Ассемблер: ошибки трансляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
2.6. Сопряжение с последовательным АЦП  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
2.7. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  57

Глава 3. Регистры микроконтроллера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.1. Регистры общего назначения и слово состояния программы . . . . . . . . . . . . . . . . . . .  61
3.2. Аккумулятор, расширитель аккумулятора, указатель стека и подпрограммы  . . . . .  65
3.3. Работа МК с внешней памятью данных  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  70
3.4. Региструказатель данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
3.5. Пример: подпрограмма, использующая регистры МК  . . . . . . . . . . . . . . . . . . . . . . . .  80
3.6. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  92

Глава 4. Сопряжение МК с индикаторами различных типов . . . . . . . . . . . . . . . . . . . 94

4.1. Сопряжение с ЖКИ на основе контроллера НТ1611 фирмы HOLTEK  . . . . . . . . . .  95
4.2. Сопряжение со светодиодными индикаторами типа АЛС318  . . . . . . . . . . . . . . . . .  104

Оглавление

Оглавление

— 4 —

4.3. Сопряжение с ЖКИ на основе контроллера НD44780 фирмы HITACHI  . . . . . . .  115
4.4. Сопряжение с 4разрядными светодиодными матричными индикаторами  . . . . .  136
4.5. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  163

Глава 5. Система команд микроконтроллеров х51  . . . . . . . . . . . . . . . . . . . . . . . . . . . .166

5.1. Общие сведения о системе команд  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  168
5.2. Группа команд передачи данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  172
5.3. Группа команд арифметических операций  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  180
5.4. Группа команд логических операций  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  185
5.5. Группа команд операций с битами  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  187
5.6. Флаги результата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  190
5.7. Группа команд передачи управления  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  191
5.8. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  200

Глава 6. Таймерысчетчики и система прерываний МК х51 . . . . . . . . . . . . . . . . . . 202

6.1. Таймерысчетчики микроконтроллеров семейства х51 . . . . . . . . . . . . . . . . . . . . . . .  202
6.2. Система прерываний микроконтроллеров семейства х51 . . . . . . . . . . . . . . . . . . . . .  209
6.3. Программа, использующая таймерсчетчик и прерывание  . . . . . . . . . . . . . . . . . . .  216
6.4. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  222

Глава 7. Практические примеры разработки устройств на МК х51  . . . . . . . . . . . 225

7.1. Противоугонное устройство на микроконтроллере семейства х51  . . . . . . . . . . . . .  225
7.2. Простой термостабилизатор на микроконтроллере АТ89С2051  . . . . . . . . . . . . . . .  234
7.3. Подпрограммы целочисленного многобайтного умножения и деления  . . . . . . . .  240
7.4. Милливольтметр постоянного тока на АЦП AD7894 и МК семейства х51  . . . . . .  253
7.5. Милливольтметр постоянного тока на АЦП AD7714 и МК семейства х51  . . . . . .  264
7.6. Краткие выводы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  284

Глава 8. Использование приемопередатчика для связи с ПК  . . . . . . . . . . . . . . . . . .286

8.1. Как связывать микроконтроллер и компьютер по каналу RS232 . . . . . . . . . . . . . .  287
8.2. Описание микросхем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  289
8.3. Режим работы микроконтроллера
с последовательным каналом  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  290
8.4. Основные подпрограммы для микроконтроллера  . . . . . . . . . . . . . . . . . . . . . . . . . . .  290
8.5. Общая программа для микроконтроллера. Диаграмма состояний устройства  . . .  293
8.6. Общая программа для ПК.  Диаграмма состояний ПК  . . . . . . . . . . . . . . . . . . . . . . .  299
8.7. Основные подпрограммы для ПК  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  301
8.8. Пользовательское описание программы для ПК  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  305
8.9. Заключение  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  308

Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310

— 5 —

Как известно, уже набила оскомину фраза про «все возрастающий интерес инженерной общественности к применению микроконтроллеров в
задачах управления и обработки сигналов». Литературы по упомянутой тематике вроде бы стало издаваться достаточно. Тем не менее, выход данной
книги — событие. Почему же? Так потому, что — ПРОСТО! Лично меня
трудно удивить литературной новинкой в электронной области, но когда я
взял в руки первую статью из цикла, на базе которого  написана эта книга,
то испытал приятный шок —  наконецто на просторах 1/6 части суши появилась книга, написанная на хорошем русском языке, не лишенная чувства юмора и вместе с тем технически исключительно цельная и грамотная.
В общем, это и неудивительно. Александр Виленович Фрунзе — известный
и авторитетный специалист, и хочется надеяться, что книгу, которую вы
сейчас держите в руках, ждет долгая и счастливая судьба. Я почти уверен,
что и через 10…15 лет основные ее положения будут оставаться актуальными. Это важное отличие данной книги от великого множества изданий по
микроконтроллерной тематике, которые в огромном большинстве представляют собой либо справочники, либо компиляцию с фирменных руководств по конкретным семействам.
Материал излагается на примере старого доброго 51го контроллера.
Предвижу возмущение некоторых специалистов, готовых похоронить этот
контроллер изза «неперспективности и устаревшей архитектуры и системы команд». Тем не менее, на основе этой архитектуры выпускается огромное число различных контроллеров, содержащих на борту широкую гамму
переферийных устройств — от портов до АЦП, ЦАП и интерфейса CAN.
Кроме того — как известно, «кадры решают все». В стране выросло не одно
поколение разработчиков, активно применяющих 51 контроллеры, его
изучение введено в учебные планы вузов, наконец в классическом исполнении его еще выпускает отечественная промышленность. Из личного
опыта могу сказать только одно — используй ту элементную базу, которой
владеешь. К сожалению, внедрение новых семейств связано с необходимостью их освоения — а это время и, конечно же, деньги. 

Вступительная статья

Вступительная статья

— 6 —

Материал книги изложен методически исключительно грамотно. Она
самодостаточна — начинающему не придется безуспешно искать в библиотеках издания, на которые обычно ссылаются при рассмотрении смежных
вопросов (как то машинная арифметика, представление чисел и т. п.), в то
же время опытный разработчик легко может пропустить знакомые разделы
без ущерба для понимания. Изложение настолько последовательно и выверено, что книга читается как хорошее художественное произведение. Крайне разумно используются приложения — они позволяют не перегрузить основной текст и в то же время это не сухие справочные данные, а разделы,
имеющие самостоятельную ценность. Тут и описание работы с микроконверторами от  Analog Devices, и исследование влияния на рынок средств
поддержки разработки, и пути модернизации систем — охват тем широчайший! Причем и в основном тексте, и в приложениях чувствуется авторский
стиль.
Отдельно следует упомянуть о примерах из книги. Не поленился и прогнал первый попавшийся наугад  — РАБОТАЕТ! Все примеры тщательно
протестированы и помогут начинающему в освоении нелегкого искусства
разработки систем на микроконтроллерах.
Конечно, как и в любой столь масштабной работе, не обошлось без недостатков. Практически не рассматриваются вопросы проектирования
систем с несколькими параллельно работающими контроллерами. 
Особо следует сказать, что эту книгу можно и нужно рекомендовать студентам. Она стимулирует самостоятельность мышления и дает представление о логике и методах проектирования, что зачастую гораздо важнее технических подробностей.

Доцент кафедры
«Автономные информационные
и управляющие системы»
МГТУ им. Н.Э.Баумана,
к.т.н. В.Б.СТЕШЕНКО

Предисловие к второму изданию

— 7 —

Переиздание этой книги — событие для меня, безусловно, приятное. Я
не сомневался, что книга будет переиздаваться, но одно дело — мои соображения по тому или иному вопросу, а другое — события, их подтверждающие.
Второе издание практически полностью повторяет первое. Я лишь исправил несколько досадных «очепяток», имевших место преимущественно
в шестой главе, да добавил абзац во второй главе в то место, где описывается, как с помощью моего ассемблера получить hexфайл (этот момент в
первом издании был сформулирован нечетко, и некоторые читательские
письма содержали просьбы о дополнительном разъяснении). Все остальное в книге оставлено без изменений.
С момента выхода книги я получил от ее читателей более двух сотен писем. Самыми ценными для меня являются те пять, в которых авторы просто
благодарят меня за книгу, без приложения к благодарности того или иного
вопроса. Ведь их писать заставила не нужда получить от меня дополнительно ту или иную подсказку, а именно благодарность.
Но и тем письмам, которые вместе с благодарностью содержали какиелибо вопросы, я был рад. Анализ этих вопросов показал, что и где мною было сформулировано недостаточно точно, и куда вкрались опечатки. Так что
и эти письма тоже были важны — именно они позволили исправить упомянутые недостатки.
Помимо конкретных технических вопросов, авторы писем спрашивали
и о том, почему в этом томе столь мало внимания уделено периферийным
устройствам, интерфейсам и т. д. Ответ, в общемто, прост. Главное назначение этой книги — помочь тем, кто только начинает осваивать микроконтроллерную технику. А для них подробное описание I2Cинтерфейса или
аналоговой периферии новейших LPCмикроконтроллеров — это китайская грамота, излишняя на первом этапе знакомства. Формируя книгу, я старался оставить в ней лишь то, без чего научиться работать с микроконтроллерами действительно невозможно. И, судя по отзывам читателей, мне это

Предисловие к второму изданию

Предисловие к второму изданию

— 8 —

вполне удалось. Именно поэтому она оставлена практически без изменений.

Когда готовилось к выпуску первое издание первых двух томов книги, я

еще не предполагал, что у нее будет продолжение. Однако безусловный читательский интерес к ней стимулировал работу над третьим и четвертым томами. Материалы, помещенные в этих томах, очень полезны не только для
формирования правильного стиля программирования, но и для расширения кругозора разработчика.

А. В. Фрунзе

Предисловие

— 9 —

Идея написания этой книги возникла у меня довольно неожиданно.
Так сложилось, что в течение однойдвух недель сразу четверо авторов из
тех, кто регулярно публикует свои материалы в журнале «СХЕМОТЕХНИКА», в разговоре со мной коснулись темы полного отсутствия литературы,
по которой люди, не имеющие опыта работы с микроконтроллерами,
смогли бы освоить их. Примерно в это же время я услышал подобные сетования и от двух моих знакомых инженеровэлектронщиков, специалистов
в аналоговой электронике — они тоже столкнулись с тем, что хотели бы
освоить работу с микроконтроллерами, но не представляют, где найти литературу, рассчитанную на новичков, самостоятельно начинающих почти с
нуля. Мне казалось, что подобной литературы если не навалом, то, во всяком случае, очень много, и просто нужно пару раз съездить в книжные магазины, торгующие научнотехнической литературой — от обилия предлагаемых ими книг просто рябит в глазах, и не может быть, чтобы выбрать
было не из чего. Но когда я сам посмотрел на появившиеся в последние
несколько лет книги по микроконтроллерной тематике, а также на публикации в журналах, я понял, что практически все они ориентированы на
тех, кто уже освоил эту предметную область. Статей и книг, рассчитанных
на новичков, и позволяющих шаг за шагом освоить микроконтроллеры, не
перегружая, раньше времени важными, но необязательными в первый момент подробностями, увы, нет. Так родилась идея написать для начинающих цикл статей по микроконтроллерам, знакомство с которым позволило
бы им осознать, что такое микроконтроллеры, как они устроены, как функционируют, как писать, отлаживать и заносить в них программы, и т. д.
Тем более что в свое время подобные книги были — достаточно вспомнить, например, замечательную книгу Дж. Коффрона «Технические средства микропроцессорных систем», вышедшую в 1983 году в издательстве
«Мир», — с ней знакомы практически все отечественные специалисты по
микроконтроллерной технике, начинавшие в 80х с незабвенного
КР580ИК80…

Предисловие

Предисловие

— 10 —

Первоначально я планировал просто написать цикл статей для журнала
«СХЕМОТЕХНИКА», полагая, что вряд ли стоит делать книгу из материала, в основе которого лежат тысячу раз описанные микроконтроллеры разработанного еще в конце 80х годов прошлого столетия семейства х51. Однако несколько десятков отзывов, которые я получил от читателей в ходе
публикации первых частей подготовленного материала, и отклики авторов,
имеющих опыт издания книг, убедили меня в том, что подобная книга может быть интересна широкому кругу читателей. Поэтому после публикации
в «СХЕМОТЕХНИКЕ» первых трех глав я решил, что этот материал должен появиться в виде книги, и готовил его далее уже с учетом принятого решения.
Название настоящей книги «слизано» из серии популярных в семидесятые годы книжек, посвященных радио и телевидению, и рассчитанных,
также как и настоящая, на начинающих. Любой, даже самый сложный вопрос, можно объяснить просто и доступно, и авторам тех книжек это вполне
удалось. Постарался это сделать и я.
Несмотря на большой опыт написания самых разнообразных статей,
задачу подготовки книги для начинающих я поставил перед собой впервые.
Тем более что книг аналогичного содержания, как я уже отмечал, у нас пока
еще нет. Поэтому мне было довольно сложно принимать решения, какой
материал может быть опущен при первом знакомстве с микроконтроллерами, а без какого не обойтись. Кроме того, по собственному опыту я знаю,
что если процесс освоения новых знаний идет успешно, то предлагаемого
материала никогда не бывает достаточно, и начинаешь искать дополнительную литературу. Поскольку вследствие необходимости упрощения материала основной части книги многие особенности рассматриваемых микроконтроллеров мне пришлось опустить, я счел необходимым снабдить
книгу большим количеством приложений, куда и перенес опущенное. Эти
приложения выпущены отдельно (Фрунзе А. В. Микроконтроллеры? Это
же просто! Т. 2. — М.: ООО «ИД СКИМЭН», 2002). Знакомство с приложениями не является необходимым при первом чтении книги, но, безусловно, окажется полезным для тех, кто решит идти дальше. При этом знакомиться с материалами приложений можно в любой последовательности, по
мере понимания приведенной там информации и появления интереса к
ней. Обратите также внимание и на список рекомендуемой литературы —
некоторые вопросы в этих книгах освещены гораздо полнее, чем у меня,
хотя в силу особенности стиля, которым они написаны, начинающим я рекомендовал бы знакомиться с этими книгами лишь после того, как они разберутся с существом рассматриваемой темы по материалам настоящей
книги.
Отдельно хочу сказать о программном обеспечении к настоящей книге.
Я в своей работе (пока еще) в основном использую старый DOS’овский ас
Доступ онлайн
180 ₽
В корзину