Использование цифровой обработки сигналов. Технические характеристики комплекса. Микропроцессорная система на базе ADSP 21xx, страница 12

.EXTERN  sin;                                              // Внешняя подпрограмма с меткой sin

.section/pm  program;

dac:                                                                // Метка входа в подпрограмму

I0 = 0x3FEF;

M0 = 1;

L0 = 0;

CNTR = 16;                                       // Очистка всех регистров управления

DO clr_reg UNTIL CE;                     // c адресами 0х3FEF...0x3FFЕ

clr_reg:  DM(I0,M0) = 0;

IMASK=0x001;                                 // запрет всех прерываний, кроме таймера

AY0=0x0001;                                    // Определение номера передаваемого  сигнала

AR=AX0 XOR AY0;                        // при помощи наложения соответствующей     IF EQ JUMP loop_1;                         // маски и прыжок на соответствующую метку

AY0=0x0002;

AR=AX0 XOR AY0;

IF EQ JUMP loop_2;

AY0=0x0004;

AR=AX0 XOR AY0;

IF EQ JUMP loop_4;

AY0=0x0005;

AR=AX0 XOR AY0;

IF EQ JUMP loop_5;

AY0=0x0006;

AR=AX0 XOR AY0;

IF EQ JUMP loop_6;

back:   L0 = LENGTH(sine_data_1);           // Организация массива коэффициентов сигнала

M0 = 1;                                               

DM(0x3FFD) = AX0;                       // Установка TPERIOD

DM(0x3FFC)=AX0;                          // Установка  TCOUNT

ICNTL = 0x07;                                  // Прерывания без вложения, с реакцией на перепад

ENA TIMER;                                     // Таймер разрешён (включен)

DO loop UNTIL CE;                         // Организация цикла (цикл выполняется за

loop: IDLE;                                                   //  определенное время) Ожидание

AY1=AX0;                                        // сохранение номера сигнала для случая повтора

DIS TIMER;                                      // Таймер выключен

IMASK=0x229;                                 // разрешение всех необходимых прерываний

RTI;                                                    // выход из dac

loop_1:                                                           // для каждого номера сигнала загружается

I0= sine_data_1;                                // свой адрес массива данных (IO),

AX0=0x02B6;                                   // значение TPERIOD и TCOUNT (AX0),

CNTR=61;                                         // и значение счетчика (CNTR)

JUMP back;                                       // возврат по метке

loop_2: I0= sine_data_2;                             

AX0=0x0238;

CNTR=75;

JUMP back;

loop_4: I0= sine_data_4;

AX0=0x01E0;

CNTR=88;

JUMP back;

loop_5: I0= sine_data_5;

AX0=0x01E0;

CNTR=88;

JUMP back;

loop_6: I0= sine_data_6;

AX0=0x01E0;

CNTR=88;

JUMP back;

timer:                                                             // Процедура обслуживания прерывания

AX0 = DM(I0,M0);                           // Ввод значения sine_data из буфера

CALL  sin;                                         // Вычисление значения синусоиды

DM(0x1000) = AR;                           // Вывод на ЦАП

RTI;                                                    // Возврат из прерывания


СПИСОК ЛИТИРАТУРЫ

1. АТСКЭ “Квант”. Приемники и датчики сигналов управления (ТЭЗы). Альбом №2.

2. Гольдштейн Б.С. Сигнализация в сетях связи. Том 1. – М.: Радио и связь, 2001. – 448с.: ил.

3. Маслеников М.Ю., Соболев Е.А., Соколов Г.В. Справочник разработчика и конструктора РЭА. Элементная база. – М.: ЭНЕРГОАТОМИЗДАТ, 1993.

4. Руководство пользователя по сигнальным процессорам семейства ADSP-2100. Перевод с английского Луневой О.В. – СП.: СПГЭУ, 1997.

5. DSP Microcomputers. ADSP-21msp58/59. Analog Devices, Inc., 1995.

Ресурсы Интернет:

http://www.analog.com.ru/

http://www.analogdevices.ru/

http://www.compitech.ru/html.cgi/arhiv/02_08/stat_152.htm

http://www.eltech.spb.ru/