Основы вычислительной и микропроцессорной техники. Микропроцессорная техника

Тема 3

Рекомедуемая литература

1. Хофманн М. Микромикроконтроллеры для начинающих: Пер. с нем. – СПб.: БХВ – Петербург, 2010. – 304 с.

2. Голубцов М.С. Микромикроконтроллеры AVR: от простого к сложному. – М.: СОЛОН-Пресс, 2003. – 288 с.

3. Схемотехника электронных систем. Микропроцессоры и микромикроконтроллеры / В.И. Бойко, А.Н. Гуржий, В.Я. Жуйков, А.А. Зори, В.М. Спивак, Т.А. Терещенко, Ю.С. Петергеря. – СПб.: БХВ – Петербург, 2004. – 464 с.

Основные понятия и определения микропроцессорной техники

Микропроцессорная система (микроконтроллер, компьютер) представляют собой совокупность аппаратных средств (АС) и программного обеспечения (ПО), которые тесно взаимосвязаны и практически бесполезны друг без друга.

Микропроцессорная система (МП система) - информационная или управляющая система, построенная с применением микропроцессорных средств.

Микропроцессор (МП - CPU) – устройство обработки данных (информации) - выполняет арифметические и логические операции и осуществляет программное управление процессом обработки.

Микромикроконтроллер (МК - МС) – микропроцессорное устройство, в основном, с небольшими вычислительными ресурсами и упрощенной системой команд, ориентированный не на производство вычислений, а на выполнение логического управления машинами или, технологическими процессами.

Адаптер – устройство для согласования физических параметров (входных и выходных сигналов) устройств с целью их сопряжения.

Интерфейс – полная совокупность физических и логических соглашений о входных и выходных сигналах устройств с целью их сопряжения.

Совокупность аппаратных, программных и конструктивных средств, обеспечивающих взаимодействие функциональных устройств ЭВМ, называется внутренним системным интерфейсом (ШУ, ШД, ША).

Структура микропроцессора

Внешний вид микропроцессора приведен на рисунке 1.

Рисунок 1 - Внешний вид микропроцессора

Микропроцессор (МП) состоит из следующих структурных блоков (см. рисунок 1):

─ внутренней шины;

─ регистров общего назначения;

─ арифметико-логического устройства (АЛУ);

─ буфера шины адреса;

─ буфера шины данных;

─ устройства управления и синхронизации;

─ регистра команд.

(Регистр- последовательное логическое устройство, используемое для хранения n-разрядных двоичных чисел и выполнения преобразований над ними. Регистр представляет собой упорядоченную последовательность триггеров, число которых соответствует числу разрядов в слове.

Для связи между собой структурных блоков микропроцессора предназначена внутренняя шина.

Регистры общего назначения (РОН) содержат регистр адреса; программный счетчик; указатель стека; оперативные парные регистры: W Z; D C. D E, H L,мультиплексор.

В состав АЛУ входят буфер и аккумулятор для промежуточного хранения исходной цифровой информации; арифметико-логическое устройство; регистр признаков.

Регистр адреса служит для промежуточного хранения адреса обращения микропроцессора к конкретному структурному блоку системы. Этот адрес в регистр заносится перед посылкой его в шину адреса.

Рисунок 1 – Структурная схема микропроцессора

Программный счетчик служит для формирования адреса обращения к ячейкам памяти, в которых хранятся команды программы управления микропроцессорной системы. При выполнении очередной команды алгоритма управления объектом содержание счетчика увеличивается автоматически на единицу, если этот алгоритм линейный.

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

Кроме того, для хранения оперативной информации служат парные оперативные регистры общего назначения W и Z, B и C, D и E, H и L, обращение к которым осуществляется через мультиплексор. Часть этих регистров предназначена для хранения адресной части команд, в то время как их исполнительная часть хранится в регистре команд.

Структура микроконтроллера

На рисунке 1 приведена упрощённая типичная структура микроконтроллер (МК) предназначенного для обработки данных или управления некоторой машиной или технологическим процессом.

В этой структуре центральное место занимает микропроцессор (МП), который выполняет арифметические и логические операции над данными, осуществляет программное управление процессом обработки информации, организует взаимодействие всех устройств входящих в МК.

Работа МП происходит под воздействием сигналов (тактовых прямоугольных импульсов – ГТИ) схемы синхронизации и начальной установки.

Приведенная структура МК, отражает магистрально-модульный принцип организации микропроцессорного устройства. Отдельные блоки являются унифицированными функционально законченными модулями со своими схемами управления.

Обмен информацией между модулями микроконтроллера осуществляется посредством коллективных шин (магистралей – ША, ШД, ШУ) к которым имеют доступ модули микроконтроллера, то есть обмен информацией производится путём разделения использования во времени, модулями системы коллективных шин. Магистральный принцип сопряжения модулей предполагает наличие унифицированных аппаратных, программных и конструктивных средств, обеспечивающих установление связей и взаимодействие всех модулей микроконтроллера, и называется внутренним системным интерфейсом.

Для микроконтроллера характерна трех шинная структура, содержащая шину адреса (ША), шину данных (ШД) и шину управления (ШУ). Типовая структура микроконтроллера, предполагает наличие общего сопряжения (интерфейса) для модулей памяти - постоянных и оперативных запоминающих устройств (ПЗУ и ОЗУ) и периферийных устройств ввода/вывода (УВВ) и внешнего ОЗУ.

Постоянное запоминающее устройство (ПЗУ) служит для хранения отлаженного алгоритма управления объектом или для хранения мало меняющейся цифровой информации, используемой в управлении объектом. Микропроцессор может только считывать информацию из ПЗУ.

Оперативное запоминающее устройство (ОЗУ) служит для хранения любой информации, используемой в управлении объектом, в том числе и для хранения программ управления объектом. ОЗУ имеет двустороннюю связь с микропроцессором.

В качестве внешних (периферийных) устройств для микроконтроллера являются: органы управления, клавиатура, дисплей, органы индикации, внешняя память, различные датчики, исполнительные устройства и. т. д.

Периферийные устройства подключаются к шинам интерфейса через интерфейсные БИС – параллельный программируемый адаптер (ППА – PPI), микроконтроллер клавиатуры и дисплея (ККД), программируемый универсальный синхронно-асинхронный приёмник-передатчик (УСАПП – USART)- последовательный интерфейс и другие аппаратные средства.

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

Программируемый последовательный интерфейс служит для передачи в последовательном коде цифровых сигналов к объектам управления или к другим микропроцессорным системам, расположенным на значительном расстоянии от микропроцессора. Двусторонняя (дуплексная) передача сигнала по линии последовательной связи осуществляется по некоторым правилам, которые называют протоколом передачи данных

Внутренний системный интерфейс



Шина адреса - ША

Шина данных ШД

Шина управления - ШУ

Интерфейс памяти Устройства ввода-вывода - УВВ

Интерфейс периферийного оборудования

Рисунок 1- Структурная схема микроконтроллера

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

Принцип работы микроконтроллера при автоматизации технологических машин или процессов состоит в выполнение следующего

цикла операций:

1. Сбор сигналов с датчиков;

2. Обработка сигналов согласно прикладному алгоритму управления;

3. Выдача управляющих воздействий на исполнительные устройства.

В нормальном режиме работы микроконтроллер непрерывно выполняет

этот цикл с частотой от 50 раз в секунду. Время, затрачиваемое контроллером на выполнение полного цикла, часто называют временем (или периодом) сканирования; в большинстве современных ПЛК сканирование может настраиваться пользователем в диапазоне от 20 до 30000 миллисекунд. Для быстрых технологических процессов, где критична скорость реакции системы и требуется оперативное регулирование, время сканирования может составлять 20 мс, однако для большинства непрерывных процессов период 100 мс считается вполне приемлемым.

В отличие от персонального компьютера он рассчитан на решение ограниченного круга задач и должен обладать следующими основными свойствами:

1) работа в режиме реального времени, т.е. обеспечение высокой

