
- •1. Архитектура семейства mcs51.
- •1.1 Общие характеристики.
- •1.2 Структурная схема.
- •1.3 Назначение выводов микроконтроллера 8051.
- •3.4 Организация памяти.
- •1.4.1 Память программ (пзу).
- •1.4.2 Память данных (озу).
- •1.4.3 Регистры специальных функций.
- •1.4.4 Регистр флагов (psw).
- •1.5 Устройство управления и синхронизации.
- •1.6 Организация портов ввода вывода
- •1.6.1 Общие сведения.
- •1.6.2 Альтернативные функции.
- •1.7 Таймеры / счетчики микроконтроллеров семейства 8051.
- •1.7.1 Регистр режима работы таймера/счетчика tmod
- •1.7.2.Регистр управления/статуса таймера tcon.
- •1.7.3 Режимы работы таймеров-счетчиков.
- •1.8 Последовательный порт.
- •1.9 Регистр управления/статуса приемопередатчика scon.
- •1.9.1 Функциональное назначение бит регистра управления/статуса приемопередатчика scon
- •1.9.2 Скорость приема/передачи информации через последовательный порт.
- •1.9.3 Регистр управления мощностью pcon.
- •1.10 Система прерываний.
- •1.10.1 Регистр масок прерывания (ie).
- •1.10.2 Регистр приоритетов прерываний (ip).
- •1.10.3 Выполнение подпрограммы прерывания.
- •2. Особенности элементов структуры 80c51 gb
- •2 .1 Функциональные особенности кристаллов 8xc51gb
- •3.2 Порты I/o p0-p5
- •Альтернативные функции выводов портов 0-5
- •3.3 Система прерываний 8xc51gb
- •Вектора прерываний
- •Регистр iе
- •Регистр iеа
- •Регистр ip
- •Регистр iрн кристаллов 8xc51gb
- •Регистр ipа кристалла 8xc51gb
- •Регистр iрна кристаллов 8xc51gb
- •Регистр exicon
- •3.4 Узел ацп Функциональная схема ацп
- •Регистр результата сравнения асмр
- •Регистр управления ацп acon
- •3.5 Аппаратный сторожевой таймер
- •3.6 Обнаружение сбоя тактового генератора
- •3.7 Матрица программируемых счётчиков рса
- •Регистр управления рса - ccon
- •Режимы работы модулей сравнения/фиксации
- •16-Битный режим фиксации.
- •16-Битный режим фиксации рса
- •16-Битный режим сравнения: программный таймер и высокоскоростной выход
- •Режим сторожевого таймера
- •Режим широтно-импульсного модулятора
- •Соответствие имён регистров и битов узлов рса и рса1
- •3.8 Расширенный последовательный порт
- •Режимы работы порта sep
- •Регистр управления sepcon
- •Регистр состояния sepstat
- •3.9 Таймеры/счетчики
- •4. Основы программирования mk 8051gb
- •4.1 Программная модель
- •4.2 Типы данных
- •Память данных (озу)
- •4.3 Способы адресации данных
- •4.4 Система команд
- •4.4.1 Общая характеристика
- •4.4.2 Типы команд
- •Типы команд
- •4.4.3 Типы операндов
- •4.4.4 Группы команд
- •4.4.5 Oбозначения, используемые при описании команд
- •4.4.6 Команды пересылки данных микроконтроллера
- •4.4.7 Команды арифметических операций 8051
- •4.4.8 Команды логических операций микроконтроллера 8051
- •4.4.9 Команды операций над битами микроконтроллера 8051
- •4.4.10. Команды передачи управления микроконтроллера 8051
- •5. Язык программирования asm-51.
- •5.1 Отладка программ.
- •5.2 Запись текста программы на языке программирования asm-51.
- •5.3 Алфавит языка.
- •5.4 Идентификаторы.
- •5.5 Числа.
- •5.6 Директивы языка программирования asm-51.
- •5.7 Реализация подпрограмм на языке asm51.
- •5.7.1 Реализация подпрограмм-процедур на языке asm51.
- •5.7.2 Передача переменных-параметров в подпрограмму.
- •5.7.3 Реализация подпрограмм-функций на языке asm51.
- •5.7.4 Реализация подпрограмм обработки прерываний на языке asm51.
- •5.8 Структурное программирование на языке asm-51.
- •5.9 Многомодульные программы.
- •5.10 Использование сегментов в языке программирования ассемблер.
- •5.10.1 Абсолютные сегменты памяти.
- •5.10.2 Перемещаемые сегменты памяти.
- •6. Язык программирования с-51.
- •6.1 Применение.
- •6.2 Отладка программ.
- •6.3 Структура программ с-51.
- •6.4. Символы языка программирования с-51.
- •6.4.1 Лексические единицы, разделители и использование пробелов.
- •6.4.2 Идентификаторы.
- •6.4.3 Ключевые слова.
- •6.4.4 Константы.
- •6.5 Выражения в операторах языка программирования c-51.
- •6.6 Приоритеты выполнения операций.
- •6.7 Операторы языка программирования c-51.
- •6.7.1 Операторы объявления.
- •6.7.2 Исполняемые операторы.
- •6.7.3 Оператор присваивания.
- •6.7.4 Условный оператор.
- •6.7.5 Структурный оператор {}.
- •6.7.6 Оператор цикла for.
- •6.7.7 Оператор цикла с проверкой условия до тела цикла while.
- •6.7.8 Оператор цикла с проверкой условия после тела цикла do while.
- •6.7.9 Оператор break.
- •6.7.10 Оператор continue.
- •6.7.11 Оператор выбора switch.
- •6.7.12 Оператор безусловного перехода goto.
- •6.7.13 Оператор выражение.
- •6.7.14 Оператор возвращения из подпрограммы return.
- •6.7.15 Пустой оператор.
- •6.8 Объявление переменных в языке программирования c-51.
- •6.8.1 Категории типов данных.
- •6.8.2 Целые типы данных.
- •6.8.3 Числа с плавающей запятой.
- •6.8.4 Переменные перечислимого типа.
- •6.9 Объявление массивов в языке программирования c-51.
- •6.10 Структуры.
- •6.10.1 Поля битов.
- •6.11 Объединения (смеси).
- •6.12 Объявление указателей в языке программирования c-51.
- •6.12.1 Нетипизированные указатели.
- •6.12.2 Память зависимые указатели.
- •6.13. Объявление новых типов переменных.
- •6.14. Инициализация данных.
- •6.15. Использование подпрограмм в языке программирования с-51.
- •6.15.1 Определение подпрограмм.
- •6.15.2 Параметры подпрограмм.
- •6.15.3 Предварительное объявление подпрограмм.
- •6.15.4 Вызов подпрограмм.
- •6.15.5 Рекурсивный вызов подпрограмм.
- •6.15.6 Подпрограммы обработки прерываний.
- •6.15.7 Области действия переменных и подпрограмм.
- •6.16. Многомодульные программы.
- •7. Подготовка программ
- •7.1 Пример создания проекта на языке ассемблера для учебного контроллера в интегрированной среде разработки Keil μVision2.
- •7.2 Пример создания проекта на языке c для учебного контроллера в интегрированной среде разработки Keil μVision2.
- •8. Описание стенда
- •8.1. Структура контроллера
- •8.2 Структура по
- •8.3 Адресное пространство
- •8.4 Внешняя память
- •8.5 Внутренняя память данных
- •8.6 Регистры специальных функций
- •Передняя панель
- •Задняя панель
- •9. Лабораторные работы мк-51
- •10. Отчет по лабораторной работе
- •1. Введение
- •2. Архитектура семейства mcs51.
- •3. Особенности элементов структуры 80c51 gb
- •4. Основы программирования mk 8051gb
- •5. Язык программирования asm-51.
- •6. Язык программирования с-51.
- •7. Подготовка программ
- •8. Описание стенда
- •9. Лабораторные работы мк-51
- •10. Отчет по лабораторной работе
3.6 Обнаружение сбоя тактового генератора
Цепь обнаружения сбоя тактового генератора - OFD - предназначена для осуществления сброса микроконтроллера, если частота тактового генератора становится ниже предела, отражённого в разделе "Технические характеристики". В случае невосстановления тактовой частоты при сбросе микросхема остаётся в этом состоянии. Превышение частоты сверх установленных границ не приводит к сбросу микроконтроллера.
Цепь OFD включается по умолчанию при аппаратном сбросе микросхемы или её выходе из режима микропотребления по сбросу или внешнему прерыванию. OFD предназначена для обнаружения серьёзных сбоев тактового генератора, как, например, повреждение кварцевого резонатора и не может определить скачкообразное изменение частоты в пределах нормального диапазона.
В режиме микропотребления тактовый генератор остановлен. Поэтому для предупреждения самопроизвольного перезапуска микросхемы необходимо запретить работу цепи OFD перед установкой бита PD. Запись последовательности 0E1h,01Eh в регистр OSCR (физический адрес - A5h) приведёт к отключению обнаружения сбоев тактового генератора. Разрешить работу цепи заново можно лишь общим сбросом, либо выходом из режима микропотребления по внешнему прерыванию.
Состояние OFD может быть определено путём чтения регистра OSCR. При OSCR=0FFh -обнаружение сбоев разрешено, при OSCR=0FEh - запрещено.
3.7 Матрица программируемых счётчиков рса
В составе микросхемы 8XC51GB, имеется матрица программируемых счётчиков. Основной отличительной чертой микроконтроллеров типа 8XC51FX, 8XL51FX и более поздних от базового кристалла 8Х51 является наличие матрицы программируемых счётчиков или РСА. Данная многофункциональная структура предназначена для выполнения целого спектра операций с применением таймеров/счётчиков и позволяет увеличить производительность CPU за счёт минимизации числа обращений к нему по сравнению с такими кристаллами, как 8Х51, 8Х52 и т.п. По этому же удается уменьшить объём и сложность необходимого программного обеспечения.
Матрица программируемых счётчиков
РСА состоит из 1-го таймера/счётчика и 5-ти 16-битных модулей фиксации/сравнения, изображённых на Таймер/счётчик является общим для всех модулей, а также единственным, который может ими использоваться. Входной синап может подаваться на него с одного от следующих источников:
• Fclc/12;
• Fclc/4;
• Сигнал переполнения Т/СО;
• * Внешний вывод ECI (Р1.2).
Каждый модуль фиксации/сравнения может быть запрограммирован на один из следующих режимов:
• фиксация увеличения и/или уменьшения кромки;
• программный таймер;
• высокоскоростной выход;
• сторожевой таймер (только для модуля 4);
• широтно-импульсный модулятор.
Когда модуль сравнения/фиксации запрограммирован на режим фиксации, программного таймера или высокоскоростного выхода, возможна генерация соответствующего ему прерывания. Все 5 модулей и таймер/счётчик разделяют один и тот же вектор – 0033h, описанный несколько ниже. Для ввода/вывода таймер/счётчик и модули сравнения/фиксации используют выводы порта 1, как показано в таблице. Если соответствующий модуль не задействован, то вывод порта используется по своему прямому назначению.
Использование порта 1 для РСА
-
компонент РСА
вывод порта 1
16-битный счётчик
Р1.2/ЕС1
16-битный модуль 0
Р1.3/СЕХО
16-битный модуль 0
Р1.4/СЕХ1
16-битный модуль 0
Р1.5/СЕХ2
16-битный модуль 0
Р1.6/СЕХЗ
16-битный модуль 0
Р1.7/СЕХ4
16-разрядный таймер/счётчик РСА (рис. 6.3) состоит из регистров СН и CL (соответственно старший и младший байты счётчика). Эти 2 регистра постоянно доступны для чтения и записи. Как говорилось выше, тактовый сигнал может поступать от одного из следующих источников:
• Fclc/12 (Режим 0) - регистр CL инкрементируется в фазе SSP2 каждый машинный цикл (при тактовой частоте 16 Mhz период инкремента составляет 750 ns);
• Fclc/4 (Режим 1) - регистр CL инкрементируется в фазах S1P2, S3P2 и SSP2 каждый машинный цикл (при тактовой частоте 16 Mhz период инкремента составляет 250 ns);
• Сигнал переполнения Т/С0 (Режим 2) - регистр CL инкрементируется в фазе SSP2 при переполнении таймера 0. Этот режим позволяет программировать входную частоту РСА;
• Внешний вывод ЕС1 (Р1.2) (Режим 3) - регистр CL инкрементируется при каждом отрицательном перепаде (из "1" в "0") на выводе ECI (Р1.2). Проверка данного вывода производится в фазах S1P2, S3P2 и SSP2 машинного цикла. Таким образом, максимальная частота по входу ECI может составлять. Fosc/8.
Старший байт счётчика (регистр СН) инкрементируется спустя 2 периода тактового генератора после переполнения младшего бита (CL).
Регистр режима счётчика РСА (CMOD)
Содержит биты выбора источника входного сигнала таймера/счётчика CPS1 и CPS0, бит разрешения прерывания по переполнению счётчика ECF, а также биты CIDL - отключения таймер/счётчика во время режима холостого хода и WDTE (Watchdog Timer Enable) - разрешение сторожевого таймера для модуля 4. На рис.6.4 эти биты описаны более подробно. Байтный адрес данного регистра - 0D9h, значение по сбросу - 00ххх000b.
Регистр режима РСА – CMOD
MSB LSB
-
CIDL
WDTE
-
-
-
CPS1
CPS0
ECF
Бит |
Поз. |
Функция присвоения приоритета прерывания |
CIDL |
CMOD.7 |
CIDL=0 – продолжение нормального фунгкционирования счётчика РСА во время режима Idle CIDL=1 - счёт во время режима Idle прекращается |
WDTE |
CMOD.6 |
WDTE=0 - запрет функции "сторожевой таймер" РСА-модуля 4 WDTE=1 - разрешение функции "сторожевой таймер" |
- |
CMOD.5 |
Зарезервировано для дальнейшего использования |
- |
CMOD.4 |
Зарезервировано для дальнейшего использования |
- |
CMOD.3 |
Зарезервировано для дальнейшего использования |
CPS1 |
CMOD.2 |
Выбор источника тактирования РСА, ,бит 1 |
CPS0 |
CMOD.1 |
Выбор источника тактирования РСА, .бит 0 |
ECF |
CMOD.0 |
Разрешение прерывания по переполнению счётчика РСА: ECF=1 - установка бита CF регистра CCON разрешена ECF=0 - запрещена. |
Регистр управления счётчика РСА (CON)
Содержит 2 бита, связанные с таймером/счётчиком РСА. Бит CF - устанавливается аппаратно - по переполнению счётчика. Бит CR включает или выключает счётчик. Остальные 5 бит данного регистра - флаги событий модулей сравнения/фиксации РСА. На рис. 6.5 эти биты описаны более подробно. Байтный адрес данного регистра - 0D8h, значение по сбросу - 00х00000b.
MSB LSB
-
CF
CR
-
CCF4
CCF3
CCF2
CCF1
CCF0
Бит |
Поз. |
Функция присвоения приоритета прерывания |
CF |
CMOD.7 |
Флаг переполнения счётчика РСА. Устанавл. аппаратно и вызывает прерывание в случае, если бит ECF регистра CMOD установлен в 1. Может устанавл. в 1 как аппаратно, так и программно, а очищаться - только программно. |
CR |
CMOD.6 |
Бит управления включением счётчика РСА: CR=1 - счётчик включён, CR=0 –выключен |
- |
CMOD.5 |
Зарезервировано для дальнейшего использования |
CCF4 |
CMOD.4 |
Флаг прерывания модуля 4 РСА. Устанавл. аппаратно по равенству и фиксации значения. Очищается программно. |
CCF3 |
CMOD.3 |
Флаг прерывания модуля 3 РСА |
CCF2 |
CMOD.2 |
Флаг прерывания модуля 2 РСА |
CCF1 |
CMOD.1 |
Флаг прерывания модуля 1 РСА |
CCF0 |
CMOD.0 |
Флаг прерывания модуля 0 РСА |
Модули сравнения/фиксации.
Каждый из 5 модулей сравнения/фиксации может быть запрограммирован на выполнение одной из 6-ти функций:
• 16-битная фиксация, запускаемая по положительному фронту;
• 16-битная фиксация, запускаемая по отрицательному фронту;
• 16-битная фиксация, запускаемая по положительному и отрицательному фронту;
• 16-битный программный таймер;
• 16-битный высокоскоростной выход;
• 8-битный широтно-импульсный модулятор.
Дополнительно модуль 4 может использоваться как сторожевой таймер. Все модули могут быть запрограммированы в любых комбинациях вышеперечисленных режимов. Каждый модуль имеет регистр режима, именуемый ССАРМn (где n=0,1,2,3,4) и используемый для выбора функции конкретного модуля. Структура данных регистров показана на рисунке 6.6. Байтный адрес регистров ССАРМ0-ССАРМ4 равен, соответственно, 0DAh- 0DEh, значение по сбросу – х0000000b.