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

Модуль РСА как измеритель длительности импульсов



При обнаруджении фронта или спада на внешнем выводе СУЧт в этом режиме осуществляется запись значения PCA таймера-счетчика в регистры CCAPnH CCAPnL. Этот режим рекомендуется использовать при измерении длительности импульсов(режим захвата). Установка битов CAPPn и/или CAPNn в регистре CCAPMn определяет перепад(0-1 или 1-0), по которому будет осуществляться завхват.

11h = 00010001b – конец импульса

21h = 00100001b – начало импульса

DSEG

P_W EQU 30h

CAPTRE EQU 32h //сохранить первое значение времени

FLAG BIT 00h //привязывает следующую команду жестко к памяти

CSEG

ORG 0000h

AJMP MAIN

ORG 0033h

AJMP PCA_IR0

ORG 0100h

MAIN: //настройка и запуск

MOV CMOD, #00h; // WDTE =0 clock=fosc\12

MOV CL, #00h; //обнуляем регистр режима и счетчик

MOV CH, #00h;

MOV CCAPM0, #21h; (11h – для паузы) //настроить модуль 0, разрешение прерывания (2 бита в 1: 0010 0001 – позитив + фиксация событий)

CLR FLAG;

SETB IE.6; //разрешить прерывание от PCA массива

SETB IE.7; //отключить блокировку прерываний

SETB CCON.6; //установить CR

ORG 0200h

НАЧАЛО

PCA_ISR:

CLR CCF0; // Флаг прерывания модуля 0. Сбрасывается программно.

JBC FLAG, SECOND; // Переходим на метку если бит установлен и сбрасываем его.

FIRST:

MOV CAPTURE, CCAP0L; // запись в CAPTURE значения времени из CCAP0L

MOV (CAPTURE+1), CCAP0H; // запись по адресу CAPTURE+1 значения CCAP0H (фиксируем время наступления)

SETB FLAG; // Flag = 1

MOV CCAPM0, #11h; (или 21h; 21h для паузы) (11h- для импульса (конец импульса) (*) (перенастройка модуля меняет по отрицательному перепаду)

RETI; //разрешение прерывания этого уровня

SECOND:

PUSH PSW;….// выталкивает из стека последнюю затолкнутую переменную (сохранить признаки

PUSH ACC; //и значения результата)

CLR C; //очистка бита переноса

MOV A, CCAP0L; // запись в ACC значения времени из CCAP0L

SUBB A, CAPTURE; // Вычитание из A – CAPTURE -C Вычитаем младшие байты времени поступления двух событий

MOV P_W, A (Pulse_WIDTH)

MOV A, CCAP0H

SUBB A, (CAPTURE+1) //аналогично старшие байты

MOV (P_W +1), A

POP ACC; // закидывает значение в стек //чтоб не испортить текущих значений

POP PSW;

MOV CCAPM0, #21h(начало импульса); (11h - для паузы)

CLR FLAG;

RETI;

4. Режимы работы, orl pcon,#02h

PCON.1 принимает значение “1”, - Включается режим пониженной мощности.

Вариант 2I





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



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