9.2. В рамках реализации некоторой электронной игры необходимо написать функцию, возвращающую следующее псевдослучайное число из 127 чисел, сгенерированных генератором, показанным на Рис. 6.12 (стр. 206). В функцию передается текущее, а возвращается следующее число последовательности. Предполагается, что передаваемое в функцию значение отлично от нуля. Как можно доработать функцию, чтобы она выдавала через порт В всю последовательность случайных чисел, начиная с заданного числа?
9.3. Цифровой термометр на базе микроконтроллера PIC показывает температуру от 0 до 100 °C. Чтобы это устройство можно было продавать в США, в термометре следует предусмотреть возможность отображения значения температуры в градусах по шкале Фаренгейта. Напишите для этого термометра функцию, выполняющую перевод целого значения из шкалы Цельсия в шкалу Фаренгейта. Соответственно, передаваемое и возвращаемое значения должны иметь тип unsigned int. Зависимость между шкалами выражается следующим образом:
F = (C x 9)/5 + 32.
Во избежание ошибок переполнения следует использовать 16-битную арифметику.
9.4. Индикатор холодной погоды на приборной панели автомобиля представляет собой три светодиода, подключенных к трем младшим линиям порта А. Ко 2-й линии подключен красный СИД, который включается, если температура снаружи ниже 34°F. К 1-й линии подключен желтый СИД (Температура ниже 40°F), а к 0-й линии подключен зеленый СИД. Предположим, что соответствующие линии порта уже сконфигурированы как выходы и что СИД включается при подаче на вывод НИЗКОГО уровня. Напишите функцию для управления этими светодиодами, в которую передается значение температуры F.
Часть III
ОКРУЖАЮЩИЙ МИР
Не считая краткого обсуждения гарвардской архитектуры, имевшего место в 3-й главе книги, мы до сих пор ограничивались рассмотрением внутренней структуры микроконтроллеров PIC среднего уровня и их программного обеспечения. Только вскользь упоминались параллельные порты ввода/вывода. Последняя же часть книги посвящена взаимодействию ядра микроконтроллера со средой, физически находящейся за пределами корпуса микроконтроллера. То есть в данной части мы изучим вопросы использования портов ввода/вывода и встроенных периферийных устройств микроконтроллера. В самом конце мы разберем учебный пример создания законченного автономного встраиваемого контроллера.
На Рис. 4.1, приведенном на стр. 89, изображена внутренняя структура и цоколевка микроконтроллера PIC16F84. У этой 18-выводной модели имеется два параллельных порта ввода/вывода, причем 4-й вывод порта А совмещен со счетным входом 8-битного таймера, а 0-й вывод порта В — с входом внешнего прерывания. Помимо этого, в составе микроконтроллера имеется EEPROM-память данных размером 64 байта и сторожевой таймер.
Микроконтроллер PIC16F84 был одним из первых представителей семейства среднего уровня, в которых наряду с параллельными портами и таймерами, унаследованными от более старого базового семейства, имелась поддержка прерываний и модуль EEPROM-памяти. По мере появления новых моделей расширялся и набор периферийных устройств. В этой части книги на примере 8-выводных моделей PIC12F629/75, 18-выводных моделей PIC16F627/28/48 и 28/40-выводных моделей PIC16F873/74/76/77 мы рассмотрим наиболее часто используемые периферийные устройства. Вообще говоря, функционирование любого модуля практически не зависит от модели устройства, в которой он реализован, однако модули в более новых моделях могут иметь расширенные функциональные возможности. По мере прочтения, вы:
• Изучите сопутствующие вопросы, такие как выбор источника питания, выбор источника тактового сигнала, управление энергопотреблением микроконтроллера и конфигурирование устройства.
• Познакомитесь с параллельным и последовательным вводом/выводом цифровых данных.
• Разберетесь с подсистемами счетного и сторожевого таймеров.
• Узнаете, каким образом микроконтроллер обрабатывает аналоговые сигналы.
• Самостоятельно разработаете встраиваемый таймер со звуковой индикацией.
• Узнаете, каким образом можно протестировать и отладить созданную систему.
Глава 10
Реальное окружение
До этого момента мы главным образом изучали взаимодействие программы с внутренними регистрами процессора и памятью данных. Но прежде чем перейти к изучению встроенных периферийных устройств микроконтроллера, посредством которых он может отслеживать состояние и управлять окружающей его средой, т. е. реальным миром вне его выводов, нам необходимо рассмотреть требования, предъявляемые к источнику питания, а также вопросы тактирования и сброса микроконтроллеров PIC.
Прочитав эту главу, вы:
• Ознакомитесь с рекомендуемыми величинами напряжения питания, а также допустимыми уровнями входных и выходных напряжений.