Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




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

Предположим, что необходимо подсчитать число деталей, сошедших с конвейера от момента его включения до момента выключения. Факт схода детали с конвейера фиксируется фотоэлементом, на выходе которого формируется импульсный сигнал положительной полярности, а факт работы конвейера подтверждается логической единицей на входе 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 в двоичном виде будет храниться количество деталей.

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






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных