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

Комплексная разработка механических, электронных и программных компонентов технологического оборудования. Часть 2. Устройство и программирование однокристальных микроконтроллеров

Покупка
Новинка
Артикул: 842161.01.99
Доступ онлайн
800 ₽
В корзину
Рассмотрены устройство и программирование однокристальных микроконтроллеров на примере широко распространенного восьмиразрядного микроконтроллера семейства MCS-51. Предполагается знание первой части учебного пособия "Функции, структура и элементная база систем автоматического управления", в которой заложены основы единого подхода к проектированию механических, электронных и программных компонентов технологического оборудования, и умение постановки четких технических заданий и технических предложений на начальных этапах проектирования. Для студентов МГТУ им. Н. Э. Баумана, обучающихся по специальностям "Инженерные нанотехнологии в машиностроении" и "Электронное машиностроение". Учебное пособие может быть полезно студентам других машиностроительных специальностей.
Рябов, В. Т. Комплексная разработка механических, электронных и программных компонентов технологического оборудования. Часть 2. Устройство и программирование однокристальных микроконтроллеров : учебное пособие / В. Т. Рябов. - Москва : Изд-во МГТУ им. Баумана, 2012. - 124 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2169339 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет 
имени Н.Э. Баумана 
 
 
 
 
В.Т. Рябов 
 
КОМПЛЕКСНАЯ РАЗРАБОТКА  
МЕХАНИЧЕСКИХ, ЭЛЕКТРОННЫХ  
И ПРОГРАММНЫХ КОМПОНЕНТОВ  
ТЕХНОЛОГИЧЕСКОГО ОБОРУДОВАНИЯ 
 
 
Часть 2. Устройство и программирование  
однокристальных микроконтроллеров 
 
Рекомендовано Научно-методическим советом  
МГТУ им. Н.Э. Баумана в качестве учебного пособия  
по курсу «Системы автоматического управления  
технологическим оборудованием» 
Москва 
Издательство МГТУ им. Н.Э. Баумана 
2012 


УДК 621.01:621.38:681.3.06(075.8) 
ББК 30.606 
        Р98 
Рецензенты: В.В. Одиноков, В.Н. Симонов 
Рябов В. Т. 
 
 
Р98       Комплексная разработка механических, электронных и прог- 
раммных компонентов технологического оборудования : учеб. 
пособие. – Ч. 2 : Устройство и программирование однокристальных микроконтроллеров / В. Т. Рябов. – М. : Изд-во МГТУ 
им. Н. Э. Баумана, 2012. – 123, [1] с. : ил.  
 
Рассмотрены устройство и программирование однокристальных 
микроконтроллеров на примере широко распространенного восьмиразрядного микроконтроллера семейства MCS-51. Предполагаетcя 
знание первой части учебного пособия «Функции, структура и элементная база систем автоматического управления», в которой заложены основы единого подхода к проектированию механических, электронных и программных компонентов технологического оборудования, и умение постановки четких технических заданий и технических 
предложений на начальных этапах проектирования.  
Для студентов МГТУ им. Н.Э. Баумана, обучающихся по специальностям «Инженерные нанотехнологии в машиностроении» и 
«Электронное машиностроение». Учебное пособие может быть полезно студентам других машиностроительных специальностей. 
УДК 621.01:621.38:681.3.06(075.8) 
                             ББК 30.606 
 
© МГТУ им. Н.Э. Баумана, 2012


 
ГЛАВА 3. ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ 
В СИСТЕМАХ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ 
3.1. Микропроцессоры и микроконтроллеры 
Однокристальные микроконтроллеры (МК) – продукт естественной эволюции микропроцессоров применительно к нуждам 
систем автоматического управления (САУ). В отличие от типовых микропроцессоров, ориентированных на решение общих вычислительных задач, обработку чисел с плавающей запятой, оперирующих огромными массивами информации, МК служит для 
выполнения задач управления, где, как правило, переменных не 
столь много, но обработка информации строго привязана ко времени. 
МК должен отвечать ряду специфических свойств. 
1. Иметь развитые средства работы в реальном времени, встроенную таймерную систему. 
2. Быть ориентированным на квазипараллельную обработку 
информации, т. е. иметь средства параллельно (или квазипараллельно) решать некоторые относительно простые задачи. 
Например, для управления перемещением по двум координатам МК должен параллельно вести два сходных процесса по 
следующему алгоритму:  
‒ измерить перемещение по координате; 
‒ сравнить его с требуемым; 
‒ рассчитать требуемое значение управляющего сигнала на 
привод подачи; 
‒ выдать этот сигнал на объект управления; 
‒ ждать окончания периода квантования до следующего запуска кванта управления координатой. 
3 