реактивности (быстродействия) на запросы обслуживания со стороны объекта управления (обеспечение управления в темпе протекания технологического процесса);

2) повышенные требования к надежности функционирования:

– автоматический перезапуск в случае «зависания» программы;

– конструкция, приспособленная для работы в подземных условиях шахт;

– минимальное потребление энергии и рассеяние тепла в условиях

­ ограниченной мощности источника питания и отсутствия элементов

принудительной вентиляции и охлаждения;

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

Программное обеспечение

Основные требования к программному обеспечению для PLC:

­ автономность;

­ поддержка процессов сбора, анализа информации и управления, а также локальных баз данных в реальном времени;

­ возможность дистанционного управления со стороны диспетчерского пункта (уровень SCADA-систем);

­ сетевая поддержка.

Программное обеспечение включает следующие основные компоненты:

­ тестовое программное обеспечение;

­ базовое программное обеспечение;

­ прикладное технологическое программное обеспечение.

Тестовое программное обеспечение. Выполняет тестирование (отладку) отдельных PLC и системы в целом (включая тестирование и диагностику различных конфигураций) и содержит следующие компоненты:

­ программы инициализации и конфигурирования, а также начальные тесты для PLC и сетевых адаптеров (внутреннее программное обеспечение, расположенное в ПЗУ);

­ программы для тестирования PLC через линию связи с компьютером высшего уровня или специализированной наладочной аппаратурой;

­ программы для тестирования, наладки и сбора статистики локальной сети распределенной системы;

­ комплексное тестирование распределенной системы в целом;

­ специализированное тестовое программное обеспечение для наладочных пультов, панелей, стендов, эмуляторов и т.д.

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

Базовое программное обеспечение . В его состав входят:

­ операционные системы реального времени, управляющие выполнением прикладной технологической программы и устройствами PLC;

­ сетевые программные средства, обеспечивающие информационный обмен между отдельными узлами и возможность дистанционного доступа и управления в распределенной системе.

Прикладное технологическое программное обеспечение . Прикладное технологическое программное обеспечение – это машинно-ориентированые языки (ассемблеры), используемые для разработки прикладных программ, Языки ассемблера представлены в виде перечня команд конкретного микропроцессора. Команды ассемблера включают в себя обычно арифметические и логические операции, средства организации циклов подключения и отключения портов, средства управления прерываниями (запрет/разрешение, установка приоритетов), средства работы с интервалами времени и обработки событий, а также средства для динамической загрузки и запуска программ. Элементами языка являются имена портов ввода-вывода и отдельных их разрядов, имена счетчиков, таймеров и контактов, флаги, а также параметры технологического процесса. Преимуществом языков ассемблера является компактность итогового машинного кода, высокое быстродействие. Недостатком – высокая трудоемкость разработки, большой объем текста, отсутствие сложных математических функций (тригонометрических, логарифмических и т.д.). Для реализации сложных алгебраических вычислений необходимо создавать громоздкие подпрограммы.

Для разработки технологических программ используются следующие средства: редакторы, системы программирования (поддержка тассемблеров и языков высокого уровня, а также языков технологического программирования), средства отладки и тестирования, а также инструментарий для функционально-ориентированных языков программирования, позволяющих с минимальными трудозатратами осуществлять проектирование системы «под ключ».

Современные средства автоматизации проектирования технологических программ позволяют программировать PLC с использованием библиотеки стандартных программных модулей – «алгоблоков»,реализующих типовые алгоритмы управления АСУТП: компараторы, формирователи широтно-импусных сигналов (ШИМ) и др.

Согласно приведенному определению микропроцессорная система -- это собранная в единое целое совокупность взаимодействующих БИС микро-процессорного комплекта (иногда дополненная БИС из других комплектов)организованная в систему, т. е. вычислительная или управляющая система с микропроцессором в качестве узла обработки информации. Общая структурная схема. Типовая структура микропроцессорной системы изображена на рис. 3. Кратко охарактеризуем узлы-модули, входящие в ее состав, за исключением уже описанного микропроцессора.

Генератор тактовых импульсов -- источник последовательности прямоугольных импульсов, с помощью которых осуществляется управление событиями во времени. Он задает цикл команды -- интервал времени, необходимый для считывания выборки команды из памяти и ее исполнения. Цикл команды состоит из определенной последовательности элементарных действий, называемых состояниями (тактами). Для некоторых микропроцессоров не требуется внешний генератор тактовых импульсов: он содержится непосредственно в схеме однокристального микропроцессора.

Основная память системы (внешняя по отношению к микропроцессору) состоит из ПЗУ и ОЗУ.

Постоянное запоминающее устройство (ПЗУ) -- это устройство, в котором хранится программа (и при необходимости совокупность констант). Содержимое ПЗУ не может быть стерто. Оно используется как память программы, составленной заранее изготовителем в соответствии с требованиями ее пользователей. В таких случаях говорят, что программа жестко «зашита» в запоминающем устройстве. Чтобы осуществить иную программу, необходимо применить другое ПЗУ или его часть. Из ПЗУ можно только выбирать хранимые там слова, но нельзя вносить новые, стирать и заменять записанные слова другими. Оно подобно напечатанной таблице выигрышей по облигациям: можно лишь считывать имеющиеся там числа, но заменять их или вносить новые невозможно.

Помимо ПЗУ используются также ППЗУ и РППЗУ.

Программируемое постоянное запоминающее устройство (ППЗУ) отличается от ПЗУ тем, что пользователь может самостоятельно запрограммировать ПЗУ (ввести в него программу) с помощью специального устройства -- программатора, но только один раз (после введения программы содержимое памяти уже нельзя изменить).

Репрограммируемое постоянное запоминающее устройство (РППЗУ), называемое также стираемым ПЗУ, имеет такую особенность: хранимая информация может стираться несколько раз (при этом она разрушается). Иначе говоря, РППЗУ допускает перепрограммирование, осуществляемое с помощью программатора. Это облегчает исправление обнаруженных ошибок и позволяет изменять содержимое памяти.

