
- •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. Отчет по лабораторной работе
16-Битный режим фиксации рса
После фиксации значения таймера в регистре происходит установка флага события модуля CCFn. Если установлен бит ECCFn регистра ССАРМn, то данный флаг может использоваться для генерации прерывания от РСА (если разрешено регистром IЕ). Произошедшее прерывание не очищает данный флаг, это должно делаться программно. В процессе обработки прерывания по фиксации значения, оно, естественно, должно быть сохранено в ОЗУ до прихода следующего момента "фиксации".
Режим 16-битного программного таймера
В режиме сравнения 16-битное значение таймера РСА сравнивается с 16-битным значением, предварительно загруженным в регистры хранения/фиксации ССАРnН и CCAPnL. Это сравнение производится 3 раза за машинный цикл (с частотой, эквивалентной максимальной входной, т.е 1/4 частоты тактового генератора). Данная функция включается установкой бита ЕСОМn в регистре режима. Функциональная схема работы модуля РСА в этом режиме изображена на рис. 6.8.
Для режима программного таймера необходимо также установить и бит МАТn. При достижении равенства между таймером РСА и соответствующими регистрами CCAPnH/CCAPnL генерируется флаг события CCFn. При установлении флага прерывания ECCFn производится генерация прерывания от РСА. Флаг CCFn должен очищаться программно до возможного наступления следующего активного события.
Во время процедуры обработки прерывания в регистры CCAPnH/CCAPnL могут быть записаны новые значения. Отметим, однако, что запись нового значения в регистр CCAPnL очищает бит ЕСОМn, временно запрещая функцию сравнения с целью недопущения неверного результата сравнения при обновлении этого регистра. Запись значения снова устанавливает данный бит и разрешает сравнение. На основании вышесказанного, пользовательское программное обеспечение должно вначале производить запись в регистр CCAPnL, а затем - в ССАРnН.
16-Битный режим сравнения: программный таймер и высокоскоростной выход
Высокоскоростной выход - HSO
В случае равенства значений таймера РСА и соответствующего регистра хранения/фиксации происходит изменение состояния СЕХn. Для переключения модуля в этот режим, помимо битов МАТn и ЕСОМn, должен быть установлен бит TOGn (рис. 6.8). Как и в предыдущем режиме установка флага прерывания может быть разрешена установкой в "1" бита ECCFn. Инициирование прерывания происходит только после изменения состояния вывода СЕХn. Поэтому продолжительность выполнения процедуры обработки прерывания не влияет на точность выходного сигнала. Если пользовательская программа не изменяла значение регистров CCAPnH/CCAPnL во время обработки прерывания новое переключение произойдет после переполнения таймера РСА и достижения нового равенства со старым значением регистров хранения/фиксации.
Режим сторожевого таймера
Сторожевой таймер предназначен для автоматического сброса системы в случае, если она не производит регулярных обращений к нему с целью изменения его значения. Эта функция применяется в программах, функционирующих в условиях электрических помех, электростатических наводок и требующих повышенной надёжности работы микроконтроллера. Данный режим доступен лишь для модуля 4. В этом режиме каждый раз, когда значения таймера РСА и регистра хранения/фиксации модуля 4 достигают равенства, генерируется сигнал внутреннего сброса процессора. Для включения режима WDT необходимо установить бит WDTE в регистре CMOD - модуль 4 может быть сконфигурирован как программный таймер, или HSO.
Когда сторожевой таймер достигает своего граничного значения, он сбрасывает микроконтроллер точно так же, как и сигнал аппаратного сброса, за исключением того, что вывод RST остаётся в состоянии логической "1".
Для недопущения сброса микроконтроллера требуется произвести одно из следующих 3-х действий:
периодически менять значение регистров хранения/фиксации модуля 4, чтобы оно не стало равно значению таймера РСА;
2) периодически изменять значение таймера РСА, чтобы оно не стало равно значению регистров хранения/фиксации модуля 4;
3) запретить WDT путём очистки бита WDTE непосредственно перед наступлением события равенства значений, а позже - вновь разрешить данную функцию.