
- •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. Отчет по лабораторной работе
2 .1 Функциональные особенности кристаллов 8xc51gb
Кристаллы 8XC51GB, хотя и являются полностью совместимыми снизу-вверх по системе команд, архитектуре и прочим характеристикам с базовыми чипами семейства MCS-51, всё же имеют ряд важных качественных изменений и функциональных расширений, частично имеющихся в кристаллах 8052АН/ВН, 87С51, 8ХС5Х и 8XC51FX:
• 3-й таймер/счётчик;
• Дополнительные режимы работы 3-го таймера/счётчика –программируемый частотный выход и режим автоперезагрузки с увеличением/уменьшением;
• Усовершенствование последовательного порта (автоматическое определение адреса и ошибки "отсутствие стоп-бита");
• Наличие 4-уровневой системы приоритетов прерываний;
• Запрет выдачи сигнала ALE по адресу 8Eh;
• 2 режима сниженного энергопотребления;
• Возможность определения типа рестарта по флажку POF;
• Порт расширения последовательных каналов SEP (только в 8XC51GB);
• 8-канальный АЦП (только в 8XC51GB);
• 2 дополнительных 8-битных порта Р4 и Р5 (только в 8XC51GB);
• 5 дополнительных внешних прерываний INT2 - INT6 (только в 8XC51GB);
• Наличие 15 векторов прерываний (только в 8XC51GB);
• Аппаратный сторожевой таймер (только в 8XC51GB);
• Определение сбоя тактового генератора (только в 8XC51GB);
• 2 матрицы программируемых счётчиков - РСА и РСА1 (только в 8XC51GB).
Режим эмуляции микроконтроллера "без удаления чипа" ONCE, позволяющий производить тестирование и отладку разрабатываемой системы без удаления кристаллов из проверяемой платы, не отличается от аналогичного режима прочих кристаллов.
Режимы холостого хода и микропотребления не отличаются от аналогичных режимов кристаллов 8ХС5Х. В таблице показано состояние внешних выводов микросхемы при переводе её в один из этих режимов.
Состояние внешних выводов в режимах уменьшенного энергопотребления
Режим |
Прогр. память |
ALE |
PSEN |
PORT0 |
PORT1 |
PORT2 |
PORT3 |
PORT4.5 |
Х.Х. |
Внутр. |
1 |
1 |
Данные |
Данные |
Данные |
Данные |
Данные |
Х.Х. |
Внеш. |
1 |
1 |
? |
Данные |
Адрес |
Данные |
Данные |
М.П. |
Внутр. |
0 |
0 |
Данные |
Данные |
Данные |
Данные |
Данные |
М.П. |
Внеш. |
0 |
0 |
? |
Данные |
Данные |
Данные |
Данные |
3.2 Порты I/o p0-p5
Все шесть портов и 8XC5IGB двунаправленные:. Каждый из них состоит из регистра-защелки (SFRs Р0 -Р5), выходного драйвера и входного буфера. Все порты, за исключением порта Р0, имеют на выходе триггер Шмидта. Выходные драйверы портов Р0 и Р2 и входные буферы порта PC используются при обращении к внешней памяти. В этом случае порт Р0 выводит младший байт адреса внешней памяти, мультиплексированный во времени с байтом данных в цикле чтения или записи. Порт Р2 выводит старший байт адpecа внешней памяти если адрес 16-битный. Иначе выводы порта Р2 продолжают имитировать содержимое SFR P2.
Все выводы портов Р1, РЗ, Р4 и большинство выводов порта Р5 многофункциональны. Они не только являются выводами портов I/O но и имеют альтернативные функции, которые приведены в таблице.
Конфигурация портов I/O
Битовая защелка порта представлена в виде D-триггера. Данные с внутренней шины записываются в защелку по сигналу "запись в защелку ". Выход "Q" D-триггера подключается на внутреннюю шину в ответ на сигнал " чтение защелки". Непосредственное значение с вывода порта может быть считано на внутреннюю шину по сигналу "чтение порта ". Некоторые команды чтения порта используют сигнал "чтение защелки ", другие "чтение порта" Первые из них являются командами чтение-модификация-запись.
Выходные драйверы портов Р0 и P2 могут подключаться к внутренней шине ADDRESS и ADDRESS/DATA благодаря внутреннему сигналу управления при обращениях к внешней памяти. Во время доступа к внешней памяти, содержимое защелок порта Р2 не изменяется, а в защелки порта Р0 предварительно записываются "1",
Если защелки портов Р1, Р3, Р4, Р5 содержат "1", то выходные уровни могут управляться сигналом "альтернативная функция выхода". Уровень сигнала, присутствующий на выводе порта всегда доступен альтернативной функции входа.
Порты Р1-Р5 имеют внутренние подтягивающие pull-up элементы, подключенные к источнику питания. Выходы порта Р0 являются выходами с открытыми стоком. Каждая линия порта может быть индивидуально использована как вход или как выход (Порты Р0 и Р2 не могут быть использованы как порты I/О общего назначения, если они используются как шина ADDRESS/DATA) Чтобы настроиться на вход, защелка должна содержать "1", которая запирает выходной pull-down транзистор. Высокий уровень на выводах порта P1-P5 поддерживается внутренним pull-up элементом, однако мощный внешний источник может принудительно установить вывод в логический "0".
При сбросе, порты P1, Р2, Р4 и Р5 устанавливаются в низкое состояние, В это время выводы этих портов могут потреблять большой ток. Если во время сброса они используются как входы и управляются извне высоким уровнем, то пользователю необходимо использовать интерфейс с открытии коллектором или буферизовать входы.
Порт Р0 отличается от других тем, что не имеет внутренних. pull-up элементов Транзистор, выполняющий роль pull-up элемента в выходном драйвере, открыт только тогда, когда вывод имитирует "1" при обращениях к внешней памяти. В любом другом случае транзистор заперт. Поэтому линии порта Р0, которые используются как выходы, являются выходами с открытым стоком. Запись "1" в защелку оставляет pull-down транзистор запертым и переводит вывод в высокоимпедансное состояние, что позволяет использовать его в качестве высокоомного входа. Так как порты P1-P5 имеют фиксированные внутренние pull-up элементы, их называют квазидвунаправленными портами.
Когда порты P1-P5 настроены на вход (pull-down транзистор зарыт), они поддерживают на выходе высокий уровень. При установке внешним источником низкого уровня, порты становятся источниками тока (I1L в справочном листе). Когда порт Р0 настроен на вход, его выходы находятся в высокоимпедансном состоянии, поэтому его называют двунаправленным.
Во время сброса в защелки портов Р0 и РЗ записываются "1", Если впоследствии в защелку записывается "0", порт можно переустановить на вход путем записи в него "1".
Запись в порт
При выполнении инструкции, которая изменяет значение в защелке порта, новое значение записывается в защелку в фазе State6.Phase2 последнего цикла команды. Однако, выходной буфер порта копируют значение защелки только в фазе Phase1 каждого такта периода. (В фазе Phase2 выходные буферы поддерживают значение, зафиксированное во время (предыдущей фазы-Phase1). Поэтому новое значение защелки появится на выходе порта только в фазе State1.Phase1 следующего нашивного цикла (см рис. 3).
Более полную информацию о внутренних временных диаграммах можно найти в разделе "Временные Диаграммы CPU" справочника по микроконтроллерам.
При переходе состояния защелки из "0" в "1", в портах Р1-Р5 на время фаз State1.Phase1 и State1.Phase2, открывается дополнительный pull-up транзистор (в цикле, в котором этот переход происходит). Это увеличивает скорость перехода. Дополнительный pull-up транзистор обеспечивает ток примерно в 100 раз больше, чем обычный pull-up транзистор Внутренними pull-up транзисторами являются полевые транзисторы (нелинейные резисторы)- Схема pull-up элемента показана на рис. 4 .
Pull-up элемент состоит из трех рМОП транзисторов P1-P3. Заметтим, что n-канальный МОП транзистор (nМОП) открывается, когда к затвору приложена логическая "1"и запирается, когда к затвору приложен "0", р-канальный МОП (pМОП) транзистор работает наоборот.
Транзистор P1 открывается на 2 периода осциллятора после перехода состояния защелки из "0" в "1". "1" на выводе порта через Инвертор открывает транзистор РЗ (слабый pull-up транзистор). Инвертор и РЗ образуют триггер, который удерживает состояние вывода в "1" после того, как транзистор P1 закрывается.
Если вывод порта находится в "1", отрицательная помеха на этом выводе от некоторого внешнего источника способна запереть транзистор Р3, заставив вывод перейти в 3-е состояние. Для предотвращения подобной ситуации служит транзистор Р2 (очень слабый pull-up транзистор), который открывается всякий раз, когда транзистор n запирается, в традиционном CMOS стиле. Его мощность составляет 1/10 часть от мощности транзистора Р3.
Порты Р1-Р5 являются 8-битовыми квазидвунаправленными портами ввода-вывода с мощным внутренним резистором, обеспечивающим быстрое установление на выходах портов логической "1". Резистор подключается к выходному каскаду на 2 периода тактового генератора для перевода вывода в данное состояние и затем отключается. Вывод данного порта, находящийся в состоянии логической "1", имеет высокий потенциал за счет внутреннего резистора и может использоваться в этом состоянии как вход. В отличие от порта 0, входные линии портов 1-5 снабжены входными триггерами Шмидта. Почти все выводы портов имеют альтернативное назначение. При сбросе выводы порта 3 устанавливаются в состояние "1", а все остальные - в "0".