Оперативное запоминающее устройство (ОЗУ), которое иначе называют запоминающим устройством с произвольной выборкой (ЗУПВ) или произвольным доступом (ЗУПД), служит памятью данных, подлежащих обработке, и результатов вычислений, а в некоторых микропроцессорных системах -- также программ, которые часто меняются. Его характерное свойство заключается в том, что время, требуемое для доступа к любой из ячеек памяти, не зависит от адреса этой ячейки. ОЗУ допускает как запись, так и считывание слов. По отношению к этому запоминающему устройству приемлема аналогия с классной доской, на которой мелом записаны числа: их можно многократно считывать, не разрушая, а при необходимости -- стереть число и записать на освободившемся месте новое. Следует иметь в виду, что информация, содержащаяся в ОЗУ, исчезает, стирается, если прерывается напряжение питания.

Интерфейсом называют устройство сопряжения. Это упрощенное определение. В более строгом толковании под интерфейсом понимают совокупность электрических, механических и программных средств, позволяющих соединять модули системы между собой и с периферийными устройствами. Его составными частями служат аппаратные средства для обмена данными между узлами и программные средства -- протокол, описывающий процедуру взаимодействия модулей при обмене данными. Интерфейс микропроцессорной системы относится к машинным интерфейсам. В микропроцессорной системе применяют специальные интерфейсные БИС для сопряжения периферийных устройств с системой (на рис. 2 они показаны в виде модулей интерфейса ввода и интерфейса вывода). Для этих БИС характерна универсальность, осуществляемая путем программного изменения выполняемых ими функций.

Более простые задачи решают порты ввода-вывода -- схемы, спроектированные (запрограммированные) для обмена данными с конкретными периферийными устройствами: приема данных с клавиатуры или устройства считывания, передачи их дисплею, телетайпу и т. п.

Порт -- это схема средней степени интеграции, содержащая адресуемый многорежимный буферный регистр ввода-вывода (МБР) с выходными тристабильными схемами (о них идет речь ниже при описании схемы ОЗУ), логикой управления и разъемом для подключения устройств ввода-вывода. Возможности перепрограммирования порта ограничены.

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

Для многих микропроцессорных систем и микро-ЭВМ характерно несоответствие между относительно высокой скоростью обработки информации внутри микропроцессора и низкой скоростью обмена данными между модулями через интерфейс.

Устройство ввода осуществляет введение в систему данных, подлежащих обработке, и команд. Устройство вывода преобразует выходные данные (результат обработки информации) в форму, удобную для восприятия пользователем или хранения. Устройствами ввода-вывода служат блоки считывания информации с перфоленты и магнитной ленты (или записи на них), кассетные магнитофоны, гибкие диски, клавиатуры, дисплеи, аналого-цифровые и цифро-аналоговые преобразователи, графопостроители, телетайпы и т.п.

Далее предметом нашего внимания будут шины системы. Шиной называют группу линий передачи, используемых для выполнения определенной функции (по одной линии на каждый передаваемый бит). Особенность структуры микропроцессорной системы заключается в магистральной организации связей между входящими в ее состав модулями. Она осуществляется с помощью трех шин. По ним передаются вся информация и сигналы, необходимые для работы системы. Эти шины соединяют микропроцессор с внешней памятью (ОЗУ, ПЗУ) и интерфейсами ввода-вывода, в результате чего создается возможность обмена данными между микропроцессором и другими модулями системы, а также передачи управляющих сигналов.

Рассмотрим назначение и функции каждой из трех шин (на примере 8-разрядного микропроцессора), показанных на рис. 3.

Шина данных. Это двунаправленная шина: по ней данные могут направляться либо в микропроцессор, либо из него (на рис. 3 такая особенность шины данных подчеркнута стрелкой с двумя остриями, одно из которых обращено к микропроцессору, а другое -- от него). При этом необходимо еще раз подчеркнуть, что невозможна одновременная передача данных в обоих направлениях. Эти процедуры разнесены во времени в результате применения временного мультиплексирования.

Шина адреса (или адресная шина). По ней информация передается только в одном направлении -- от микропроцессора к модулям памяти или ввода-вывода.

Шина управления. Служит для передачи сигналов, обусловливающих взаимодействие, синхронизацию работы всех модулей системы и внутренних узлов микропроцессора. Одна часть линий шины управления служит для передачи сигналов, выходящих из микропроцессора (на рис. 3 это условно показано стрелкой, острие которой направлено вправо), а по другой части линий передаются сигналы к микропроцессору (на рис. 3 -- стрелка с острием, направленным влево).

Достоинством шинной структуры является возможность подключения к микропроцессорной системе новых модулей, например нескольких блоков ОЗУ и ПЗУ для получения требуемой емкости памяти.

6.3.3. Программирование учебных задач

Начнем программирование учебных задач с написания программы, которая считывает состояние кнопки SB1 и выводит его на светодиодный индикатор VD2 так, что не нажатому состоянию кнопки (высокому уровню сигнала на входе RA4 ) соответствует светящееся состояние светодиода, и наоборот.

Листинг 12.2. (html , txt )

Листинг 12.2. (html , txt )

;основная программа

LOOP

CALL SB1_VD2 ;вызов подпрограммы SB1_VD2

;повторения процесса

GET_RA ;подпрограмма чтения состояния

;порта A

SB1_VD2 ;подпрограмма вывода на светодиод

;VD2 состояния кнопки SB1 (разряда 4

;регистра TEMPA)

GOTO P0 ;перейти на P0

;TEMPA,4=0 (кнопка нажата)

GOTO P1 ;перейти на P1

BCF VD2 ;погасить светодиод

RETURN

Листинг 12.2.

Основная программа содержит замкнутый цикл LOOP – GOTO LOOP , необходимый для периодического повторения цикла контроля состояния кнопки и вывода его на индикатор. Команда CLRWDT исключает влияние возможного сброса по переполнению сторожевого таймера на работу программы. Две следующие команды осуществляют вызов подпрограмм GET_RA и SB1_VD2 . Первая из них (GET_RA ) вначале считывает текущее состояние порта A , которое помещается в рабочий регистр W . Поскольку рабочий регистр может потребоваться при исполнении других команд, его состояние записывается в регистр TEMPA , используемый здесь для временного хранения состояния порта A . Таким образом, после возврата из подпрограммы GET_RA в разряде 4 регистра TEMPA содержится информация о состоянии кнопки SB1 : "1" – не нажата, "0" – нажата.

Подпрограмма SB1_VD2 TEMPA и, в зависимости от него, зажигает или гасит светодиод. В системе команд МК PIC16F84 нет команд условного перехода, поэтому для организации проверки того или иного условия используются команды, позволяющие пропустить выполнение следующей команды программы, в зависимости от состояния определенного бита в заданном регистре (BTFSS и BTFSC ). В частности, команда BTFSS TEMP,4 пропускает исполнение команды GOTO P0 , если TEMP,4 = 1 (кнопка не нажата). Тем самым реализуется команда BSF VD2 , которая зажигает светодиод VD2 . Затем анализируется условие TEMP,4 = 0 (кнопка нажата) и, если оно имеет место, светодиод гасится.

Возможна более простая реализация заданного алгоритма, поскольку нажатое состояние кнопки исключает не нажатое (и наоборот), но представленный вариант более нагляден.

