Реализация приема-передачи последовательного кода

END

JMP START

STOP TCNT

DIS I

EN I

STRT T

EN TCNTI

CPL F1

CLR F1

MOV T,A

ORG 7

ORG 3

JMP START

ORG 0

END

STRT T

EN TCNTI

CLR F1

MOV T,A

ORG 7

JMP START

ORG 0

DJNZ R5,TEAM0; (2)

CLR F1; (1)

TEAM0:RETR; (2)

START:MOV A,#235

MOV R5,#48

M1: JF1 M1; (2)

STOP TCNT; (1)

От команды STRT T до команды STOP TCNT пройдет время равное 20480*48 + 21*80 +время на выполнение команд, отмеченных в комментариях цифрами. Цифры обозначают количество тактов, их сумма равна 8, а время выполнения равно 8*2,5=20 мкс. Таким образом данная программа реализует временную выдержку, равную 20480*48 + 21*80 + 20 = 1000004 мкс, т. е. на 4 мкс больше необходимой. Очевидно, что такая погрешность допустима.

Импульсы, частота которых измеряется, поступают на вывод /INT. Подсчет этих импульсов ведется в подпрограмме обработки внешнего прерывания. Учитывая это запишем программу полностью.

JMP INT;(2)

DJNZ R5,TEAM0;(2)

CLR F1;(1)

TEAM0:RETR;(2)

INT: MOV A,#1;(2)

ADD A,R6;(1)

MOV R6,A;(1)

MOV A,#0;(2)

ADDC A,R7;(1)

MOV R7,A;(1)

RETR;(2)

START:MOV R6,#0

MOV R7,#0

MOV A,#235

MOV R5,#48

M1: JF1 M1

Данная программа предъявляет ограничения на параметры входного импульса.

Ограничение на длительность импульса. Должно выполняться условие: tимп < tINT означает, что длительность импульса должна быть меньше времени выполнения подпрограммы INT.

Если в момент окончания подпрограммы INT сигнал на входе INT имеет еще нулевое значение, то подпрограмма будет выполняться еще один раз, а это значит, что вместо одного импульса будут зафиксированы два. Если же в момент окончания подпрограммы INT уровень сигнала на входе INT будет равным 1, то все нормально. Так как время выполнения подпрограммы INT равно 35 мкс, то tимп < 35 мкс. Это ограничение для длительности импульса сверху. Существует ограничение для длительности импульса снизу. Так как сигнал на входе INT проверяется в каждом машинном цикле, то для того, чтобы сигнал не был пропущен, его длительность должна быть больше 2,5 мкс. Тогда можно записать 2,5мкс < tимп < 35мкс.

Из вышеприведенного рисунка видно, что должны быть ограничения и на период входных импульсов. Если период входных импульсов так мал, что он укладывается по времени в интервал действия подпрограммы INT, то какие – то импульсы будут пропущены. Следовательно должно быть Тимп > tINT. Здесь надо учитывать то, что начало подпрограммы INT может быть задержано, если в момент прихода импульса (уровень 0) выполняется подпрограмма обработки прерывания от таймера. Время выполнения этой подпрограммы равно 15 мкс, значит ограничение на длительность периода входного сигнала выглядит так: Tимп > tINT +15 мкс или Тимп> 50 мкс.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: