- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Реализация функций реального времени
Любая система реального времени должна иметь возможность вести счёт времени. Универсальные микропроцессорные системы, как правило, включают в свой состав часы реального времени.
В микроконтроллер встроены таймеры-счетчики, которые позволяют отсчитывать временные интервалы. Кроме того, возможно формирование временных задержек путём организации циклов (как одиночных, так и вложенных). Оба способа имеют как преимущества, так и недостатки.
Программное формирование временной задержки
Программное формирование временной задержки использует метод программных циклов. При этом в некоторый рабочий регистр загружается число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое рабочего регистра не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в рабочий регистр, и временем выполнения команд, образующих программный цикл. Схемы алгоритмов такой программы показаны на рисунке 4.18.
а)
|
б) |
Рисунок 4.18 – Блок-схемы процедур временных задержек, формируемых программно |
Расчёт числа, загружаемого в рабочий регистр, выполняется на основе расчета времени выполнения команд, образующих подпрограмму. В описании команд МК указывается, сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов, затрачиваемых на выполнение подпрограммы.
При тактовой частоте кварцевого резонатора Fosc каждый машинный цикл выполняется за 12/Fosc секунд.
Ниже приведён листинг программы, реализующий временную задержку 100 мкс, при частоте кварцевого резонатора 12 МГц (листинг 4.23).
Листинг 4.23 – Программа временной задержки
|
.ORG 8000h MOV R2, #49 DJNZ R2, $ … |
; Адрес начала программы ; Загрузка рабочего регистра ; Декремент R2 и цикл, если не ноль ; Продолжение программы |
Число 49 получено следующим образом: команды MOV и DJNZ выполняются по 2 МЦ. Команда MOV выполняется 1 раз, DJNZ – 49 раз. При этом суммарное количество МЦ будет составлять 2+249=100. При тактовой частоте кварцевого резонатора 12 МГц цикл выполняется за 12/12000000100=0,0001 с, т.е. за 100 микросекунд.
В данном примере при загрузке в регистр R2 числа 49 требуемая временная задержка реализуется точно. Если число, загружаемое в регистр R2, получается дробным, то временную задержку можно реализовать лишь приблизительно. Например, для реализации временной задержки 100 мкс, при частоте кварцевого резонатора 10 МГц R2=40,641.
Минимальная временная задержка, реализуемая подпрограммой, составляет 48/Fosc секунд (при R2=1). Временную задержку меньшей длительности программным путем можно реализовать, включая в программу цепочки команд NOP, выполняющиеся в течение 1 МЦ.
Максимальная длительность задержки, реализуемая подпрограммой, составляет 6144/Fosc секунд (при R2=255).
Для реализации задержки большей длительности можно увеличить тело цикла включением дополнительных команд или использовать метод вложенных циклов (рисунок 4.18б).