Рассмотрим более сложный вариант программы, предусматривающий зажигание светодиода VD2 только при следующем состоянии тумблеров и кнопок макета: SA1 = 1 , SA2 = 1 , SB1 = 1 и SB2 = 0 .

Листинг 12.3. (html , txt )

Листинг 12.3. (html , txt )

;основная программа

LOOP

CLRWDT ;сброс сторожевого таймера

CALL GET_RA ; вызов подпрограммы GET_RA

CALL GET_RB ; вызов подпрограммы GET_RB

CALL ZAG_1110 ; вызов подпрограммы ZAG_1110

GOTO LOOP ;переход к метке LOOP для

;повторения процесса

GET_RB ;подпрограмма чтения состояния

;порта B

MOVF PORTB,W ;чтение состояния порта B в W

MOVWF TEMPB ;пересылка W в TEMPB

RETURN

ZAG_1110 ;зажигает светодиод VD2 только при

;следующем состоянии тумблеров и

;кнопок макета:

;SA1 = SA2 = SB1 = 1 и SB2 = 0

BTFSS TEMPA,2 ;пропустить команду, если

GOTO P0 ;TEMPA,2=1

BTFSS TEMPA,3 ;пропустить команду, если

GOTO P0 ;TEMPA,3=1

BTFSS TEMPA,4 ;пропустить команду, если

GOTO P0 ;TEMPA,4=1

BTFSC TEMPB,0 ;пропустить команду, если

GOTO P0 ;TEMPB,0=0

BSF VD2 ;зажечь светодиод VD2

GOTO P1

BCF VD2 ;погасить светодиод VD2

RETURN

INCLUDE GET_RA.ASM

Листинг 12.3.

Подпрограммы GET_RA и GET_RB помещают в регистры TEMPA и TEMPB текущие состояния портов A и B , соответственно. Подпрограмма ZAG_1110 анализирует состояния разрядов 2,3 и 4 регистра TEMPA и разряда 0 регистра TEMPB , и при условии TEMPA,2,3,4 = 1,1,1 и TEMPB,0 = 0 , зажигает светодиод VD2 . При невыполнении хотя бы одного из этих условий светодиод гасится.

Использование директивы INCLUDE GET_PORTA.ASM позволяет включать уже отлаженные модули подпрограмм в текущую программу. Для того чтобы этой возможностью можно было воспользоваться, необходимо сохранять отлаженные модули в виде отдельных ассемблерных файлов.

Попробуем теперь использовать семисегментный индикатор для контроля состояния тумблеров макета. Вначале напишем программу, которая выводит на индикатор HL семисегментное изображение любого двоичного числа от 0b до 1111b в шестнадцатиричном представлении.

Листинг 12.4. (html , txt )

Листинг 12.4. (html , txt )

;основная программа

LOOP

CLRWDT ;сброс сторожевого таймера

MOVLW 0x0A ;пересылка константы 0A в W

GOTO LOOP ;переход к метке LOOP для

;повторения процесса

SEV_SEG ;подпрограмма обслуживания

;семисегментного индикатора

ANDLW 0x0F ;маскирование 4-х младших разрядов

;W и обнуление 4-х старших

ADDWF PCL,F ;сложение W с PCL и пересылка

;результата в PCL

RETLW 0x80 ;возврат из подпрограммы с 80 в W

RETLW 0xF2 ;возврат из подпрограммы с F2 в W

RETLW 0x48 ;возврат из подпрограммы с 48 в W

RETLW 0x60 ;возврат из подпрограммы с 60 в W

RETLW 0x32 ;возврат из подпрограммы с 32 в W

RETLW 0x25 ;возврат из подпрограммы с 25 в W

RETLW 0x04 ;возврат из подпрограммы с 04 в W

RETLW 0xF0 ;возврат из подпрограммы с F0 в W

RETLW 0x00 ;возврат из подпрограммы с 00 в W

RETLW 0x20 ;возврат из подпрограммы с 20 в W

RETLW 0x10 ;возврат из подпрограммы с 10 в W

RETLW 0x06 ;возврат из подпрограммы с 06 в W

RETLW 0x8C ;возврат из подпрограммы с 8C в W

RETLW 0x42 ;возврат из подпрограммы с 42 в W

RETLW 0x0C ;возврат из подпрограммы с 0C в W

RETLW 0x1C ;возврат из подпрограммы с 1C в W

Листинг 12.4.

Программа начинает свою работу с пересылки константы 0x0A в рабочий регистр W . Затем производится вызов подпрограммы обслуживания семисегментного индикатора SEV_SEG . Работа подпрограммы SEV_SEG начинается с маскирования 4-х младших разрядов W и обнуления 4-х старших. Тем самым из анализа исключаются старшие разряды передаваемого из рабочего регистра W числа. Затем маскированное содержимое регистра W добавляется к текущему состоянию младшего байта счетчика команд PCL , и результат помещается в PCL . Таким образом, производится дополнительное смещение счетчика команд на величину, которая была передана в рабочем регистре. Например, если было W=0 , то содержимое счетчика команд не изменится, и будет выполнена следующая команда RETLW 0x80 0x80 = B"1000000" в регистр W . Если, как было в при веденной программе, W=0A , то к содержимому PCL будет добавлено число 0x0A , и произойдет дополнительное смещение на 10 шагов. В результате будет выполнена команда RETLW 0x10 , которая вызовет возврат из подпрограммы с записью 0x10 = B"0001000" в регистр W .

После возврата из подпрограммы производится пересылка W в PORTB и отображение его состояния на семисегментном индикаторе HL . В частности, если W = 0 , то при выводе 1000000b на порт B семисегментный индикатор покажет 0 , а при W = A покажет A .Таким образом, может быть отображено любое 4-разрядное двоичное число.

Метод прямого управления счетчиком команд, использованный в подпрограмме SEV_SEG , может применяться для реализации табличной конвертации чисел. При этом необходимо иметь в виду, что данный метод не позволяет конвертировать более 256 значений в одной таблице. Кроме того, программа табличной конвертации должна целиком располагаться внутри 256-байтного блока во избежание переполнения младшего байта счетчика команд.

Используя подпрограмму SEV_SEG , напишем теперь программу, которая читает состояния тумблеров SA1 и SA2 и выводит на индикатор соответствующее число.

Листинг 12.5. (html , txt )

Листинг 12.5. (html , txt )

;основная программа

LOOP

CLRWDT ;сброс сторожевого таймера

CALL GET_RA ; вызов подпрограммы GET_RA

RRF TEMPA,F ;сдвиг вправо на один разряд

;через перенос

RRF TEMPA,W ;сдвиг вправо на один разряд

;через перенос

ANDLW 0x03 ;маска на два младших разряда

CALL SEV_SEG ; вызов подпрограммы SEVEN_SEG

MOVWF PORTB ; пересылка W в PORTB

GOTO LOOP ;переход к метке LOOP для

;повторения процесса

INCLUDE GET_RA.ASM

INCLUDE SEV_SEG.ASM

Листинг 12.5.

