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

 

При обнаруджении фронта или спада на внешнем выводе СУЧт в этом режиме осуществляется запись значения 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

еще рефераты
Еще работы по информатике