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

Программирование PIC-микроконтроллеров на PicBasic

Покупка
Новинка
Артикул: 084958.02.99
Доступ онлайн
349 ₽
В корзину
Книга представляет собой практическое руководство по программированию микроконтроллеров семейства PIC на языке PicBasic. В книге рассматриваются ключевые различия между стандартным компилятором PicBasic и компилятором PicBasic Pro; набор команд, архитектура и характеристики наиболее используемых PICмикроконтроллеров; обработка прерываний и исключительных ситуаций; организация связи между PICмикроконтроллерами и т. д. Приведены многочисленные примеры программ для реализации различных функций PICмикроконтроллеров с использованием языка PicBasic (исходные тексты всех примеров находятся на сайте издательства dmkpess.com). Отдельная глава посвящена ставшей весьма популярной в последнее время робототехнике. Книга будет полезна начинающим разработчикам, инженерам, студентам радиотехнических специальностей, а также широкому кругу читателей, интересую щихся электроникой и программированием.
Хелибайк, Ч. Программирование PIC-микроконтроллеров на PicBasic : практическое руководство / Ч. Хелибайк. - Москва : ДМК Пресс, 2017. - 328 с. - (Серия «Программируемые системы»). - ISBN 978-5-97060-500-4. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2155916 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Программирование

PICмикроконтроллеров

на PicBasic

EMBEDDED TECHNOLOGY TM

S E R I E S

Ч. Хелибайк

Programming 

PIC Microcontrollers 

using PicBasic

by Chuck Hellebuyck

An imprint of Elsevier Science

С Е Р И Я

ПРОГРАММИРУЕМЫЕ СИСТЕМЫ

Ч. Хелибайк

Программирование

PICмикроконтроллеров

на PicBasic

Перевод с английского

Москва

ДМК Пресс, Додэка, 2017

— 1 —

УДК 004.312
ББК 32.97304
Х36

Хелибайк Ч.
Х36
Программирование PICмикроконтроллеров на PicBasic. / Пер. 
с англ. — М.: ДМК Пресс, 2017. — 328 с.: ил. — (Серия «Программируемые системы»).

ISBN 9785970605004

Книга представляет собой практическое руководство по программированию
микроконтроллеров семейства PIC на языке PicBasic. В книге рассматриваются
ключевые различия между стандартным компилятором PicBasic и компилятором
PicBasic Pro; набор команд, архитектура и характеристики наиболее используемых PICмикроконтроллеров; обработка прерываний и исключительных ситуаций; организация связи между PICмикроконтроллерами и т. д.
Приведены многочисленные примеры программ для реализации различных
функций PICмикроконтроллеров с использованием языка PicBasic (исходные
тексты всех примеров  находятся на сайте издательства  dmkpess.com). Отдельная 
глава посвящена ставшей весьма популярной в последнее время робототехнике. 
Книга будет полезна начинающим разработчикам, инженерам, студентам радиотехнических специальностей, а также широкому кругу читателей, интересующихся электроникой и программированием.

УДК 004.312
ББК 32.97304

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

This edition of Programming PIC Microcontrollers with PICBASIC by Chuck Hellebuyck is
published by arrangement with Elsevier Inc. of 200 Wheeler Road, 6th Floor, Burlington,
MA01803, USA.

© Elsevier Science (USA)
ISBN 9785941201075 (Додэка) 
 

    Издание, ДМК Пресс, 2017
©

ISBN 9781589950011 (англ.)

ISBN 9785970605004 (ДМК Пресс)
© Перевод, макет, ДодэкаXXI

Оглавление
5

Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