Подпрограмма GET_RA помещает в регистр TEMPA текущее состояние порта A . Таким образом, в разрядах 2 и 3 регистра TEMPA хранится текущее состояние тумблеров SA1 и SA2 . Для того чтобы биты состояния тумблеров заняли позиции 0 и 1 регистра TEMPA , производится два сдвига вправо через перенос, причем результат второго сдвига помещается в регистр W . Затем накладывается маска на два младших разряда рабочего регистра и производится вызов подпрограммы SEV_SEG . После выхода из подпрограммы результат подается на порт B и отображается на индикаторе.

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

Листинг 12.6. (html , txt )

Листинг 12.6. (html , txt )

;основная программа

MOVLW 0xL ;пересылка константы H"L" в W

CALL DELAY ;вызов подпрограммы DELAY

DELAY ;подпрограмма формирования

;задержки времени

LOOPD

RETURN ;возврат из подпрограммы

Листинг 12.6.

Основная программа производит вызов подпрограммы DELAY с некоторой константой L в рабочем регистре W , определяющей число внутренних циклов подпрограммы. Подпрограмма DELAY начинает свою работу с загрузки содержимого рабочего регистра в регистр пользователя COUNT1 . Команда DECFSZ COUNT1,F уменьшает на единицу содержимое регистра COUNT1 и проверяет его на равенство нулю. Нулевое состояние регистра COUNT1 приводит к выходу из цикла и возврату из подпрограммы. Для исполнения каждого внутреннего цикла требуется три машинных цикла МК (1 цикл на исполнение команды DECFSZ при ненулевом результате и 2 цикла на каждую команду GOTO ). Выход из подпрограммы DELAY потребует 4-х циклов (2 цикла на исполнение команды DECFSZ при нулевом результате и 2 цикла на RETURN ). Если добавить к этому еще 4 цикла, необходимых для загрузки константы в рабочий регистр, вызова подпрограммы и загрузки регистра пользователя COUNT1 , то общее время исполнения подпрограммы DELAY (задержка) составит

TD = 4 + 3*(L – 1) + 4 = 5 + 3*L циклов,

где L – константа, переданная через рабочий регистр в подпрограмму DELAY .

L = H"00" = .0 максимальный формируемый интервал времени составит 1,55 мс. Такой результат связан с тем, что команда DECFSZ сначала декрементирует содержимое регистра (H"00" – 1 = H"FF" ), а затем уже анализирует результат.

Минимальный формируемый интервал времени составит при тех же условиях 5 циклов или 10 мкс. Для получения такого интервала необходимо перед вызовом подпрограммы DELAY загрузить в рабочий регистр число 0x01 .

Для расширения верхней границы формируемых временных интервалов, а также с целью повышения удобства работы с подпрограммой, можно добавить в цикл LOOPD одну или несколько дополнительных команд, в качестве которых чаще всего используется команда NOP . Для примера рассмотрим подпрограмму формирования задержки времени DELAY_C

Листинг 12.7. (html , txt )

Листинг 12.7. (html , txt )

DELAY_C ;подпрограмма формирования

;задержки времени (вариант C)

LOOPD

NOP ;пустая команда

GOTO LOOPD ;повторение цикла H"L" раз

RETURN ;возврат из подпрограммы

Листинг 12.7.

Общее время исполнения подпрограммы DELAY_C , включая ее вызов, составит

TD = 4 + 4*(L – 1) + 4 = 4 + 4*L циклов.

При тактовой частоте fosc = 2МГц и загрузке константы L = H'F9' = .249 формируемый интервал времени составит ровно 2 мс. Уменьшение константы на единицу уменьшает формируемый временной интервал на 8 мкс. В частности, при L = .124 образуется задержка в 1 мс.

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

Листинг 12.8. (html , txt )

Листинг 12.8. (html , txt )

;основная программа

MOVLW 0xL ;пересылка константы H'L' в W

CALL DELAY_D ;вызов подпрограммы DELAY_D

DELAY_D ;подпрограмма формирования

;большой задержки времени (вариант D)

LOOPD

CLRWDT ;сброс сторожевого таймера

RETURN ;возврат из подпрограммы

Листинг 12.8.

DELAY_D составляет 3*256 + 4

TD = 5 + (3*256 + 4)*L циклов.

При тактовой частоте fosc = 2МГц время цикла равно tц = 2 мкс, поэтому при загрузке L = H'00' = .0 максимальный формируемый интервал времени составит около 0,4 с.

Поскольку формируемый интервал времени достаточно велик, во внешний цикл включена команда сброса сторожевого таймера.

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

Листинг 12.9. (html , txt )

Листинг 12.9. (html , txt )

DELAY_E ;подпрограмма формирования

;большой задержки времени (вариант E)

CLRF COUNT1 ;сброс содержимого регистра COUNT1

LOOPD

NOP ;пустая команда

GOTO LOOPD ;повторение цикла 256 раз

CLRWDT ;сброс сторожевого таймера

GOTO LOOPD ;повторение цикла H'L' раз

RETURN ;возврат из подпрограммы

Листинг 12.9.

Время исполнения внутреннего цикла подпрограммы DELAY_E составляет 4*256 + 4 машинных циклов МК, поэтому общая задержка составит

TD = 5 + (4*256 + 4)*L циклов.

При тактовой частоте fosc = 2МГц и при загрузке L = H'F3' = .243 формируемый интервал времени составит около 0,5 с при погрешности не более 0,2%. Если необходима более высокая точность, можно вставить необходимое количество пустых операций во внешний цикл формирования задержки.

Рассмотрим далее несколько программ с использованием подпрограмм формирования задержки времени. Начнем с написания программы, которая подает звуковой сигнал на динамик BA1 при нажатии на кнопку SB1 . Динамик будет звучать только в том случае, если на выход RA0 будет подан периодически изменяющийся сигнал. Для того чтобы звук был хорошо слышен, его частота должна находиться вблизи максимума слышимости человеческого уха. Выберем частоту звучания равной 1 КГц, что соответствует периоду следования импульсов сигнала 1 мс.

Листинг 12.10. (html , txt )

Листинг 12.10. (html , txt )

;основная программа

LOOP

CLRWDT ;сброс сторожевого таймера

CALL GET _ RA ;вызов подпрограммы GET _ PORTA

CALL SB1_BA1 ;вызов подпрограммы SB1_BA1

GOTO LOOP ;переход к метке LOOP для

;повторения процесса

SB1_BA1 ;подпрограмма подачи звука на

;динамик BA1 при нажатии на кнопку

;SB1

BTFSC TEMPA,4 ;пропустить команду, если

;TEMPA,4=0 (кнопка нажата)

GOTO B0 ;перейти на B0

BSF BA1 ;подача высокого уровня на RA0

;H'3E' = .62 в W

BCF BA1 ;подача низкого уровня на RA0

MOVLW 0x3E ;пересылка константы

;H'3E' = .62 в W

CALL DELAY_C ;вызов подпрограммы DELAY_C

RETURN

INCLUDE GET_RA.ASM

INCLUDE DELAY_C.ASM

Листинг 12.10.

