- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Ожидание импульсного сигнала
Схема подключения датчика импульсного сигнала аналогична схеме на рисунке 4.1. Особенность процедуры ожидания импульсного сигнала состоит в том, что МК должен обнаружить не только факт появления, но и факт окончания сигнала.
Для программирования этой процедуры удобно воспользоваться рассмотренными выше примерами ожидания события (см. листинг 4.1), смонтировав их последовательно в линейную программу. Оформлять процедуры ожидания замыкания и размыкания контакта в виде отдельных подпрограмм нецелесообразно, так как это удлиняет программу, а следовательно, время исполнения программы, которое определяет минимальную длительность импульса, который может быть обнаружен программой.
а) отрицательный б) положительный
Рисунок 4.2 – Формы импульса |
Ниже приведены примеры программной реализации процедуры ожидания «отрицательного» импульсного сигнала при подключении датчика к разряду 3 порта P1 (листинг 4.3):
Листинг 4.3 – Программа регистрации отрицательного импульса
|
.ORG 0000H |
; Адрес начала программы |
|
SETB P1.3 |
; Настройка разряда 3 ; порта P1 на ввод сигнала |
MAIN: |
JB P1.3, $ |
; Ожидание логического «0» |
|
JNB P1.3, $ |
; Ожидание логической «1» |
|
… |
; Подпрограмма обработки ; импульса |
|
JMP MAIN |
; Переход на регистрацию ; следующего импульса |
Аналогичным образом строится программа при подключении датчика положительного импульсного сигнала (листинг 4.4):
Листинг 4.4 – Программа регистрации положительного импульса
|
.ORG 0000H |
; Адрес начала программы |
|
SETB P1.3 |
; Настройка разряда 3 ; порта P1 на ввод сигнала |
MAIN: |
JNB P1.3, $ |
; Ожидание логической «1» |
|
JB P1.3, $ |
; Ожидание логического «0» |
|
… |
; Подпрограмма обработки ; импульса |
|
JMP MAIN |
; Переход на регистрацию ; следующего импульса |
Программная реализация цикла ожидания накладывает ограничения на длительность импульса: импульсы длительностью меньше времени выполнения цикла ожидания могут быть «не замечены» МК. Минимально допустимые длительности импульсов определяются тактовой частотой процессора. Гарантирована регистрация событий, частота которых не превышает 1/24 частоты процессора.
Для обнаружения кратковременных импульсов можно использовать способ фиксации импульса на внешнем триггере флага (рисунок 4.3).
Рисунок 4.3 – Схема фиксации кратковременного импульса на триггере флага |
На вход МК в этом случае поступает не кратковременный сигнал с датчика, а флаг, формируемый триггером. Триггер устанавливается по фронту импульса, а сбрасывается программным путем – выдачей специального управляющего воздействия (листинг 4.5). Длительность импульса при этом будет ограничена снизу только быстродействием триггера.
Листинг 4.5 – Программа регистрации кратковременного импульса, ориентированная на использование внешнего триггера |
||
|
.ORG 0000H |
; Адрес начала программы |
|
SETB P1.3
|
; Настройка разряда 3 ; порта P1 на ввод ; сигнала |
BEGIN: |
CLR P2.0 SETB P2.0 |
; Сброс триггера флага
|
|
JNB P1.3, $ |
; Ожидание логической «1» |
|
… |
; Подпрограмма обработки ; импульса |
|
JMP BEGIN |
; Переход на начало ; программы |