Ответ: Сравнение AVRmega и MSP430
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 18 сентября 2003 г. 15:21
В ответ на: По поводу вчерашнего разговора про PIC и AVR. Предлагаю для сравнения функцию. Впрочем, очень интересно посмотреть на MSP и x51. отправлено Bill 18 сентября 2003 г. 08:49


5 int mean(int *ap, unsigned count)
6 {
\ __nearfunc int mean(int *, unsigned int);
\ mean:
\ 00000000 93BA ST -Y,R27 ;PUSH R10 ; Сохранить регистры
\ 00000002 93AA ST -Y,R26 ;PUSH R11 ;
;PUSH R8 ;
;PUSH R9 ;
\ 00000004 01D8 MOVW R27:R26,R17:R16 ; ; Установить указатель
\ 00000006 01F9 MOVW R31:R30,R19:R18 ;MOV R14,R15 ; Установить счетчик

7 unsigned _cnt = count; // Сохранить число данных
\ 00000008 01A9 MOVW R21:R20,R19:R18 ; ; Сохранить счетчик
8 long sum = 0; // Обнулить сумму
\ 0000000A E000 LDI R16,0 ;MOV #0,R10 ; Обнулить сумму
\ 0000000C E010 LDI R17,0 ; ;
\ 0000000E E020 LDI R18,0 ;MOV #0,R11 ;
\ 00000010 E030 LDI R19,0 ; ;
9
10 do { // Суммирование
11 sum += *ap++; //
\ ??mean_0:
\ 00000012 900D LD R0,X+ ;MOV @R12+,R8 ; Копирование слова
\ 00000014 901D LD R1,X+ ; ;
\ 00000016 2C21 MOV R2,R1 ;MOV R8,R9 ; Расширение знака
\ 00000018 0C22 LSL R2 ;XOR #-1,R9 ;
\ 0000001A 0822 SBC R2,R2 ;ADD R9,R9 ;
;SUBC R9,R9 ;
\ 0000001C 0D00 ADD R16,R0 ;ADD R8,R10 ; Накопление суммы
\ 0000001E 1D11 ADC R17,R1 ; ;
\ 00000020 1D22 ADC R18,R2 ;ADDC R9,R11 ;
\ 00000022 1D32 ADC R19,R2 ; ;
12 } //
13 while (--count); //
\ 00000024 9731 SBIW R31 : R30,1;ADD #-1,R14 ; Уменьшить счетчик
\ 00000026 2F6E MOV R22,R30 ; ;
\ 00000028 2B6F OR R22,R31 ; ;
\ 0000002A F799 BRNE ??mean_0 ;JNE ??mean_0 ; Переход

14 return sum / _cnt; // Вернуть среднее значение
\ 0000002C E060 LDI R22,0 ;MOV R10,R12
\ 0000002E E070 LDI R23,0 ;MOV R11,R13
;MOV R15,R14
;MOV #0,R15
\ 00000030 .... RCALL ?SL_DIVMOD_L03 ;CALL #?SL_DIVMOD_L03
\ 00000032 91A9 LD R26,Y+ ;POP R9 ; Восстановить регистры
\ 00000034 91B9 LD R27,Y+ ;POP R8 ;
;POP R11 ;
;POP R10 ;
\ 00000036 9508 RET
15 }


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

Ответы



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

E-mail: info@telesys.ru