Как и раньше, подпрограмма GET_RA считывает текущее состояние порта A, которое затем передается в регистр TEMPA . Подпрограмма SB1_BA1 анализирует состояние разряда 4 регистра TEMPA и, в зависимости от результата, озвучивает динамик BA1 или нет. Необходимая выдержка линии RA0 в единичном и нулевом состояниях обеспечивается подпрограммой DELAY_C с параметром L = H'3E' = .62 . Это соответствует времени задержки около 0,5 мс, что и дает в результате необходимую частоту следования сигнала 1 Кгц.

Рассмотрим далее программу, которая заставляет мигать светодиод VD2 при нажатии на кнопку SB1 . Для того чтобы мигания были хорошо видны, выберем их частоту равной 1 Гц.

Листинг 12.11. (html , txt )

Листинг 12.11. (html , txt )

;основная программа

LOOP

CLRWDT ;сброс сторожевого таймера

CALL GET_RA ; вызов подпрограммы GET_RA

CALL SB1_VD2M ;вызов подпрограммы

;SB1_VD2M

GOTO LOOP ;переход к метке LOOP для

;повторения процесса

SB1_VD2M ;подпрограмма мигания светодиода

;VD2 при нажатии на кнопку SB1

BTFSC TEMPA,4 ;пропустить команду, если

;TEMPA,4=0 (кнопка нажата)

GOTO V0 ;перейти на V0

BSF VD2 ;зажечь светодиод VD2

;H'F3' = .243 в W

BCF VD2 ;погасить светодиод

MOVLW 0xF3 ;пересылка константы

;H'F3' = .243 в W

CALL DELAY_E ;вызов подпрограммы DELAY_E

BTFSS TEMPA,4 ;пропустить команду, если

;TEMPA,4=1 (кнопка не нажата)

GOTO V1 ;перейти на V1

BCF VD2 ;погасить светодиод

RETURN

INCLUDE GET_RA.ASM

INCLUDE DELAY_E.ASM

Листинг 12.11.

Программа работает почти так же, как и предыдущая. Первое отличие заключается в том, что светодиод принудительно гасится при не нажатой кнопке. Второе отличие заключается в величине интервала времени, который составляет здесь 0,5 с и формируется подпрограммой DELAY_E .

Подпрограммы формирования задержки времени могут быть также полезны при работе с такими внешними источниками сигналов, как тумблеры, кнопки, переключатели и т.п. Дело в том, что все механические коммутаторы имеют одно негативное свойство, известное как "дребезг" контактов, которое обусловлено механическими колебаниями контактов при их замыкании и размыкании. Длительность колебаний составляет обычно несколько миллисекунд, в течение которых на вход МК может поступать пачка импульсов вместо идеального перепада.

Аппаратные способы борьбы с "дребезгом" контактов основаны на использовании RS-триггеров, одновибраторов или триггеров Шмитта. В устройствах на основе МК подавление "дребезга" контактов обычно осуществляется программными способами, которые основаны на повторном считывании состояния линии порта через определенное время.

В качестве примера рассмотрим "бездребезговый" вариант подпрограммы чтения состояния порта A .

Листинг 12.12. (html , txt )

Листинг 12.12. (html , txt )

GET_RAD ;подпрограмма чтения состояния

;порта A в регистр TEMPA

;с подавлением "дребезжания"

MOVF PORTA,W ;чтение состояния порта A в W

ANDLW 0x1C ;наложение маски b'00011100'

;на неиспользуемые биты W

MOVWF TEMPA ;пересылка W в TEMPA

CLRWDT ;сброс сторожевого таймера WDT

MOVLW 0x0A ;пересылка константы

;H'0A' = .10 в W

CALL DELAY_E ; вызов подпрограммы DELAY_E

MOVF PORTA,W ;чтение состояния порта A в W

ANDLW 0x1C ;наложение на W маски b'00011100'

SUBWF TEMPA,W ;вычитание W из TEMPA

BTFSS Z ;пропустить команду, если результат

;нулевой

GOTO DD ;перейти на метку DD

RETURN

INCLUDE DELAY_E.ASM

Листинг 12.12.

Суть работы подпрограммы заключается в повторном чтении состояния порта A спустя некоторое время после предыдущего и сравнении его с прежним значением. Константа H'0A' = .10 , пересылаемая в регистр W перед вызовом подпрограммы DELAY_E , обеспечивает значение задержки времени около 20 мс - этого, как правило, достаточно для завершения переходных процессов при переключении механических коммутаторов. Маскирование неиспользуемых разрядов порта повышает надежность работы подпрограммы. Сброс сторожевого таймера перед вызовом подпрограммы задержки нужен для исключения сброса МК между двумя процедурами опроса порта A .

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

Листинг 12.13. (html , txt )

Листинг 12.13. (html , txt )

;основная программа

CLRF COUNT3 ;сброс счетчика нажатий

LOOP

CLRWDT ;сброс сторожевого таймера

CALL GET_RAD ;вызов подпрограммы GET_RAD

BTFSC TEMPA,4 ;проверка нажатия SB1

GOTO LOOP ;если не нажата – возврат

;на метку LOOP

INCF COUNT3,F ;инкремент счетчика

MOVF COUNT3,W ;пересылка содержимого

;счетчика в рабочий регистр

CALL SEV_SEG ;вызов подпрограммы SEV_SEG

MOVWF PORTB ;пересылка W в PORTB

TEST

CALL GET_RAD ; вызов подпрограммы GET_RAD

BTFSS TEMPA,4 ;проверка нажатия SB1

GOTO TEST ;если еще нажата – возврат

;на метку TEST

GOTO LOOP ;возврат на метку LOOP

INCLUDE GET_RAD.ASM

INCLUDE SEV_SEG.ASM

Листинг 12.13.

Приведенные в главе программы не охватывают и малой доли возможностей, которые предоставляет даже такой простой макет, как изображенный на рис. 6.3 . Однако их освоение, надеюсь, будет полезным для начинающих пользователей PIC-контроллеров.

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

Общее представление о микропроцессорах

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

Говорить о контроллерах можно только применительно к микрокомпьютерам или микро-ЭВМ, состоящим из микропроцессоров. Собственно, это и есть рабочая техника, в принципе способная выполнять те или иные операции или команды в рамках заданного алгоритма. Как отмечается в учебнике по микропроцессорной технике Ливенцова С. Н., под микроконтроллером следует понимать компьютер, ориентированный на выполнение логических операций в рамках управления оборудованием. Он базируется на тех же схемах, но с ограниченным вычислительным ресурсом. Задача микроконтроллера в большей степени заключается в реализации ответственных, но простых процедур без сложных схем. Впрочем, технологически примитивными такие устройства тоже нельзя назвать, так как на современных производствах микроконтроллеры могут одновременно управлять сотнями и даже тысячами операций одновременно, учитывая и косвенные параметры их выполнения. В целом логическая структура микроконтроллера проектируется с расчетом на мощность, универсальность и надежность.

Архитектура