Глава 1. PICмикроконтроллеры и язык PicBasic  . . . . . . . . . . . . . . . . . . . . . . . . . .11
Обзор PICмикроконтроллеров  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Программы для работы с PICмикроконтроллерами . . . . . . . . . . . . . . . . . . . . . . . 20
Язык ассемблера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Компиляторы PicBasic  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Глава 2. Компилятор PicBasic compiler (PBC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Как работает компилятор PBC  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Переменные, память и ввод/вывод. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Операторы программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Команды компилятора PBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Заключение по поводу системы команд  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Как пользоваться компилятором PBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Дополнительные параметры командной строки DOS. . . . . . . . . . . . . . . . . . . . . . . 59

Глава 3. Компилятор PicBasic Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Константы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Символы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Числа и символы кода ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Строковые константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Доступ к портам ввода/вывода  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Управление портами ввода/вывода  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Математические операции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Команды компилятора PBPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Заключение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Глава 4. Внутреннее устройство PICмикроконтроллеров . . . . . . . . . . . . . . . . . .131
Основные положения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Память программ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Вектор сброса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Память данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

ОГЛАВЛЕНИЕ

Оглавление

Регистр STATUS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Регистры портов ввода/вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Регистры аналогоцифрового преобразователя . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Регистры управления прерываниями и таймером . . . . . . . . . . . . . . . . . . . . . . . . . 140
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Глава 5. Простые устройства на PICмикроконтроллере . . . . . . . . . . . . . . . . . . .146
Проект № 1. Мигающий светодиод  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Проект № 2. Бегущий огонь. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Проект № 3. Управление 7сегментным светодиодным индикатором. . . . . . . . 158

Глава 6. Продолжаем осваивать PIC16F876. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Проект № 4. Обращение к порту ввода/вывода PORTA . . . . . . . . . . . . . . . . . . . . 166
Проект № 5. Аналогоцифровое преобразование  . . . . . . . . . . . . . . . . . . . . . . . . . 175
Проект № 6. Управление сервомотором  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Глава 7. Обмен информацией . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195
Проект № 7. Управление модулем ЖКИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Проект № 8. Связь через последовательный порт . . . . . . . . . . . . . . . . . . . . . . . . . 207
Проект № 9. Управление ЖКИ по двухпроводной линии . . . . . . . . . . . . . . . . . . 217

Глава 8. Память и звуки  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234
Проект № 10. Подключение внешней памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Проект № 11. Обращение к внутренней памяти  . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Проект № 12. Исполнение музыки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Глава 9. Робототехника. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Проект № 13. Роботплатформа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Проект № 14. Движение вдоль линии  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Проект № 15. Обнаружение препятствий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
И, в заключение…  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Приложение A. Полезные ссылки в сети Интернет . . . . . . . . . . . . . . . . . . . . . .316
Приложение B. Таблица кодов ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322

Посвящается
моей жене Эрин и моим детям —
Крису, Коннору и Бриттани,
без поддержки которых эта книга
не появилась бы на свет

Введение

Вот уже больше 25 лет полупроводниковая схемотехника — мое хобби
и моя профессия. Еще ребенком я начал собирать наборы, которые продавала фирма Radio Shack, и воспроизводил конструкции, описанные в радиолюбительских журналах и книгах. Когда появились первые микропроцессоры, они произвели на меня огромное впечатление. Я был слишком
юн, чтобы понять, как они работают, но догадывался, что они способны
заменить собой целый набор дискретных интегральных микросхем (ИС),
на которых до этого были построены все мои электронные проекты. Очень
быстро я обнаружил, что для работы с микропроцессорами требовалось гораздо больше инструментов и средств (в том числе и денежных), чем я мог
себе позволить. Не имея возможности создать домашнюю лабораторию по
разработке микропроцессорных устройств, я в то время не очень далеко
продвинулся по пути их изучения.
Продолжив обучение в электротехническом колледже, чтобы получить
степень бакалавра, я сделал полупроводниковую схемотехнику своей профессией. Я научился программировать и работать с лучшими средствами
разработки для микропроцессоров, но все еще не представлял себе, как
можно без больших финансовых затрат оборудовать домашнюю лабораторию по проектированию микропроцессорных устройств.
Затем я открыл для себя семейство PICмикроконтроллеров фирмы
Microchip. Они стоили дешево, их можно было легко купить у многочисленных поставщиков, и средства разработки для них тоже были недорогими. Я купил программатор PIC programmer и снова вернулся к своему радиолюбительскому увлечению. Программируя на ассемблере от фирмы
Microchip, я разработал несколько интересных устройств. Но, поскольку у
меня практически не было свободного времени, мне хотелось найти более
простой язык программирования, такой как BASIC.
Когда фирма Parallax выпустила в продажу миниатюрный компьютерный PICориентированный модуль под названием «BASIC Stamp», программы для которого следовало писать на одной из разновидностей
BASIC’а, я купил себе такой и начал с ним экспериментировать. ПользоВведение

Введение 9

ваться этим устройством оказалось очень легко, что доставило мне массу
удовольствия. Но ограниченный объем памяти и довольно высокая цена
не позволили мне использовать его в качестве постоянной основы для моих разработок. Тем не менее, потратив уйму времени на придумывание
разных безделушек, я созрел для того, чтобы воплотить пару своих идей в
устройства, которые можно было бы продавать.
Я подумывал о том, чтобы написать свой собственный компилятор
BASIC для компьютерного модуля от Parallax. Это позволило бы мне записывать программы непосредственно в PICмикроконтроллер. И тут я увидел рекламу нового продукта фирмы microEngenering Labs под названием
«PicBasic compiler» (компилятор языка PicBasic). Он мог преобразовывать
программы, написанные для модуля от Parallax, в формат, который используется для прошивки PICмикроконтроллеров. В нем применялись те
же самые команды, что и в модуле от Parallax, и еще несколько новых. Я
немедленно приобрел его и начал программировать на PicBasic’е.
Оказалось, что это простой, но очень мощный компилятор. В отличие от
программирования на ассемблере, он позволял разрабатывать сложные проекты всего за несколько дней, а не недель или месяцев, как мне приходилось
делать раньше. Я разработал несколько коммерческих продуктов и стал продавать их через свой сайт www.elproducts.com. Я также решил написать о
PICмикроконтроллерах фирмы Microchip статью для журнала Nuts and
Volts, которая, к моей радости, была напечатана в июле 1998 года. После этого мне предложили написать книгу о PICмикроконтроллерах. Я никогда не
считал себя писателем, но увидел в этом предложении возможность поделиться своими знаниями о PICмикроконтроллерах и PicBasic’е с людьми,
которым все эти вещи доставляют такое же наслаждение, как и мне.
По тем или иным обстоятельствам, написание книги заняло гораздо
больше времени, чем предполагалось. Но нет худа без добра — тем временем, идея программировать PICмикроконтроллеры на BASIC’е приобрела
популярность. Повсеместно стали появляться новые компиляторы от новых производителей, новые аксессуары и устройства для прошивки микросхем. PICмикроконтроллеры и PicBasic становились все совершеннее.
Я накапливал новые знания и опыт, и старался вместить как можно
больше в свою книгу, но так, чтобы она все же оставалась книгой для начинающих. Одним из результатов приобретенного мной опыта стало решение изменить первоначальную структуру книги и вставить в нее главу по
робототехнике. За то время, что я писал книгу, робототехника стала очень
популярной. Подобно мне, многие люди покупают недорогие, но при этом
достаточно мощные средства отладки микроконтроллерных устройств,
чтобы разрабатывать роботов в своих домашних лабораториях.
Использование BASIC’а для программирования микроконтроллеров
стали называть созданием встроенных приложений на языке BASIC. Мой

Введение

почтовый ящик завален предложениями работы для программистов со
знанием PicBasic’а. 
В наше время все труднее найти людей с опытом программирования на
ассемблере, потому что многие разработчики электронного оборудования
перешли на язык Cи. Я считаю, что вскоре пройдет волна перехода на
BASIC для встроенных приложений как основной язык программирования для массовой разработки небольших программноаппаратных модулей, поскольку писать на нем проще, чем на Cи, и он почти столь же эффективен1).
Я надеюсь, что эта книга станет для вас источником полезной информации, заставит задуматься и, разумеется, доставит вам удовольствие. Все
то, о чем в ней написано, сам я узнавал нелегким путем — путем проб и
ошибок. 
Компания Microchip выпускает множество отличных компонентов, а а
использование компилятора PicBasic compiler позволит даже начинающему программисту запросто разрабатывать встроенные приложения.
Я рекомендую читателям посетить мой интернетсайт, где представлено много различной информации о последних разработках, сделанных с
помощью BASIC’а для встроенных приложений. Возникшие вопросы
можно решить, связавшись со мной по электронной почте.
Чак Хелибайк,
фирма Electronic Products,
www.elproducts.com
chuck@elproducts.com

1) Считается, что разработка программы на языке высокого уровня требует на порядок меньше времени, чем на ассемблере, но объектный код получается в несколько раз
больше по объему и работает он в несколько раз медленнее. Это правило, однако, не
выполняется для тех микроконтроллеров, о которых в технических описаниях сказано,
что их система команд оптимизирована для работы с языками высокого уровня. В этом
случае объектный код получается практически таким же эффективным, как если бы
изначально создавался на ассемблере. К таким микроконтроллерам относятся, например, микроконтроллеры семейства AVR от фирмы Atmel или 16битные микроконтроллеры семейства XA от фирмы Philips. (Прим. пер.)

Доступ онлайн
349 ₽
В корзину