Период квантования зависит от характеристик управляемого 
процесса. При управлении перемещением с фиксированным шагом 
этот период будет определять скорость подачи. При управлении 
«медленными» процессами, например нагревом, период перезапуска кванта управления может составлять несколько десятков 
секунд. 
Во время ожидания следующего перезапуска МК не простаивает. Его диспетчер задач проверяет, не подошло ли время выполнения какого-либо другого кванта, например, регулировки давления. Квант регулирования давления выполняется и снова передает 
управление диспетчеру и т. д. Это так называемая добровольная 
многозадачность, когда каждый квант сам передает управление 
диспетчеру задач. Возможна «исключающая многозадачность», 
когда диспетчер задач задает кванты времени на выполнение каждого процесса. Мы не будем обсуждать достоинства и недостатки 
методов, отметим только, что хороший МК должен уметь реализовать оба метода квазипараллельного ведения процессов. Процессы, 
точнее участки их непрерывного исполнения, переключаемые во 
времени, будем называть синхроквантами. 
3. Постоянно отслеживать состояние объекта. Его диспетчер 
задач при возникновении на объекте некоторых ситуаций (например, координатный столик дошел до упора) должен либо сразу  
запускать программу реакции на ситуацию (остановить или реверсировать двигатель), либо ставить соответствующий процесс  
в очередь на обработку, если задержка в несколько миллисекунд 
некритична. Процессы (точнее их кванты) с запуском по состоянию объекта будем называть интерквантами (если допустима задержка) или экстраквантами, если задержка недопустима. Для 
реализации интер- и экстраквантов МК оснащают простой и развитой системой прерываний. 
4. Полностью интегрировать в себе на одном чипе все вычислительное ядро и элементы устройства связи с объектом (тактовый 
генератор, память программ и данных, разбитую на зоны так, чтобы после перезапуска в кратчайшие сроки продолжить управление). Иметь простые средства расширения и подключения дополнительных устройств. 
5. Иметь удобные средства обработки не только машинных 
слов, но и отдельных битов. Микропроцессор ориентирован на обработку машинных слов, причем чем длиннее слово, тем произво4 


дительнее микропроцессор. Каждый бит машинного слова МК 
способен включить или выключить двигатель или клапан. Необходимы развитые средства для контроля и изменения отдельных битов машинного слова МК с сохранением остальных. 
6. Обладать простыми средствами подключения объекта управления. МК на кристалле необходимы если не завершенное устройство 
связи с объектом управления для непосредственного подключения 
линии связи, то хотя бы универсальные порты для формирования таких линий, по которым можно легко проводить дискретное управление (включить – выключить) и дискретные контроль (включено?), 
аналоговое управление и аналоговый контроль. Аналоговое управление (АУ) выходит из употребления и обоснованно заменено широтно- или фазоимпульсным управлением по линиям дискретного 
управления (ДУ). 
7. Поддерживать повышенные требования к надежности работы, т. е. иметь средства аппаратной и программной защиты от сбоев и средства быстрого перезапуска. 
8. Обладать совмещенной памятью программ и данных, когда 
управляющие коды программы и операнды, с которыми совершаются действия, находятся в общей памяти (такую архитектуру 
называют фон-Неймановской) либо раздельной памятью, когда 
управляющие коды и операнды хранятся в разных ее зонах – программ и данных (такую архитектуру называют Гарвардской). Для 
МК удобнее Гарвардская, поскольку программное обеспечение 
должно оставаться неизменным и управляющую программу можно 
разместить в РПЗУ, а переменные операнды – в ОЗУ. После включения МК сразу готов к работе. 
Составим представление о некотором обобщенном микропроцессоре как устройстве, способном к программно-управляемой 
обработке информации. 
Микропроцессор – это последовательностная схема, реакция 
которой на входные воздействия помимо значений воздействий 
зависит еще и от состояния самой схемы. Для работы микропроцессора необходима память, содержащая набор необходимых инструкций или команд. Каждая команда имеет код, дополняемый 
при необходимости адресами операндов, поэтому длина команд 
может быть разной. Например, для простейшей команды «уменьшить содержимое аккумулятора на единицу» достаточно задать 
только код, а команда «прибавить к #32 #86» должна кроме кода 
5 


