
- •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. Отчет по лабораторной работе
Регистр состояния sepstat
MSB LSB
-
-
-
-
-
-
SEPFWR
SEPFRD
SEPIF
Бит |
Поз. |
Функция присвоения приоритета прерывания |
- |
SEPSTAT.7 |
Зарезервирован дпя дальнейшего использования |
- |
SEPSTAT.6 |
Зарезервирован дпя дальнейшего использования |
- |
SEPSTAT.5 |
Зарезервирован для дальнейшего использования |
- |
SEPSTAT.4 |
Зарезервирован для дальнейшего использования |
- |
SEPSTAT.3 |
Зарезервирован для дальнейшего использования |
SEPFWR |
SEPSTAT.2 |
Флаг ошибки записи SEP |
SEPFRD |
SEPSTAT.1 |
Флаг ошибки чтения SEP |
SEPIF |
SEPSTAT.0 |
Флаг прерывания SEP |
3.9 Таймеры/счетчики
8XC51GB имеет три 16-битный Таймера/Счетчика: Таймер 0, Таймер 1 и Таймер 2. Каждый из них состоит из двух 8-битных регистров: ТНх и TLх, х = 0,1 или 2. Вес три могут работать либо в режиме таймера либо в режиме счетчика событий.
В режиме таймера, регистр ТLx инкрементируется в каждом машинном цикле. Таким образом, вы можете использовать, его в качестве счетчика машинных циклов. Так как машинный цикл состоит из 12 периодов осциллятора, то частота счета равна 1/12 частоты осциллятора.
В режиме счетчика событий регистр TLx инкрементируется при переходе сигнала из "1" в "0" на соответствующем выводе: Т0, T1 или Т2. В этом режиме вывод порта опрашивается в фазе SSР2 каждого машинного цикла. При обнаружении высокого уровня сигнала в одном цикле и низкого в следующем, счетчик инкрементируется. Новое счетное значение появляется в регистре в фазе S3P1 цикла, следующего за тем, котором был обнаружен этот переход. Так как на распознавание перехода уходит 2 машинных цикла (24 периода осциллятора), максимальная частота счета равна 1/24 частоты осциллятора. Нет ограничений на коэффициент заполнения внешнего входного сигнала, однако, чтобы быть уверенным, что данный уровень зафиксировался хотя бы раз до того, как изменился, он должен быть удержан по крайней мере один полный машинный цикл.
Таймер 0 и Таймер 1 имеют четыре режима работы:
режим 0: 13-битный таймер
режим 1: 16-битный таймер
режим 2: 8-битный автоперезагружаемый таймер
режим 3: Таймер 0 как 2 раздельных 8-битных таймера
Таймер 1 можно использовать для управления скоростью передачи (baud rate) последовательного порта.
Таймер 2 имеет три режима работы:
режим захвата
режим автоперезагрузки (счет в прямом или в обратном направлении).
режим управления скоростью передачи последовательного порта
Таймер 0 и Таймер 1
Эти таймеры общие для семейства (см. описание ранее)
Таймер 2
Таймер 2 - 16-битный Таймер/Счетчик, который может работать либо как таймер, либо как счетчик событий. Эта функция выбирается битом С_Т2 в регистре T2CON . Таймер 2 имеет следующие три режима работы:
режим захвата
режим автоперезагрузки (счет в прямом или в обратном направлении)
режим управления скоростью передачи последовательного порта.
Режимы выбиваются битами в регистре T2C0N как показано в таблице
Таблица Режимы работы таймера 2
RCLK+TCLK |
CP/ RL2 |
Т2*0Е |
TR2 |
Режим |
0 |
1 |
1 |
1 |
16-битный, автоперезагрузка |
0 |
1 |
1 |
1 |
16-битный, захват |
1 |
Х |
Х |
1 |
Генератор скорости передачи |
Х |
0 |
1 |
1 |
Генератор импульсов |
Х |
Х |
0 |
0 |
Таймер выключен |
* Присутствует только в 37C5IFC.
В 87C5IGB вывод Т2 имеет еще одну альтернативную функцию. Он может генерировать импульсы с программируемой частотой.
Режим захвата
В режиме захвата (Capture mode) есть две опции, выбираемые битом EXEN2 в регистре T2CON. Если бит EXEN2 - 0, Таймер 2 является 16-битным таймером или счетчиком, который при переполнении устанавливает бит TF2 в регистре T2CON. Этот бит может использоваться для генерации прерывания Таймера 2. Если бит EXEN2 = 1, то помимо всего сказанного, переход уровня сигнала на внешнем выводе Т2ЕХ из "1" в "0" вызывает запись текущего значения регистров Таймера 2 (ТН2 и ТL2) в регистры RCAP2H и RCAP2L соответственно. Кроме того, переход на выводе Т2ЕХ устанавливает бит EXF2. Бит EXF2 может генерировать. прерывание и бит ТF2. Это иллюстрирует Рис 12.
Режим автоперезагрузки (счет в прямом и в обратном направлении)
В 16-битном режиме автоперезагрузки (Auto-reload Mode), Таймер 2 может быть запрограммирован для счета в прямом или в обратном "up or down" направлении. Функция "up or down" выбирается битом DCEN (Down Counter Enable) в регистре T2M0D. После сброса устройства бит DCEN сбрасывается, поэтому Таймер 2 по умолчанию настраивается для счета только в прямом направлении. Когда бит DCEN установлен, направлением счета Таймера 2 можно управлять уровнем сигнала на выводе Т2EХ.
В этом режиме, при DCEN = 0, есть две опции, выбираемые битом EXEN2 в регистра T2CON. Если бит EXEN2 = 0, Таймер 2 считает в прямом направлении до 0FFFFH и затем устанавливает бит переполнения TF2. Переполнение также вызывает перезагрузку регистров Таймера 16-битным значением из регистров RСАР2Н и RCAP2L. Значения в регистрах RCAP2H и RCAP2L предварительно инициализируется программой. Если бит EXEN2 = 1, 16-битовая перезагрузка может быть вызвана либо переполнением, либо переходом уровня сигнала из "1" в "0" на выводе Т2ЕХ. Этот переход устанавливает бит EXF2. Оба бита, TF2 и EXF2, могут генерировать прерывание Таймера 2, если оно разрешено. Рис. 13 показывает Таймер 2 автоматически считающего в прямом направлении, когда DCEN сброшен.
Установка бита DCEN разрешает функцию "up или down", как показано на рис. 14 В этом случае вывод Т2EX управляет направлением счета. Логическая "1" на выводе Т2ЕХ делает, Таймер 2 счетчиком в прямом направлении. Таймер переполняется когда его значение превышает 0FFFFН и устанавливает бит TF2, который может генерировать прерывание, если оно разрешено. Переполнение также вызывает перезагрузку 16-битного значения из регистров RCAP2H и RCAP2L в регистры таймера ТН2 и TL2 соответственно. Логический "0" на выводе Т2ЕХ делает Таймер 2 счетчиком в обратном направлении. Теперь таймер переполняется когда значение в регистрах TH2 и TL2 равно значению, хранимому в регистрах RCAP2H и RCAP2L Переполнение устанавливает бит TF2 и вызывает загрузку значения 0FFFFH в регистры таймера.
Бит EXF2 переключается каждый раз, когда Таймер 2 переполняется. Этот бит может использоваться как 17-й бит счетного значения, если необходимо. В этом режиме бит EXF2 не генерирует прерывание.
Генерирование импульсов
87C51GB имеет новую возможность. Вывод Pl.0 может генерировать импульсы с 50%-м коэффициентом заполнения. Этот вывод кроме функции вывода порта I/O имеет две альтернативные функции. Он может быть запрограммирован (1) как вход внешних счетных импульсов дня Таймера/Счетчика 2 или (2) для генерирования импульсов с 50%-м коэффициентом заполнения и частотой от 61Гц до 4МГц, при тактовой частоте 16МГц рис. 15 объясняет работу таймера в этом режиме Чтобы Таймер/Счетчик 2 работал как генератор импульсов, бит С_Т2(в регистре Т2СОN) должен быть сброшен, а бит Т2ОЕ (в регистре T2M0D) установлен Бит TR2 (а регистре T2CON) также должен быть установлен для запуска таймера.
Частота
выходных импульсов зависит от частоты
осциллятора и перезагружаемого
значения и регистрах RCAP2H
и RCAP2L,
как показано в соотношении:
В режиме генератора переполнение таймера не генерирует прерывание. Это похоже на случай, когда Таймер 2 используется для управления скоростью передачи последовательного порта. Можно использовать Таймер 2 для управления скоростью передачи последовательного порта и как генератор импульсов одновременно. Заметьте, что скорость передачи данных и частота выходных импульсов при этом, будет одной и той же.