.section/pm program;
adc: // Метка входа в подпрограмму
CALL r_adc; // получение данных с АЦП
AX0=AR; // сохранение полученных данных
AY0=0x000A;
AR=AR-AY0; // проверка полученных данных меньше
IF LE JUMP A0_10; // ли 10, если да то прыжок на A0_10
AY0=0x000D;
AR=AX0 XOR AY0; //проверка полученных данных с числом 13
IF EQ JUMP A13 ; // если равен 13 то прыжок на А13
AY0=0x000C;
AR=AX0 XOR AY0; //проверка полученных данных с числом 12
IF EQ JUMP A12 // если равен 13 то прыжок на А13
JUMP osh:
A12: CALL t_sport; // передача полученных данных в SPORT
RTI;
A13: AX0=AY1; // загрузка последнего переданного значения
CALL dac; // передача его в ЦАП
RTI; //возврат в main
A0_10: AR = PASS AX0; //проверка полученного значения на 0
IF NE JUMP A1_10; // если не 0, то прыжок на метку A1_10
osh: AX0=0x0006; //иначе посылка в ЦАП сигнала В6,
CALL dac; //означающая запрос повтора
RTI //возврат в main
A1_10: CALL t_sport; //передача полученной информации в SPORT
AX0=0x0002;
CALL dac; //передача в ЦАП сигнала В2
RTI //возврат в main
/* ADSP-21msp58 r_adc
Подпрограмма осуществляющет прием данных с порта АЦП
*/
.GLOBAL r_adc; // Описание метки r_adc как внешней
.section/pm program;
r_adc: // Метка входа в подпрограмму
CALL radix-2; // Вызов подпрограммы БПФ, после завершения
// в AX0 находится номер первой частоты;
// в AY0 находится номер второй частоты;
AR=AX0+AY0; // получение номера сигнала
AX0=AR; // Если сумма равна 11, то необходимо
AY0=0x000B; // исправить номер сигнала на 10, т.к.
AF=AX0 XOR AY0; // сигнал 10 кодируется частотами 4 и 7
IF EQ AR=0x000A; //
RTI; // Выход из подпрограммы
/* ADSP-21msp58 dac
Подпрограмма осуществляющет формирование необходимого сигнала и передача его в порт ЦАП
*/
.section/data data1;
.VAR/CIRC sine_data_1[16]="sine_1.dat" ; // Описание массива sine_data сигнала 1
.VAR/CIRC sine_data_2[16]="sine_2.dat" ; // Описание массива sine_data сигнала 2
.VAR/CIRC sine_data_4[16]="sine_4.dat" ; // Описание массива sine_data сигнала 4
.VAR/CIRC sine_data_5[16]="sine_5.dat" ; // Описание массива sine_data сигнала 5
.VAR/CIRC sine_data_6[16]="sine_6.dat" ; // Описание массива sine_data сигнала 6
.GLOBAL dac; // Описание метки dac как внешней
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.