содержать еще и операнды #32 и #86. Не вдаваясь в подробности и 
особенности адресации операндов (символ # – признак непосредственной адресации, когда значения операндов идут непосредственно за кодом команды), отметим, что в команде помимо кода 
может быть и еще что-либо.  
Микропроцессор содержит набор специальных регистров и регистров общего назначения. Разрядность регистров микропроцессора наряду с тактовой частотой во многом определяют его параметры. Восьмиразрядные микропроцессоры способны обрабатывать восьмиразрядные слова или байты, 16-разрядные способны 
проводить действия с машинным словом в два байта. Тактовая 
частота определяется частотой тактового генератора, сигналы 
которого инициируют работу микропроцессора. Свой цикл работы, или машинный цикл, микропроцессор выполняет за несколько 
тактов, совершая при этом простейшее завершенное действие или 
простую (короткую) команду, например, «очистить аккумулятор – 
CLR A». Число тактов на цикл у микропроцессоров различно и составляет от 1-2 у микропроцессоров RISC-архитектуры до 12 и 
более у процессоров классической многотактовой архитектуры. 
Среди специальных регистров прежде всего выделим счетчик 
команд РС (Program Counter или Program Calculator). Он определяет объем адресного пространства памяти, с которой способен работать микропроцессор. Это неотъемлемая часть любого микропроцессора и МК. Алгоритм работы микропроцессора таков: 
1) считать из памяти содержимое ячейки, адрес которой содержится в счетчике команд РС и интерпретировать считанное 
значение как код команды; 
2) по коду команды определить ее длину, содержит ли команда, кроме кода, операнды или их адреса и определить адрес следующего кода команды; 
3) установить на РС адрес кода следующей команды; 
4) дочитать содержимое команды и выполнить предписанные 
действия; 
5) перейти на единицу. 
Любой микропроцессор имеет вывод Reset, который служит 
для приведения процессора в начальное состояние. При этом в 
счетчике команд устанавливается предопределенное начальное 
значение, для большинства микропроцессоров – это 0. Наиболее 
распространенные микропроцессоры семейств х86, к которому 
6 