Разработчики микропроцессорных устройств имеют дело с набором функциональных компонентов, которые в итоге образуют единый рабочий комплекс. Даже простая модель микрокомпьютера предусматривает использование целого ряда элементов, обеспечивающих выполнение поставленных перед машиной задач. Способ взаимодействия между этими компонентами, а также средства коммуникации с входными и выходными сигналами во многом и определяют архитектуру микропроцессора. Что касается самого понятия архитектуры, то оно выражается разными определениями. Это может быть набор технико-физических и эксплуатационных параметров, среди которых число регистров памяти, разрядность, быстродействие и так далее. Но, в соответствии с теоретическими основами микропроцессорной техники, под архитектурой в данном случае следует понимать логическую организацию функций, реализуемых в процессе взаимосвязанной работы аппаратной и программной начинки. Более конкретно отражает следующее:

  • Совокупность физических элементов, которые образуют микропроцессор, а также связи между его функциональными блоками.
  • Форматы и способы предоставления информации.
  • Каналы обращения к доступным для использования модулям структуры с параметрами их дальнейшего применения.
  • Операции, которые может выполнять конкретный микропроцессор.
  • Характеристики управляющих команд, которые вырабатывает или принимает устройство.
  • Реакции на сигналы извне.

Внешние интерфейсы

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

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

Характеристики микропроцессора

К основным характеристикам микропроцессорных устройств можно отнести следующие:

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

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

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

Память в микропроцессорной технике

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

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

Функции

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

  • Чтение данных.
  • Обработка данных.
  • Обмен информацией с внутренней памятью, модулями или внешними подключенными устройствами.
  • Запись данных.
  • Ввод и вывод данных.

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

Производители устройств

У истоков создания микропроцессорных устройств стояли инженеры компании Intel, выпустившие целую линейку 8-разрядных микроконтроллеров на платформе MCS-51, которые в некоторых сферах применяются и сегодня. Также многие другие изготовители использовали семейство x51 для собственных проектов уже в рамках развития новых поколений электроники и микропроцессорной техники, в числе представителей которой значатся и отечественные разработки наподобие однокристальной ЭВМ К1816ВЕ51.

Выйдя в сегмент более сложных процессоров, фирма Intel уступила место микроконтроллеров другим компаниям, в числе которых оказались Analog Device и Atmel. Принципиально новый взгляд на архитектуру микропроцессоров предлагают фирмы Zilog, Microchip, NEC и др. На сегодняшний день в контексте развития микропроцессорной техники можно рассматривать линейки x51, AVR и PIC как наиболее успешные. Если же говорить о тенденциях разработки, то в наши дни на первое место выходят требования к расширению спектра задач внутреннего управления, компактности и низкому энергопотреблению. Иными словами, микроконтроллеры становятся меньше и рациональнее с точки зрения обслуживания, но при этом наращивают мощностный потенциал.

Обслуживание техники на базе микропроцессора

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

  • Фиксация сбоев в процессе работы системы и их анализ с определением причин нарушения.
  • Предупреждение отказов устройства и его компонентов за счет назначенного регламентного обслуживания.
  • Устранение отказов устройства путем ремонта поврежденных элементов или их замены на исправные аналогичные детали.
  • Производство своевременного ремонта компонентов системы.

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

Применение микропроцессорной техники

Перед широким внедрением микропроцессоров в разных сферах промышленности, бытового и народного хозяйства стоит все меньше барьеров. Это вновь обуславливается оптимизацией данных устройств, их удешевлением и ростом потребности в элементах автоматизации. К областям наиболее распространенного использования таких устройств можно отнести:

  • Промышленность. Микропроцессоры используются в управлении рабочими операциями, координации машин, систем контроля и сбора производственных показателей.
  • Торговля. В данной сфере эксплуатация микропроцессорной техники связана не только с вычислительными операциями, но и с обслуживанием логистических моделей при управлении товарами, запасами, а также информационными потоками.
  • Системы безопасности. Электроника в современных комплексах охраны и сигнализации задает высокие требования к автоматизации и интеллектуальному контролю, что и позволяют обеспечивать микропроцессоры новых поколений.
  • Связь. Разумеется, и коммуникационные технологии не могут обходиться без программируемых контролеров, обслуживающих мультиплексоры, дистанционные терминалы и схемы коммутации.

Несколько слов в заключение

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

Целью настоящей книги является – научить читателя основам микропроцессорной техники. Предполагается некий начальный уровень знаний в радиотехнике. Я определяю этот уровень, как специалист или любитель, знакомый с радио и импульсной техникой. В задачи этой книги не входит объяснение, что такое резисторы, конденсаторы или транзисторы. Предполагается, что читатель знаком с этим и с схемотехникой аналоговых устройств, но стремится узнать, что такое микропроцессорные устройства и научиться самому конструировать их. В начале книги раскрываются общие принципы цифрового представления сигнала, раскрываются такие понятия, как логические элементы, цифровой сигнал, принципы хранения и обработки цифровой информации. А так же описывается принцип работы тех элементов цифровой техники, которые понадобятся нам в дальнейшем, когда мы будем учиться строить микропроцессорную систему. Описание всех этих элементов дается в книге лишь в той мере, в которой это нужно для быстрого понимания основных принципов построения микропроцессорных систем. Для более полного понимания работы каждого элемента рекомендую обратиться к моему сайту под названием «Цифровые микросхемы и микропроцессоры» http:// www.mirmk.ru .

В качестве примера микропроцессорного устройства в данной книге взята реальная конструкция, разработанная автором – позиционер спутниковой антенны. Позиционер предназначен для автоматизации управления поворотом бытовой спутниковой антенны. Он способен запомнить до 99 позиций (направлений на спутник), а затем автоматически устанавливать антенну в любую из этих позиций. Для этого необходимо лишь выбрать номер этой позиции при помощи пульта дистанционного управления, либо при помощи кнопок на передней панели прибора. Схема и программа позиционера были разработаны автором книги. Опытный образец был изготовлен и испытан с применением стандартного фирменного поворотного устройства (мотор, редуктор, геркон-датчик) иностранного производства. Контроллер выполнен на основе микроконтроллера AT 89C 2051 фирмы Atmel (www.atmel.com или www.atmel.ru ). В связи с этим изучение микропроцессоров так же будет проводиться на примере процессора AT 89C 2051. В настоящее время фирма Atmel перешла на более современные процессоры типа AVR . Однако построение микропроцессорных устройств на данном процессоре с моей точки зрения вполне оправдано, так как его параметры прекрасно подходят для этой задачи, а цена процессора AT 89C 2051 существенно ниже по сравнению с любым процессором из семейства AVR .

В книге подробно разбирается принципиальная схема позиционера, каждого его узла. Затем приводится структура управляющей программы. Полный текст программы дается в приложении (дискета). В последних главах описываются основные приемы программирования, на примере конкретных программных модулей.

Автор надеется, что эта книга будет полезна широкому кругу специалистов и радиолюбителей и будет благодарен за любые замечания и комментарии по книге. Все замечания прошу высылать по адресу Крым, г. Симферополь, ул. Русская, 194 или по E -mail : avbelov@ ukr.net . Нужно заметить, что публикуемый здесь текст - это самый первый черновой вариант книги. Со времени его написания книга была написана полностью, издана в 2004 году. Затем книга претерпела довольно значительные изменения, выдержала уже около десяти переизданий. Самое последнее издание книги вы можете заказать в бумажном варианте по льготной цене перейдя на этом сайте на соответствующую страницу

Ликбез для начинающих

