Микроконтроллеры? Это же просто! Том 1
Том 1
Покупка
Тематика:
Микроэлектроника. Наноэлектроника
Издательство:
ДМК Пресс
Автор:
Фрунзе Александр Виленович
Год издания: 2023
Кол-во страниц: 312
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Специалитет
ISBN: 978-5-89818-590-9
Артикул: 095425.02.99
Первая в отечественной литературе книга, написанная на доступном вплоть до начинающих уровне, охватывающая абсолютно все аспекты использования микроконтроллеров. На примере ставшего «де-факто» промышленным стандартом микроконтроллерного семейства х51 рассмотрены внутреннее устройство микроконтроллера, его система команд, схемы его сопряжения с периферийными устройствами и программы, осуществляющие это сопряжение, техника написания и трансляции ассемблера программ, анализ сообщений компилятора об ошибках, техника занесения программы в микроконтроллер и последующей отладки занесенных программ. Рассмотрен ряд полезных программ (многобайтного умножения, деления, преобразования из одного представления в другое и т. д.). Отдельно даны примеры полностью законченных разработок. Приведено большое количество обзорных и справочных материалов, охватывающих практически все микроконтроллеры, программно и аппаратно совместимые с семейством х51, существующие на момент выпуска книги.
Книга адресована специалистам в области микроконтроллерной техники, студентам, ее изучающим, а также тем, кто желает самостоятельно разобраться в этой области.
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- ДМК. Пресс. Электроника, радиотехника и системы связи
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Интермедиатор. Электроника, радиотехника и системы связи (сводная)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 11.03.01: Радиотехника
- 11.03.04: Электроника и наноэлектроника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Микроконтроллеры? Это же просто! Том 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’овский ас