Генерация прямоугольных сигналов с использованием 8-битного таймера и таймера - порта Timer Port

На рис. 3 изображена блок-схема процедуры инициализации для ге­нерации DTMF-сигналов. Чтобы синтезировать две частоты, используются счётчики таймера-порта Timer Port и 8-битного таймера. Каждый из них представляет собой программируемый счётный регистр, необходимый для точного синтеза требуемых частот. Если счётчики таймера-порта каскадиро­ваны в один 16-битный таймер и тактируются от системной частоты MCLK, то частоты верхнего диапазона могут быть сформированы с высокой точ­ностью. При возникновении прерывания соответствующий выход переклю­чается, и оба 8-битных счётных регистра перезагружаются. Загружаемые значения хранятся в двух переменных в ОЗУ с целью экономии внутренних регистров для других задач.

Частоты нижнего диапазона генерируются 8-битным таймером. Так как счётный регистр этого таймера имеет разрядность 8 бит, только каждое третье прерывание приводит к смене уровня на требуемом выходном выводе, позво­ляя генерировать этим же счётчиком частоты.

Два выхода таймера - порта используются для формирования двух меан­дров разной частоты.

Процедура инициализации выполняется только один раз. После её за­вершения, шестнадцатеричное значение передаваемого символа читается из глобальной переменной в ОЗУ. После того, как две частоты, формирую­щие верхний и нижний тона DTMF, сгенерированы из двух таблиц, требуется только инициализация и запуск обоих таймеров. Длительность посылки кон­тролируется путём подсчёта полупериодов «нижней» частоты и считывается из дополнительной таблицы. По завершении этой процедуры производится возврат к функции поллинга. Соответствующие подпрограммы обработки

482 Библиотека Компэла