[an error occurred while processing this directive]
Вопрос по коду...
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 99600036 13 октября 2003 г. 10:19

Среда VDSP3.0, процессор 2181. Вопрос в следующем почему указатель I7 при указании длинны равной LENGTH(PAF_CS_Array) срывается на 16 проходе алгоритма (те в два раза меньше чем должен. При установлении заведомо большего (66) работает нормально.

.SECTION/DM data1;
.var/circ PAF_PACKET[] = 0x5A,0x46,0x41,0x02,0x81;
.var PAF_CS_Array[32] = 0x4A,0x92,0xA4,0xC8,0x16,0x2C,0x58,0xB6,0xEC,0x5E,0xBA,0xF4,0x6E,0xDA,0x32,0x64,0xCE,0x1A,0x34,0x68,0xD6,0x2A,0x54,0xAE,0xDC,0x3E,0x7C,0xFE,0x7A,0xF2,0x62,0xC2;

.SECTION/PM seg_code3;
CRC_PAF:
I7= PAF_CS_Array; L7 = 66;//LENGTH(PAF_CS_Array);
i2 = PAF_PACKET; l2 = LENGTH(PAF_PACKET);
AX0=0; //накопитель контрольной суммы

modify (i2,m1); //читаем байт контрольной суммы(0-й)
ax1 = 4;
ByteShft1:

mr0 = dm (i2,m1); //читаем байт
CNTR = 8;
DO ByteShft UNTIL CE;//
AY0=DM(I7,M5);
AF=tstbit 0 of MR0;
IF EQ jump Eos;
ar=AX0 xor ay0;
ax0=ar;
Eos:
SR=LSHIFT MR0 BY -1 (HI);
MR0 = SR1;
ByteShft: NOP;
ar = ax1 - 1;
ax1 = ar;
if GT jump ByteShft1;

ar = ax0;
SR=LSHIFT ar BY -1 (HI);
ax0 = SR1;
ay0 = dm (i2,m1); //читаем байт
ar = ax0- ay0;
ax0 = ar;
rts;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru