Выбрать главу
Вопросы для самопроверки

3.1. Можете ли вы предложить вариант инкрементирования и декрементирования содержимого рабочего регистра, показанного на Рис. 3.4, с использованием трех команд, рассмотренных в этой главе?

3.2. Разработайте программу, которая позволит роботу с микроконтроллерным управлением из Примера 3.2 наполнить стакан водой из крана.

3.3 Компьютер BASIC, структура которого изображена на Рис. 3.4, может одновременно осуществлять выборку одной команды и исполнять другую команду. Объясните, за счет чего он может выполнять эти операции параллельно.

3.4 Составьте перечень задач, в соответствии с которым робот сможет пройти к ближайшему банкомату, снять со счета заданную сумму наличных, запросить баланс и вернуться на исходную позицию. Не забудьте про обработку запроса на печать баланса, а также продумайте действия робота при отсутствии на счете достаточной суммы денег!

3.5. Для подключения коробки передач к микроконтроллерной системе, показанной на Рис. 3.8, требуется пять выводов микросхемы. Многие микроконтроллеры выпускаются в корпусах с малым числом выводов (см., например, Рис. 10.2 на стр. 304). Подумайте, как можно уменьшить требуемое число выводов, а также будет ли ваше решение экономически оправданным? Подсказка: взгляните на Рис. 2.6 (стр. 36).

3.6. Подумайте, каким образом можно уменьшить на единицу количество выходов микроконтроллера, требуемых для управления дисплеями обоих одометров, и насколько это будет удобно?

Часть II

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

В 1-й части мы познакомились с понятием гарвардской архитектуры и разработали собственный примитивный компьютер BASIC. Хотя этот компьютер существует только в нашем воображении, он был разработан с оглядкой на реальные микроконтроллеры, являющиеся предметом обсуждения данной книги.

Вторая часть книги посвящена главным образом программным аспектам микроконтроллеров, выбранных нами для изучения, — микроконтроллеров PIC® среднего уровня компании Microchip. В этой части мы рассмотрим следующие вопросы:

• Внутренняя структура микроконтроллеров PIC среднего уровня.

• Набор команд.

• Способы адресации команд.

• Разработка программ с использованием интегрированной среды разработки MPLAB®.

• Трансляция с языка ассемблера.

• Подпрограммы и модульный принцип разработки программ.

• Обработка прерываний.

• Язык высокого уровня Си и компиляция написанных на нем программ.

Глава 4

Микроконтроллер PIC16F84

В том же году, когда Microchip приобрела у компании General Instrument интеллектуальные права на микросхему периферийного интерфейсного контроллера (PIC), было разработано первое семейство 8-битных микроконтроллеров с гарвардской архитектурой. Это начальное (или базовое) семейство PIC16C5XX, как и более современные семейства того же уровня PIC10FXXX и 12СХХХ, имело 33 команды, 12-битную память программ, параллельные порты ввода/вывода и один 8-битный таймер/счетчик. Как и во всех последующих семействах микроконтроллеров PIC, исполнительный блок обрабатывал данные побайтно, что соответствует 8-битной организации памяти данных.

К 1992 году на свет появилось среднее семейство PIC16CXXX. Микроконтроллеры этого семейства имели уже 14-битную память программ, что облегчало доступ к памяти данных больших объемов. По сравнению с младшими семействами появились две новые команды. Был значительно расширен базовый набор периферии — добавились такие устройства, как 16-битные таймеры, модуль АЦП, последовательные порты. Также была добавлена поддержка прерываний.

В оставшейся части книги, за исключением главы 16, мы будем рассматривать микроконтроллеры именно этого семейства. И только в 16-й главе мы коснемся старшего семейства PIC18XXXX, появившегося на рынке в 1999 году. Микроконтроллеры данного семейства получили 16-битное ядро и 42 дополнительные команды, большинство из которых направлено на поддержку компиляторов с языков высокого уровня.