Глава 1. Что же такое микропроцессор.

Что же такое микропроцессор. И чем он отличается от микроконтроллера?

Вообще то процессор – это одна из составных частей компьютера. До того, как изобрели микропроцессор (то есть процессор на одной микросхеме) существовали целые процессорные блоки. В больших компьютерах. Для прояснения вопроса нужно понимать, что же такое компьютер. Компьютер – это устройство для автоматической обработки информации. Причем информация в компьютере представляется в виде чисел. Любая компьютерная система состоит из следующих основных частей: Процессор, Блок памяти, Порты ввода вывода. В нашу задачу не входит изучение древних видов компьютеров. В дальнейшем речь пойдет о микропроцессорах и микроконтроллерах. Итак:

ü Память. Это набор ячеек, в каждой из которых хранится одно число. Причем это не совсем то число, с которым мы с вами привыкли иметь дело. Это упрощенное компьютерное число. Обычно каждая ячейка памяти может хранить число принимающее значения от нуля до 255. Подробнее об этом будет рассказано ниже.

ü Порты ввода/вывода. Это некие микросхемы, при помощи которых микропроцессорная система может общаться с внешним миром. Через порты ввода компьютерная система получает информацию из вне, а через порты вывода она выдает результаты своей работы и управляет внешними устройствами. Только благодаря этим самым портам ввода/вывода к компьютеру, подключаются такие устройства, как клавиатура, мышь, дисководы, CD -ROM и т.д. Те читатели, которые знакомы с компьютерами, возможно, слышали термины «параллельный порт» (LPT ) и «последовательный порт» (COM ). Так вот в данном случае речь идет совсем о другом понятии. Это просто схожие термины. Параллельный и тем более последовательный порты компьютера – это целые, достаточно сложные схемы, которые в свою очередь управляются как раз таки при помощи портов ввода/вывода. Не нужно так же думать, что клавиатура и мышь используют только порты ввода, а дисплей порт вывода. Для управления большинством устройств компьютера используются как порты ввода, так и порты вывода микропроцессорной системы. Возможно, вы удивлены, что я называю внешними устройствами и жесткий диск и флоппи дисковод. Там, внутри компьютера, скрыто еще много устройств, которые по отношению к микропроцессору являются внешними, хотя находятся зачастую не только внутри компьютера, но и непосредственно на материнской плате – главной плате компьютера.

ü Процессор. Процессор – это самая главная часть, сердце всей системы. Он предназначен для того, что бы выполнять различные последовательности действий с числами в памяти и с данными в портах ввода/вывода. И всего то!

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

Рис. 1.

Что же может делать процессор с этими числами? Да то, что вообще с ними можно делать. Он может читать их из различных ячеек памяти, складывать, вычитать, сравнивать, затем записывать в те же или в другие ячейки памяти. Еще он может выполнять логические (Булевы) операции с числами (что это такое я подробно опишу ниже). Более мощные процессоры могут даже умножать и делить числа. Ну и кое, какие специальные операции, которые мы обязательно будем разбирать, когда будем подробнее изучать работу микропроцессора.

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

Вот, в принципе и все, что может процессор. Но этого хватает, что бы выполнять все те чудеса, которые мы привыкли видеть от компьютеров. Оказывается все на свете можно описать цифрами. И текст, и изображение, и звуки, в том числе музыку. Хорошо поработали ученые – математики. Они сумели разработать математические модели всех этих процессов. Только считай по быстрее! А современные процессоры это могут! Конечно, современные процессоры имеют гораздо больший набор команд. Но, в основном, это специализированные групповые команды, заменяющие какой ни будь часто используемый набор более простейших. Наша книга не ставит перед собой задачи изучения современных микропроцессоров для персональных компьютеров. Наша задача – небольшие специализированные микропроцессорные устройства. Такие, как, например какой ни будь хитрый таймер, система управления стиральной машиной или блок управления спутниковой антенной. Они имеют общее название: микропроцессорные контроллеры. Вот на это и направим свой взор.

Ну, так что же это за такое чудесное устройство – микропроцессор. Он и читает и вычисляет и записывает и столько разных умных вещей делает! Как же он это все умеет. Видимо очень умная микросхема? На самом деле микропроцессор – это просто автомат, который выполняет, заложенные в нем операции по ПРОГРАММЕ. Программа – это последовательность команд для процессора, записана в той же самой памяти, то же в виде цифр. Иногда, правда память делится на две части: память программ и память данных. В процессоре заложен простой алгоритм. Сразу после включения или после прихода сигнала сброса (Reset ) процессор начинает читать из той области памяти, которая отведена для хранения программ, по очереди число за числом. Каждым таким числом закодирована команда. Команда – это одно из действий, которое может выполнить микропроцессор. Число, которым закодирована команда, называется код операции. Процессор читает код операции, выполняет эту операцию. Затем читает следующий код, опять выполняет. Так он последовательно читает эти коды и выполняет их. Это и есть процесс выполнения прграммы. А кто же записал эти коды в память? Программист! Программист сначала придумал программу. Затем записал ее в микросхему памяти. Вставил микросхему в микропроцессорную систему и включил питание. Система заработала. Вот вам и умная машина. Вульгарный автомат.

В микропроцессорных контроллерах для хранения программ используют так называемые постоянные запоминающие устройства (ПЗУ). По-английски это звучит как ROM (read only memory ). Они называются постоянными потому, что после записи туда информации она там не меняется. Запись – это специальный процесс, выполняемый при помощи специальных устройств – программаторов ПЗУ. Информация в них хранится за счет прожигания определенных областей микросхемы. Прошил раз и пользуешься этой информацией долгое время. Для хранения программы микропроцессорного контроллера это как раз очень подходит. Микропроцессор может только читать из такой памяти. Записать туда он ничего не сможет. Если же он попробует записать туда информацию, ничего страшного не произойдет. В памяти останется то, что там было до попытки записи. Кроме постоянного запоминающего устройства в системе должна быть обязательно память, выполненная на микросхемах оперативной памяти. То есть оперативное запоминающее устройство (ОЗУ). По-английски RAM . В эту память процессор может, записывать информацию, а затем читать ее. Ни одна программа не обходится без некоторого количества ячеек памяти для хранения множества промежуточных результатов и вспомогательных величин. Для этих целей и служит ОЗУ.

Ну а что же такое микроконтроллеры. Иногда мы читаем «Микроконтроллер AT 89C 2051». Микроконтроллер - это дитя дальнейшей интеграции, это целая микропроцессорная система на одном кристалле! Одна микросхема содержит в себе все составляющие микропроцессорной системы: память, порты ввода/вывода и собственно процессор. Кроме того, там часто располагаются некоторые внешние (по отношению к процессору) устройства (такие устройства часто называют «периферийными»): таймеры, устройства прерывания, компараторы и др. Значения этих, пока непонятных терминов вы узнаете из последующих глав. Вообще с понятиями «микропроцессор» и «микроконтроллер» существует некоторая путаница. То, что я сейчас назвал микроконтроллером, иногда тоже называют микропроцессором. Что бы понять - о чем идет речь, следите за контекстом подаваемой информации.

Loading...Loading...