относится и Pentium, при сбросе устанавливают на счетчике команд F0000H. Достаточно счетчику команд сбиться, ввести вместо 
кода команды любую другую ее часть, и микропроцессор не сможет правильно функционировать. Современные операционные системы иногда могут восстановить нормальную работу. В простейшем случае для восстановления нужно просто активизировать вывод Reset. 
Важным регистром микропроцессора является аккумулятор 
А, в котором он проводит все предписываемые кодом команды 
действия. 
Это 
основной 
регистр 
арифметико-логического 
устройства микропроцессора. У некоторых микропроцессоров 
(например, фирмы Motorola) использованы два аккумулятора.  
В СССР в 1980-е годы производились микропроцессоры семейства 
1801, в которых все восемь регистров общего назначения были 
полностью универсальны и любой мог выполнять роль счетчика 
команд или аккумулятора. 
В любом микропроцессоре есть регистр состояния, или слово 
состояния процессора PSW (Processor Status Word). Даже в универсальном процессоре серии 1801 он был обособлен. Отдельные 
биты этого слова или, как их называют, флаги, устанавливают свое 
значение по результатам проведенного действия. Мы еще будем 
подробно изучать слово состояния и флаги МК семейства MCS-51. 
Предварительно, чтобы получить общее представление, отметим: 
есть флаг переполнения аккумулятора O (Overlay), флаг нулевого 
результата Z (Zero), флаг арифметического переноса или заема и т. 
п. Эти флаги широко используют системные программисты для 
построения арифметических действий со словами двойной или 
большей длины, управления работой периферийных и внутренних 
устройств ЭВМ; прикладные же программисты применяют их в 
своих программах реже. 
Регистр указатель данных содержит адреса операндов, над которыми следует провести предписанные программой действия. 
Иногда указатели данных называют индексными регистрами. Методов адресации операндов достаточно много.  
1. Подразумеваемая (регистровая) адресация, адрес операнда 
определен в единственном слове кода команды, например, увеличить содержимое аккумулятора на единицу – INC A. У МК семейства MCS-51 код – это однобайтовая команда с кодом 000101112. 
Либо, например, «логическое ИЛИ аккумулятора и регистра» –  
7 


ORL A, Rn кодируется одним байтом 01001rrr, где rrr – три бита для 
задания номера регистра от нуля до семи. 
2. Непосредственная адресация, значение операнда содержится 
в коде команды ADD A,#10 – прибавить к содержимому аккумулятора число 10. В ассемблере, когда содержимое ячейки должно интерпретироваться как операнд, принято добавлять символ-решетку #. 
Такая адресация неудобна тем, что команда не универсальна  
и будет добавлять к аккумулятору только константу десять. 
3. Прямая адресация, адрес операндов определен в команде следом за кодом. Например, «прибавить к содержимому аккумулятора 
значение ячейки с указанным адресом» – ADD A, direct address. 
Здесь в выражении direct address, следующим за кодом команды, 
указан адрес ячейки памяти, содержащей операнд. Содержимое 
ячейки direct address можно изменять и хранить в ней конкретную 
переменную процесса. 
4. Косвенная через указатель данных или косвенно-регистровая 
адресация проводится через специализированный регистр – указатель данных, который и упоминается в начале этого абзаца. Предварительно изменив содержимое указателя данных, можно проводить действия уже с разными переменными. MOVX A,@DPTR – 
команда МК семейства MCS-51, предписывающая поместить  
в аккумулятор содержимое ячейки, адрес которой содержится в 
16-разрядном регистре – указателе данных. Символ @ в ассемблере указывает на то, что содержимое ячейки должно интерпретироваться как адрес операнда. 
5. Косвенная адресация, содержимое следующего за кодом команды слова интерпретируется как адрес ячейки памяти, содержащей адрес операнда. Когда содержимое ячейки памяти должно интерпретироваться не как значение (операнд), а как адрес операнда, в 
ассемблере принято кодировать это не только символом @ перед 
адресом, но и заключением адреса в скобки – (12345). Например, 
при выполнении команды с косвенной адресацией ADD A,(addr) 
содержимое ячейки с адресом addr будет интерпретироваться как 
адрес операнда. По сути, оба обозначения @ и ( ) сходны. Здесь 
также можно работать с разными переменными процесса. 
6. Все остальные методы приведем кратко, так как для МК рассматриваемого семейства их не применяют, поскольку они полезны для обработки больших массивов информации и матричных 
действий. Косвенная с поставтоинкрементом ADD A, (addr)+ и 
косвенная с предавтоинкрементом ADD A,+(addr) увеличивают 
8 


