
- •Основные понятия и определения микропроцессорной техники: микропроцессор, микропроцессорная система, микроконтроллер. Принципы построения микропроцессорных систем.
- •Архитектура микропроцессора: архитектура со сложной системой команд (cisc-процессоры), архитектура с упрощенной системой команд (risc-процессоры). Принстонская и гарвардская архитектуры.
- •3. Структура микропроцессорной системы и основные режимы ее работы – выполнение основной программы, обслуживание прерываний, прямой доступ к памяти.
- •4. Модуль процессора микропроцессорной системы. Состав модуля – операционный блок, блок управления, интерфейсный блок. Выполняемые функции.
- •5. Модуль памяти мпс. Выполняемые функции. Основные характеристики. Типы микросхем, применяемых для построения постоянной и оперативной памяти микропроцессорных систем.
- •6. Реализация обмена данными между внешними устройствами и микропроцессорной системой (мпс). Модуль ввода/вывода мпс, выполняемые функции, функциональная схема устройства ввода/вывода.
- •7. Понятие о системе команд микропроцессоров. Основные группы команд. Способы адресации операндов в микропроцессорах.
- •Форматы команд
- •Способы адресации операндов и команд
- •Адресация операндов
- •Адресация команд
- •Группы команд микропроцессора
- •8. Классификация и структура микроконтроллеров (мк). Процессорное ядро мк, его основные характеристики.
- •9. Типы памяти микроконтроллеров: память программ, память данных, регистры, внешняя память.
- •Память программ
- •Память данных
- •Регистры мк
- •Внешняя память
- •10. Порты ввода/вывода: назначение, основные типы. Таймеры микроконтроллеров: назначение, внутренняя структура.
- •Таймеры микроконтроллеров
- •12. Интерфейсы микропроцессорных систем, классификация и принципы построения
- •14. Последовательные асинхронные интерфейсы: rs-232, rs-422, rs-485, ирпс (интерфейс радиальный последовательный). Назначение, форматы передачи данных, основные технические характеристики.
- •15. Последовательные синхронные интерфейсы: spi (Synhronous Peripheral Interface), i2c (Inter Integrated Circuit). Назначение, форматы передачи данных, основные технические характеристики.
- •Интерфейсная шина i2c
- •16. Однокристальные микроконтроллеры семейства mcs-51: состав и общая характеристика. Структурная организация: регистры, память данных и программ.
- •17. Однокристальные микроконтроллеры семейства mcs-51: порты ввода/вывода, таймеры/счетчики, последовательный порт, система прерываний. Назначение, основные особенности.
- •18. Работа микроконтроллеров семейства mcs-51 в автономном режиме, способы подключения внешней памяти программ и данных.
- •21. Микроконтроллеры подсемейства pic18: общая характеристика, особенности архитектуры и системы команд.
- •Организация памяти
- •Система прерывания
- •Порты ввода/вывода
- •Генератор тактовых импульсов
- •Система команд pic18
- •Основные этапы разработки микроконтроллерных систем
- •Разработка и автономная отладка аппаратных средств мкс
- •Разработка и отладка программного обеспечения
- •23. Язык Ассемблер для микроконтроллеров семейства mcs-51: назначение, структура полей предложений на языке Ассемблер, директивы Ассемблера.
- •Поля предложения на языке Ассемблер
- •Примеры
- •Директивы Ассемблера
- •Метка Операция Операнды Комментарий
- •Метка Операция Операнды Комментарий
- •Опрос двоичного датчика
- •Ожидание события
- •Формирование временной задержки
- •Формирование управляющих сигналов из мк
- •Защита от дребезга контактов
- •25. Методы ввода информации с клавиатуры для микроконтроллеров семейства mcs-51: виды клавиатур, схема подключения контактов клавиатур к микроконтроллеру, методы опроса клавиатуры.
- •Описание микроконтроллерного устройства
- •Создание исходного файла базовой программы
- •Включение и выключение светодиода. Чтобы подать логическую единицу на вывод rb0 (для включения светодиода) необходимо в нулевой бит регистра portb записать 1:
- •Опрос переключателя. Ниже приведен текст программы, которая по нажатию клавиши sa1 включает светодиод vd1, а при ее отпускании светодиод гаснет.
- •Представление информации в языке Си
- •Операции и выражения в Си
- •Операторы управления вычислительным процессом
- •Функции
18. Работа микроконтроллеров семейства mcs-51 в автономном режиме, способы подключения внешней памяти программ и данных.
Для работы микроконтроллеров семейства MCS-51 необходимо:
1) подключить времязадающую цепь для работы внутреннего тактового генератора;
2) обеспечить сброс при включении электропитания;
3) подключить память программ (внутреннюю или внешнюю).
На рис. 18.1 приведена типовая схема подключения микроконтроллера KМ1816BE751, имеющего внутреннюю память программ объемом 4 Кбайт.
Для обеспечения генерации тактовой частоты fCLK к выводам XTAL1 и XTAL2 подключен кварцевый резонатор ZQ1. Частота резонатора fZQ выбирается из условия fZQ = fCLK и должна быть в диапазоне 4…12 МГц. Конденсаторы С2, С3 служат для обеспечения запуска внутреннего генератора. Цепочка С1, R1 обеспечивает сброс МК при подаче электропитания. С помощью кнопки SB1 сброс МК может выполнить оператор в любой момент времени. На вывод EA подан высокий уровень, что разрешает работу внутренней памяти программ. Конденсатор С4 служит для фильтрации высокочастотных помех, возникающих на выводах источника питания при работе микросхемы.
К выводам порта Р0 присоединены «подтягивающие» резисторы R2-R9, которые обеспечивают ток для входов микросхем ТТЛ, подключенных к этому порту, при высоком логическом уровне, когда все линии Р0 находятся в Z-состоянии. Порты Р1, Р2, Р3 имеют внутренние «подтягивающие» резисторы.
Рис. 18.1. Схема подключения МК с внутренней памятью программ
В микроконтроллерных системах, построенных на основе МК семейства MCS-51, возможно использование двух типов внешней памяти: внешней памяти программ (ВПП) и внешней памяти данных (ВПД).
Доступ к внешней памяти
программ. При обращении
к ВПП всегда используется 16-разрядный
адрес, младший байт которого выдается
в порт P0,
а старший – в порт P2.
При этом байт адреса, выдаваемый через
порт P0,
должен быть зафиксирован во внешнем
регистре по спаду сигнала ALE,
так как в дальнейшем линии порта P0
используются в качестве шины данных,
по которой байт из ВПП вводится в МК.
Чтение из ВПП стробируется сигналом
,
который формирует
МК.
Доступ к внешней памяти данных. В МК 8051 предусмотрена возможность расширения памяти данных путем подключения микросхем ОЗУ емкостью до 64 Кбайт. При этом обращение к ВПД возможно только с помощью команд MOVX.
Команды MOVX @Ri,A и MOVX A,@Ri, где условно обозначено Ri – это регистры R0 или R1, формируют 8-разрядный адрес, выдаваемый через порт P0. Команды MOV @DPTR,A и MOV @A,DPTR формируют 16-разрядный адрес, младший байт которого выдается через порт P0, а старший – через порт P2.
Байт адреса, выдаваемый через порт P0, должен быть зафиксирован во внешнем регистре по спаду сигнала ALE, так как линии порта P0 используются как шина данных, через которую байт данных принимается из ВПД или выдается в ВПД при записи. При этом чтение стробируется сигналом , а запись – сигналом , которые формируются на линиях P3.7 и P3.6 при выполнении портом P3 альтернативных функций. При работе с внутренней памятью данных сигналы и не формируются.
Следует отметить, что при подключении внешней памяти резко сокращается число линий портов, которые можно использовать для ввода/вывода данных. Так, при работе с ВПП полностью исключаются порты P0 и P2. При работе с ВПД занят порт P0 и линии порта P2, которые используются для адресации ВПД.
19. Однокристальные микроконтроллеры семейства PIC (Peripheral Interface Controller): состав и общая характеристика. Микроконтроллер PIC16F84: общая характеристика, внутренняя структура, назначение выводов.
Микроконтроллеры семейств PIC (Peripheral Interface Controller) компании Microchip объединяют все передовые технологии микроконтроллеров: электрически программируемые пользователем ППЗУ, минимальное энергопотребление, высокую производительность, хорошо развитую RISC-архитектуру, функциональную законченность и минимальные размеры. Широкая номенклатура изделий обеспечивает использование микроконтроллеров в устройствах, предназначенных для разнообразных сфер применения.
В настоящее время компания Microchip выпускает пять основных семейств 8-разрядных RISC-микроконтроллеров, совместимых снизу вверх по программному коду:
PIC12CXXX – семейство микроконтроллеров, выпускаемых в миниатюрном 8-выводном исполнении. Эти микроконтроллеры выпускаются как с 12-разрядной (33 команды), так и с 14-разрядной (35 команд) системой команд. Содержат встроенный тактовый генератор, таймер/счетчик, сторожевой таймер, схему управления прерываниями. В составе семейства есть микроконтроллеры со встроенным 8-разрядным четырехканальным АЦП. Способны работать при напряжении питания до 2,5 В;
PIC16C5X – базовое семейство микроконтроллеров с 12-разрядными командами (33 команды), выпускаемое в 18-, 20- и 28-выводных корпусах. Представляют собой простые недорогие микроконтроллеры с минимальной периферией. Способность работать при малом напряжении питания (до 2 В) делает их удобными для применения в переносных конструкциях;
PIC16CXXX – семейство микроконтроллеров среднего уровня с 14-разрядными командами (35 команд). Наиболее многочисленное семейство, объединяющее микроконтроллеры с разнообразными периферийными устройствами, в число которых входят аналоговые компараторы, аналогово-цифровые преобразователи, контроллеры последовательных интерфейсов SPI, USART и I2C, таймеры/счетчики, модули захвата/сравнения, широтно-импульсные модуляторы, сторожевые таймеры, супервизорные схемы и так далее;
PIC17CXXX – семейство высокопроизводительных микроконтроллеров с расширенной системой команд 16-разрядного формата (58 команд), работающие на частоте до 33 МГц, с объемом памяти программ до 16 Кслов. Кроме обширной периферии, 16-уровневого аппаратного стека и векторной системы прерываний, почти все микроконтроллеры этого семейства имеют встроенный аппаратный умножитель 8х8, выполняющий операцию умножения за один машинный цикл.
PIC18CXXX – семейство высокопроизводительных микроконтроллеров с расширенной системой команд 16-разрядного формата (75 команд) и встроенным 10-разрядным АЦП, работающие на частоте до 40 МГц. Содержат 31-уровневый аппаратный стек, встроенную память команд до 32 Кслов и способны адресовать до 4 Кбайт памяти данных и до 2 Мбайт внешней памяти программ. Расширенное RISC-ядро микроконтроллеров данного семейства оптимизировано под использование нового Си-компилятора.
Большинство PIC-контроллеров выпускаются с однократно программируемой памятью программ (OTP-ROM), с возможностью внутрисхемного программирования или масочным ПЗУ. Для целей отладки предлагаются более дорогие версии с ультрафиолетовым стиранием и Flash-памятью. Полный список выпускаемых модификаций PIC-контроллеров включает порядка пятисот наименований. Поэтому продукция компании перекрывает почти весь диапазон применений 8-разрядных микроконтроллеров.
Наиболее распространенными семействами PIC-контроллеров являются PIC16CXXX и PIC18CXXX.
Типичным представителем микроконтроллеров семейства PIC16CXXX является PIC16F84, который в настоящее время выпускается с маркировкой PIC16F84A.
Микроконтроллер PIC16F84A имеет Гарвардскую архитектуру с RISC-процессором и обладает следующими основными характеристиками:
используются только 35 простых команд;
рабочая частота от 0 до 10 МГц;
1024 × 14 бит память программ, выполненная на основе электрически перепрограммируемой флэш-памяти;
15 восьмиразрядных регистров специальных функций (РСФ);
восьмиуровневый аппаратный стек;
68 восьмиразрядных регистров общего назначения (РОН);
четыре источника прерывания: внешний вход RB0/INT, переполнение таймера TMR0, изменение сигналов на линиях порта B, завершение записи данных в память EEPROM;
64 × 8 бит электрически перепрограммируемая EEPROM память данных;
8-битный таймер/счетчик TMR0 с 8-битным программируемым предварительным делителем.
Микроконтроллер PIC16F84A обладает развитыми возможностями ввода/вывода:
13 линий ввода/вывода с индивидуальной установкой направления обмена;
высокий ток, достаточный для управления светодиодами (максимальный втекающий ток – 25 мА, максимальный вытекающий – 20 мА).
Специализированные микроконтроллерные функции включают следующие возможности:
автоматический сброс при включении (Power-on-Reset);
таймер включения при сбросе (Power-up-Timer);
таймер запуска генератора (Oscillator Start-up Timer);
сторожевой (Watchdog) таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность;
EEPROM бит секретности для защиты кода;
экономичный режим SLEEP;
выбираемые пользователем биты для установки режима возбуждения встроенного генератора;
встроенное устройство для программирования Flash/EEPROM памяти программ и данных с использованием только двух выводов.
КМОП технология обеспечивает PIC16F84A дополнительные преимущества:
статический принцип работы;
широкий диапазон напряжений питания: от 2,0 до 6,0 В;
низкое энергопотребление: менее 2 мА при 5 В и 4 МГц, менее 1 мкА для SLEEP-режима при 2 В.
Архитектура PIC16F84A основана на принципе раздельных шин и областей памяти для данных и команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит, что обеспечивает выборку 14-разрядной команды за один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один машинный цикл, исключая команды переходов.
Микроконтроллер содержит 8-разрядное АЛУ и рабочий регистр W. АЛУ может выполнять операции сложения, вычитания, сдвига и логические операции. В зависимости от результата операции АЛУ может изменять значения битов регистра STATUS (флагов): переноса C (Carry), десятичного переноса DC (Digit carry) и нуля Z (Zero).
Микроконтроллер PIC16F84A выпускается в 18-выводном пластмассовом корпусе типа DIP-18. Его условное графическое обозначение на схемах имеет следующий вид:
Назначение выводов следующее:
OSC1/CLKIN – вход кристалла генератора, RC-цепочки или вход внешнего тактового сигнала.
OSC2/CLKOUT – выход кристалла генератора. В RC-режиме – выход ¼ частоты генератора.
- сигнал сброса микроконтроллера.
RA0, RA1, RA2, RA3, RA4 – двунаправленные выводы порта PORTA. Вывод RA4/T0CKI может иметь альтернативную функцию: тактовый вход таймера/счетчика TMR0.
RB0 – RB7 – двунаправленные выводы порта PORTB. Вывод RB0/INT может иметь альтернативную функцию: вход внешнего запроса прерывания.
UDD – положительное напряжение питания.
USS – общий провод (земля).
20. Микроконтроллер PIC16F84: организация модулей памяти программ и данных, портов ввода/вывода, таймера, памяти данных в репрограммируемом постоянном запоминающем устройстве (РПЗУ, EEPROM), системы прерываний. Назначение модулей, основные особенности.
Память программ. В PIC16F84A команды имеют 14 разрядов и хранятся во флэш-памяти. Ячейки памяти также имеют 14 разрядов и образуют слово. Объем памяти составляет 1 К (1024) слов. Изменение содержимого памяти программ возможно только при помощи внешнего программатора.
При сбросе МК сигналом низкого уровня на выводе MCLR (Master Clear) происходит сброс в нуль счетчика команд PC, и после окончания сигнала MCLR дальнейшее выполнение команд программы производится с адреса 000h. Так как программа находится в энергонезависимой памяти, при отключении питания ее стирание не происходит.
Память данных. Память данных (ПД) PIC16F84A представляет собой 8-разрядные ячейки ОЗУ, которые по терминологии фирмы Microchip называются регистрами. ПД по выполняемым функциям состоит из двух областей. Первые 12 адресов – это область регистров специальных функций (РСФ), а вторая – область регистров общего назначения (РОН). При выключении питания данные, находящиеся в регистрах ПД, уничтожаются.
В PIC16F84A все регистры распределены по двум банкам, которые имеют нумерацию 0 и 1. В каждый момент времени программе доступен только один регистровый банк. Переключение между банками осуществляется при помощи 5-го бита с именем RP0 из регистра состояния STATUS. При сбросе этого бита в 0 доступен банк 0, при установке бита в 1 – банк 1. Наиболее часто используемые РСФ находятся в банке 0. Некоторые из РСФ присутствуют в обоих банках. Регистры РОН, а их всего 68, продублированы в обоих банках. После сброса МК автоматически выбирается регистровый банк 0.
Наиболее часто в программах используются следующие регистры специального назначения:
регистр статуса STATUS содержит флаги АЛУ, состояния контроллера при сбросе и биты выбора банков ПД;
регистр конфигурации OPTION содержит управляющие биты для конфигурации предварительного делителя (предделителя), внешних прерываний, таймера, а также подтягивающих резисторов (pull-up) на выводах порта В;
регистр условий прерывания INTCON содержит управляющие биты для всех источников прерываний.
Память данных в РПЗУ (EEPROM). В PIC16F84A имеется энергонезависимая память для хранения данных, которая организована в репрограммируемом ПЗУ (EEPROM). Эту память можно использовать для данных, которые необходимо сохранить при выключении МК, а также неоперативных данных: настроечных параметров, изменяемых констант, и даже текстов. Эта память содержит 64 восьмиразрядных ячеек, которые стираются и перепрограммируются электрическими сигналами.
Доступ к памяти данных в РПЗУ осуществляется с помощью регистров специальных функций: EEADR содержит адрес ячейки, EEDATA – данные для записи или чтения. Для управления процессом чтения/записи используются регистры EECON1 и EECON2.
Порты ввода/вывода. МК PIC16F84A имеет 13 выводов (линий), каждый из которых может быть сконфигурирован (программно настроен) на ввод или вывод данных. На рис. 20.1 приведена упрощенная функциональная схема одной линии порта. В каждой линии имеется триггер данных, входящий в регистр данных порта PORT; триггер направления передачи данных, входящий в регистр направления TRIS; выходной буфер OBF; буфер чтения вывода порта IBF. Буферы OBF и IBF имеют выходы с тремя состояниями. Управление состоянием выходов выполняется с помощью сигналов на входах EN. При EN = 1 выходы буферов находятся в активном режиме и передают логические “1” или “0” со входов. При EN = 0 находятся в отключенном Z-состоянии. Управление буфером OBF выполняется от триггера TRIS. Когда в триггере записан “0”, высокий уровень с инверсного выхода триггера поступает на управляющий вывод EN буфера OBF и переводит его выход в активный режим. Информация, записанная в триггере данных PORT (“0” или “1”), поступает на выход линии порта. Когда в триггере TRIS записана “1”, на выводе EN будет “0”, и выход буфера OBF переходит в Z-состояние, т.е. отключается от вывода порта. Логическое состояние на выводе порта в этом случае может быть прочитано с помощью буфера IBF, который открывается командой чтения выводов порта. Буфер IBF открывается кратковременно только на момент чтения выводов порта. В остальное время выход IBF находится в Z-состоянии и не влияет на шину данных МК. Таким образом, для настройки линии порта на вывод в соответствующий разряд регистра TRIS надо записать 0, а для настройки линии на ввод – записать 1.
Выводы распределены между двумя портами МК: пять выводов порта А (RA0-RA4) и восемь выводов порта В (RB0-RB7). Выбор состояния вывода (вход или выход) определяется регистрами TRISA и TRISB. После сброса МК автоматически все линии портов настроены на ввод. Для изменения настройки необходимо в регистры направления загрузить соответствующую информацию. Пример настройки линий порта В: линии RB0-RB3 – на вывод, линии RB4-RB7 – на ввод:
movlw b’11110000’ ; загрузить в регистр W двоичное число 11110000
movwf TRISB ; переслать содержимое W в регистр TRISB
Некоторые выводы портов обладают специальными функциями. Так, будучи настроенными на ввод линии RB0 и RB4-RB7 могут активизировать прерывания. Вывод RA4 порта А может служить входом подключения внешнего генератора для подсчета числа импульсов с помощью TMR0. Особенностью линий порта В является возможность программного подключения к его выводам, настроенным на ввод, внутренних “подтягивающих” резисторов сопротивлением приблизительно 50 кОм. Возможность такого подключения упрощает взаимодействие с клавиатурой и исключает необходимость в использовании внешнего резистора.
Рис. 20.1. Функциональная схема линии порта МК
Модуль таймера. В PIC16F84A имеется 8-разрядный регистр, называемый таймером/счетчиком TMR0, который предназначен для генерирования сигнала переполнения при переходе содержимого регистра из FFh в 0. TMR0 широко используется для точного счета времени или внешних событий.
В режиме таймера регистр TMR0 подключен к внутреннему тактовому генератору МК. Инкремент регистра происходит с частотой, равной ¼ тактовой. Так как тактовая частота МК известна и стабильна, то содержимое регистра будет пропорционально текущему времени. В момент переполнения содержимого TMR0 происходит установка в 1 бита T0IF (флага прерывания) в регистре INTCON. Если прерывание от TMR0 разрешено, то этот бит вызывает прерывание выполнения программы и переход на подпрограмму обработки прерывания. Для получения отсчетов времени большой длительности на вход TMR0 может быть подключен программируемый предварительный делитель, коэффициенты которого устанавливаются с помощью регистра OPTION.
В режиме счетчика TMR0 производит подсчет импульсов, подаваемых на линию порта RA4, настроенную на ввод. В режиме счетчика также можно использовать предварительный делитель.
Система прерываний МК. PIC16F84A имеет четыре источника прерываний:
внешнее прерывание с вывода RB0/INT;
прерывание от переполнения таймера/счетчика TMR0;
прерывание от изменения сигналов на линиях RB4-RB7 порта В;
прерывание по окончании записи данных в EEPROM.
Каждому источнику прерывания соответствуют 2 управляющих бита:
флаг прерывания – указывает на то, что выполнено условие возникновения прерывания;
бит разрешения прерывания – разрешает переход по вектору прерывания при установке соответствующего флага.
Разрешение работы системы прерываний выполняет бит общего разрешения GIE, равный 1. Если же бит GIE = 0, то все прерывания запрещены.
Все прерывания в PIC16F84A имеют один и тот же вектор прерывания – адрес 0004h. Когда начинает обрабатываться прерывание, содержимое счетчика команд PC (адрес возврата) посылается в стек, а в PC загружается адрес 0004h – происходит переход на подпрограмму обработки прерывания. Узнать источник прерывания программа может по установленному флагу прерывания.