- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Измерение временных интервалов
В задачах управления часто возникает необходимость измерения промежутка времени между двумя событиями. Обычно события в объекте управления представляются сигналами от двоичных датчиков. Считая событиями фронт и спад импульса, можно определять временные характеристики импульсных сигналов: длительность, период и скважность.
Простейшим способом измерения длительности импульса является программный.
Для обнаружения событий (фронт и спад импульсного сигнала) в этом случае используются типовые процедуры (см. п. 1.1), а отсчет времени ведется программным способом.
Для положительного импульсного сигнала, поступающего на вход Т0, программа измерения его длительности будет иметь вид, представленный в листинге 4.25).
После выхода из процедуры содержимое счетчика (DPTR) пропорционально длительности импульса логической единицы.
Листинг 4.25 – Программа измерения длительности положительного импульсного сигнала
|
.ORG 0000h |
; Адрес начала программы |
NEXT: |
MOV DPTR, #00h JB P3.2, $ JNB P3.2, $ INC DPTR JB P3.2, NEXT … |
; Обнуление счётчика времени ; Ожидание логического нуля ; Ожидание логической единицы ; Инкремент счётчика времени ; Ожидание логического нуля
|
Для измерения длительности сигнала может быть использован таймер. Особенно эффективно использование для этой цели таймера T/C0 (T/C1) совместно со входом разрешения счета (альтернативная функция входа INT0 (INT1)). Измеряемый сигнал можно, например, подавать на вход INT0. Измерение длительности при этом будет выполняться в Т/С0. Программа измерения длительности положительного импульса представлена листингом 4.26.
Листинг 4.26 – Программа измерения длительности положительного импульсного сигнала с использованием таймер-счётчика
|
.ORG 0000h |
|
|
CLR TR0 MOV IE, #00h MOV TMOD, #09h MOV TL0, #00h MOV TH0, #00h JB INT0, $ SETB TR0 JNB INT0, $ JB INT0, $ CLR TR0 … |
; Запрещение работы таймера ; Запрет прерываний ; Настройка таймера на режим 1 ; счет при логической единице на ; входе INT0 ; Ожидание логического нуля ; Разрешение счёта ; Ожидание логической единицы ; Ожидание логического нуля ; Запрещение счёта |
По завершению программы в Т/С0 будет находиться число, пропорциональное длительности положительного импульса на входе INT0.
Контрольные вопросы
Для чего необходим счет времени в микроконтроллерных системах?
Каковы принципы формирования временной задержки? Какой из них имеет преимущества и какие?
Как организуется измерение интервала времени между двумя событиями?
Преобразование кодов
В задачах управления может возникнуть необходимость преобразования информации из одной формы представления в другую. Это связано с тем, что обработка данных в МК осуществляется в параллельном двоичном коде, а поступать в МК и выводиться из него информация может в иной форме представления.
Наиболее распространены в задачах логического управления следующие преобразования:
– из унитарного кода в двоичный (при вводе информации с клавиатуры или от оцифрованных переключателей);
– из двоичного в унитарный;
– из одной системы счисления в другую (при работе со специальными клавиатурами);
– специальные преобразования (для организации индикации и при выводе информации на периферийные устройства);
– из последовательного кода в параллельный (при вводе) и из параллельного в последовательный (при выводе);
– из аналоговой формы представления в цифровую, и наоборот (для связи с аналоговыми датчиками и исполнительными механизмами).