[an error occurred while processing this directive]
Msp430f149 и целочисленная математика
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено Minas Stanislav 22 июля 2002 г. 14:13

Поделитесь мыслями народ, плиз кто как выкрутился:
1. Нужна высокая точность при вычислениях
2. Есть ли возможность портировать откуда-нибудь на С
Заранее спасибо.

Сам пока так сделал:

//в заголовке
extern void AddX(unsigned int* dst, unsigned int* src, int size); //dst += src;
extern void SubbtX(unsigned int* dst, unsigned int* src, int size); //dst -= src;
extern void NegX(unsigned int* dst, int size); //dst = -dst;
extern void ShiftX(unsigned int* dst, int size); //dst = dst << 1 | C, rlc
extern void AbsX(unsigned int* dst, int size); //abs(dst), math_plus_minus used
extern void ClearX(unsigned int* dst, int size); //dst=0
extern void LessX(unsigned int* dst, unsigned int* src, int size); //if(dst < src) C=0
extern void DivideX(unsigned int* dst, unsigned int* src, int size); //Quo=dst/src, Rem=dst%src
extern void Mult6(unsigned int* a1, unsigned int* a2, unsigned int* a3);//a3=a1*a2, clear a3 before mult(w/hwmpy)
// и т.д.
//соответственно int dst[3],int src[3],size=6 байт например


на асме:

//=============================================
//AddX: "dst += src, carry goes into C"
//=============================================
module AddX
public AddX
rseg CODE
AddX
mov 2(SP),r5
clrc
AddLoop
addc @r14,0(r12)
push SR
incd r12
incd r14
decd r5
jz ok
pop SR
jmp AddLoop
ok pop SR
ret
endmod

ну и так далее...

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

Ответы



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

E-mail: info@telesys.ru