THANKS
I did use lots of floating point to get precise datas.variables (ADresult0, FRE1, and DISPBF) are declared as follows:double result=0,ADresult0[5],ADresult1[5]={0},ADresult2[5]={0},ADresult3[5]={0},ADresult4[5]={0},ADresult5[5]={0};
int AD0[128],AD1[128],AD2[128],AD3[128],AD4[128],AD5[128];
unsigned char j=0,ADCNT=0,ADFLG=0,_100MS=0,i=0,cnt1;
unsigned int FRE1=0;
unsigned char DISPBF[18]={0,1,2,3,4,0x27,5,6,7,8,9,0x27,0x0a,0x0b,0x0c,0x0d,0x0e,0x00};
char cnt=0;
ADx[128] are result from the a/d converter.
I use double sqrt();in math.h and "ADresult0[x]=sqrt(result/128);"and use "ADresult0[4]=(ADresult0[0]+ADresult0[1]+ADresult0[2]+ADresult0[3])/4;"to do a digital filter.
I do not care about RAM.What I care about most is Flash.By Disassembling I found that:
DISPBF[4]=((unsigned int)FRE1%10);
; 529:
;
0x00002700 0x223900000000 move.l _FRE1,d1
0x00002706 0x4C431000 remul.l d3,d0:d1
0x0000270A 0x13C000000000 move.b d0,_DISPBF+4
0x00002710 0x41F900000000 lea _ADresult1+8,a0
0x00002716 0x2010 move.l (a0),d0
0x00002718 0x2F6800040010 move.l 4(a0),16(a7)
0x0000271E 0x41F900000000 lea _ADresult1,a0
0x00002724 0x2F40000C move.l d0,12(a7)
0x00002728 0x2010 move.l (a0),d0
0x0000272A 0x22280004 move.l 4(a0),d1
0x0000272E 0x41EEDF28 lea -8408(a6),a0
0x00002732 0x2F410008 move.l d1,8(a7)
0x00002736 0x2F400004 move.l d0,4(a7)
0x0000273A 0x2E88 move.l a0,(a7)
0x0000273C 0x4EB900000000 jsr __d_add
0x00002742 0x2010 move.l (a0),d0
0x00002744 0x2F6800040010 move.l 4(a0),16(a7)
0x0000274A 0x41F900000000 lea _ADresult1+16,a0
0x00002750 0x2F40000C move.l d0,12(a7)
0x00002754 0x2010 move.l (a0),d0
0x00002756 0x22280004 move.l 4(a0),d1
0x0000275A 0x41EEDF20 lea -8416(a6),a0
0x0000275E 0x2F410008 move.l d1,8(a7)
0x00002762 0x2F400004 move.l d0,4(a7)
0x00002766 0x2E88 move.l a0,(a7)
0x00002768 0x4EB900000000 jsr __d_add
0x0000276E 0x2010 move.l (a0),d0
0x00002770 0x2F6800040010 move.l 4(a0),16(a7)
0x00002776 0x41F900000000 lea _ADresult1+24,a0
0x0000277C 0x2F40000C move.l d0,12(a7)
0x00002780 0x2010 move.l (a0),d0
0x00002782 0x22280004 move.l 4(a0),d1
0x00002786 0x41EEDF10 lea -8432(a6),a0
0x0000278A 0x2F410008 move.l d1,8(a7)
0x0000278E 0x2F400004 move.l d0,4(a7)
0x00002792 0x2E88 move.l a0,(a7)
0x00002794 0x4EB900000000 jsr __d_add
0x0000279A 0x203C40100000 move.l #1074790400,d0 ; '@...'
As you see, this code is so inefficient.Maybe I should do some changes besides optimizing
variables.
--DOOM