содержимое ячейки (addr) на единицу после операции или до ее 
проведения. Существуют подобные операции и для уменьшения – 
автодекремент. 
Регистр-указатель стека SP (Stack Pounter) указывает на вершину стека микропроцессора. Стековый механизм передачи управления настолько широко используется в микропроцессорах, что для 
его реализации предусмотрен специальный регистр. При переходе к 
вложенной подпрограмме (исполнению команды CALL addr) или 
при обработке прерывания содержимое регистра-указателя стека SP 
увеличивается, и значение счетчика команд РС (адрес следующего 
кода команды, подлежащей исполнению) записывается в вершину 
стека, затем в РС заносится addr. При возврате из подпрограммы 
отрабатывается команда возврата Return. В разных ассемблерах она 
кодируется символами RET, RTI и т. п. По этой команде из вершины стека восстанавливается значение счетчика команд, хранившееся 
в нем до перехода к подпрограмме. 
Регистры общего назначения (РОН) служат обычно для хранения результатов промежуточных вычислений. Команды обращения 
к ним выполняются быстрее, чем обращение к оперативной памяти, 
и занимают меньший объем. Во многих микропроцессорах эти регистры достаточно универсальны и могут выполнять функции вышеперечисленных. Так, в микропроцессорах серии 1801 универсальность РОН полная, специализирован только регистр PSW. 
Для реакции микропроцессора на внешние события предусмотрен механизм прерываний, который сообщает микропроцессору об их возникновении, а микропроцессор в свою очередь запускает подпрограмму обслуживания прерывания как реакцию на 
произошедшее событие. Например, если координатный стол дошел до упора (конечного выключателя), двигатель нужно реверсировать и т. д. Событий, важных для работы системы, может быть 
много и для каждого требуется запускать собственную подпрограмму обслуживания. 
Существует векторная и автовекторная организации прерываний. При автовекторной организации для каждого события, точнее внешнего устройства, фиксирующего эти события, предусмотрена своя линия запроса прерывания INT_n (INTerrupt). Внешнее 
устройство, запрашивающее прерывание INT_n, выставляет на эту 
линию активный (обычно низкий) уровень. Микропроцессор, обнаружив на своем выводе INT_n активный уровень, осуществляет 
следующие действия: 
9 


1) заканчивает очередную команду; 
2) заносит содержимое счетчика команд в стек (в некоторых типах микропроцессоров в стек при прерываниях заносится и PSW); 
3) устанавливает на счетчике команд число, соответствующее 
активной линии прерывания, – адрес вектора прерывания; 
4) обращается к ячейке памяти, адрес которой равен вектору 
прерываний, и из нее и ряда последующих ячеек памяти считывает 
адрес входа в подпрограмму обслуживания возникшего прерывания (адрес первой команды кода подпрограммы); 
5) выполняет подпрограмму обслуживания, заканчивающуюся 
командой возврата из прерывания (обычно в разных ассемблерах 
она кодируется RETI или RTI); 
6) встретив команду возврата из прерывания, микропроцессор 
заносит в свои РС и PSW сохраненные в стеке значения и возвращается к тому месту программного кода, где был до возникновения прерывания. 
Стековый механизм гарантирует правильный возврат, если 
прерывание возникло, когда микропроцессор работал не в основной программе, а в какой-либо подпрограмме или даже обслуживал другое менее приоритетное прерывание. 
Как поступить, когда одновременно обнаружено несколько 
прерываний, ведь фиксация прерываний осуществляется обычно 
на каком-либо такте выполнения очередной команды и поступление нескольких прерываний одновременно вполне возможно? Для 
разрешения таких конфликтов предусмотрен механизм приоритетов линий. Как правило, чем меньше значение вектора прерываний, тем прерывание важнее и выше приоритет автовекторной линии запроса. В первую очередь обслуживается прерывание с более 
высоким приоритетом, и все прерывания с меньшим приоритетом 
откладываются и не могут прервать обслуживание. Но если во 
время обслуживания какого-либо прерывания пройдет запрос по 
линии с высшим приоритетом, будет выполнен описанный выше 
цикл, и стековый механизм обеспечит правильный возврат. 
При векторной организации прерывания линия запроса INT 
обычно одна, но предусмотрена линия подтверждения прерывания 
INTE (Interrupt Enable).  
Микропроцессор, получив запрос, работает по следующему алгоритму: 
1) заканчивает очередную команду; 
2) заносит содержимое счетчика команд в стек; 
10 


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