Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Подсчет числа импульсов за интервал времени между двумя событиями



Типовую процедуру подсчёта числа импульсов между двумя событиями удобно проиллюстрировать на конкретном примере.

Предположим, что необходимо подсчитать число деталей, сошедших с конвейера от момента его включения до момента выключения. Факт схода детали с конвейера фиксируется фотоэлементом, на выходе которого формируется импульсный сигнал положительной полярности, а факт работы конвейера подтверждается логической единицей на входе INT1 микроконтроллера (рисунок 4.7). Считается, что сигналы на входах INT1 и T1 без дребезга контактов.

Рисунок 4.7 – Схема контроля качества деталей

По окончании выполнения процедуры (листинг 4.8) в аккумуляторе фиксируется число деталей, представленное в двоично-десятич-ном коде.

Листинг 4.8 – Программа, реализующая подсчет числа импульсов за интервал времени между двумя событиями

; Для простоты реализации программы считается, что общее

; количество деталей не превышает 99.

  .ORG 0000H ; Адрес начала программы
  SETB INT1 SETB T1 ; Инициализация входов ; INT1 и T1 на ввод сигнала
    MOV A, #00h JNB INT1, $ ; Обнуление счётчика ; Ожидание включения ; конвейера
WAIT1:     WAIT0: JNB INT1, EXIT   JNB T1, WAIT1     JNB INT1, EXIT   JB T1, WAIT0 ; Проверка работы ; конвейера. Если конвейер ; отключен, то выход из ; процедуры ; Проверка наличия ; логической «1» на выходе ; фотодатчика ; Проверка работы ; конвейера ; Проверка наличия ; логического «0» на ; выходе фотодатчика
  INC A DA A ; Увеличение счётчика ; Десятичная коррекция
  EXIT: SJMP WAIT1 … ; Продолжение счета ; Завершение ; процедуры

Процедура подсчета импульсов может быть реализована иначе, если вход T1 рассматривать как вход таймера-счётчика, а вход INT1 как вход контроллера прерываний (листинг 4.9).

Листинг 4.9 – Программа, реализующая подсчет числа импульсов за интервал времени между двумя событиями с использованием аппаратных средств микроконтроллера

  .ORG 0000h JMP BEGIN   .ORG 0013h   JMP STOP ; Адрес начала программы ; Переход к основной части ; программы ; Адрес обработчика ; прерываний по входу INT1 ; Переход на процедуру ; обработки прерывания
BEGIN: SETB INT1 SETB T1 CLR 20h.0     MOV IE, #00h MOV TCON, #04h   MOV TMOD, #E0h   MOV TL1, #00h SETB TR1 MOV IE, #84h JNB 20h.0, $ … ; Инициализация входов INT1 ; и T1 на ввод сигнала ; Очистка флага состояния ; конвейера (флаг переходит; в состояние логической ; единицы при остановке ; конвейера) ; Запрет всех прерываний ; Настройка режима ; прерывания (по спаду ; сигнала на входе INT1) ; Настройка таймера T/C1 ; на счёт внешних событий ; при единичном состоянии ; входа INT1 ; Обнуление счетчика ; Разрешение счета ; Разрешение прерываний по ; входу INT1 ; Ожидание запуска и ; последующей остановки ; конвейера
STOP:   CLR TR1 MOV IE, #00h SETB 20h.0   RETI ; Остановка счетчика ; Запрещение прерываний ; Установка флага ; состояния конвейера ; Выход из прерывания

После остановки конвейера в регистре TL1 в двоичном виде будет храниться количество деталей.

Преимущество счёта данным способом заключается в том, что при автономной работе периферийных устройств (таймер-счётчика и контроллера прерываний), процессор может выполнять другую «полезную» работу, лишь изредка проверяя флаг состояния конвейера.





Дата публикования: 2014-11-03; Прочитано: 688 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...