
- •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.5 Аппаратный сторожевой таймер
Аппаратный сторожевой таймер (HWDT) производит сброс микроконтроллера при своём переполнении, что является средством против зависания системы и зацикливания программного обеспечения (не путать с режимом сторожевого таймера модуля 4 РСА). HWDT состоит из 14-битного счётчика, инкрементируемого каждый машинный цикл и SFR-регистра WDTRST. Сторожевой таймер всегда активен и увеличивает свое содержимое при работающем тактовом генераторе. Средств его запрещения нет. При сбросе микросхемы счётчик сторожевого таймера загружается нулевым значением. Для предупреждения срабатывания сторожевого таймера через каждые 16383 машинных цикла, пользовательская программа должна периодически записывать байты 01Eh и 0E1h (последовательно) в регистр WDTRST (физический адрес - 0A6h). Данный регистр доступен только по записи, а программного доступа к счётчику сторожевого таймера не существует.
Если HWDT используется по своему прямому назначению - для страховки от зависания - не рекомендуется производить регенерацию сторожевого таймера в теле процедуры обработки таймерного прерывания, поскольку оно может происходить и при зависшей основной программе. Лучшее место для встраивания команд обнуления сторожевого таймера - циклически выполняемая, с периодом меньшим, чем время срабатывания HWDT, программная секция.
При переводе 8XC51GB в режим микропотребления происходит останов внутреннего тактового генератора, а вместе с ним и сторожевого таймера. Выход из режима микропотребления возможен 2-мя путями - сбросом микросхемы или подачей на её вход внешнего прерывания, разрешённого в момент перевода прибора в состояние микропотребления. Первый способ - обнуляет HWDT. Когда же выход из режима происходит по второму способу, то сигнал прерывания должен некоторое время находится в низком уровне для стабилизации работы тактового генератора. При переходе сигнала внешнего прерывания в состояние логической "1" происходит запуск обработчика данного прерывания. Для предупреждения срабатывания сторожевого таймера в течение времени, когда уровень внешнего сигнала находится в состоянии "0", его счётчик запускается только после появления "1" на соответствующем входе. Для большей уверенности в том, что HWDT не сработает в течение нескольких тактов-состояний во время выхода из режима микропотребления, можно сбросить его заранее при переходе в этот режим.
В режиме холостого хода, поскольку тактовый генератор активен, для предупреждения срабатывания HWDT необходимо использовать таймерное прерывание, по которому будет происходить выход из этого режима, обнуление счётчика сторожевого таймера и возвращение в режим Idle.
Приведём фрагмент кода, использующего прерывание от таймера/счётчика Т/С0 для периодической регенерации аппаратного сторожевого таймера. Первая часть программы представляет собой обработчик прерывания, а вторая производит начальную инициализацию Т/С0 и соответствующего источника прерывания. Таймер устанавливается в 16-битный режим и генерирует прерыания с интервалом 16000 тиков - для этого в таймер периодически загружается значение FFFFh-3E80h=0C1Fh. Как говорилось выше, такой метод приведён исключительно с целью демонстрации и не даёт полной гарантии от зависания микроконтроллера. Однако он прост и не требует организации циклов в теле основной программы.
Обработчик прерывания от Т/С0: | ||
ORG 000Bh |
|
|
CLR MOV |
TR0 WDT, #1Eh |
Приостановка таймера ;очистка HWDT |
MOV |
WDT, #0E1h |
|
MOV |
TL0, #7Fh |
;запись нового интервала в Т/С0 |
MOY |
TH0, #0C1h |
|
SETB |
TR0 |
;перезапуск таймера |
RETI |
|
|
; Процедура инициализации Т/С0 | ||
Timer 0 Init: |
|
|
SETB |
EA |
;разрешить прерывание от Т/С0 |
SETB |
ET0 |
; |
MOV |
TMOD, #01h |
;установить режим 16-бит. таймера |
MOV |
TL0, #7Fh |
;запись нового интервала в Т/С0 |
MOV |
TH0, #0C0h |
|
SETB |
TR0 |
перезапуск таймера |
RET |
|
|