📄 text1.lst
字号:
C51 COMPILER V7.50 TEXT1 07/13/2006 16:14:03 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\output\Text1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c LARGE BROWSE DEBUG OBJECTE
-XTEND PAGEWIDTH(79) PAGELENGTH(66) OBJECT(.\output\Text1.obj)
line level source
1 /*拟合直线方程为y = ax +b*/
2 #include <stdio.h>
3 #include <reg51f.h>
4 #define N_MAX 20 //拟合折线的总数据个数
5 #define N_TOTAL 15 //实际需拟合折线的总数据个数
6 #define N_SECTION 3 //一段拟合的数据个数
7 #define SECTION 5//段数
8 unsigned int x[N_MAX] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
9 unsigned int y[N_MAX] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //
-拟合折线的数据
10 unsigned int dx[N_SECTION],dy[N_SECTION]; //一段拟合的数据
11 long k[2][3],m1,m2,m0;
12 int i = 0,j = 0;
13 //求∑Ai*Bi
14 long fsum(unsigned int *a,unsigned int *b,int c)
15 {
16 1 long sum=0;
17 1 for(i=0;i < c;i++)
18 1 sum+=a[i]*b[i];
19 1 return sum;
20 1 }
21
22 //求矩阵
23 long fmatrix(unsigned char m,unsigned char n)
24 {
25 1 long matrix;
26 1 matrix=k[0][m]*k[1][n]-k[0][n]*k[1][m];
27 1 return matrix;
28 1 }
29 //求折线参数
30 void get_value(float *pa,float *pb)
31 {
32 1 long n_section_temp;
33 1 unsigned int mi[N_SECTION] = {1,1,1}; //大
-小为1的数列,矩阵求和时匹配使
34 1 for(i=0;i < N_SECTION;i++)
35 1 {
36 2 mi[i]=1;
37 2 }
38 1 n_section_temp = (long) N_SECTION;
39 1 //求线性方程系数
40 1 k[0][0]=fsum(dx,dx,n_section_temp);
41 1 k[0][1]=fsum(dx,mi,n_section_temp);
42 1 k[0][2]=-fsum(dx,dy,n_section_temp);
43 1 k[1][0]=fsum(dx,mi,n_section_temp);
44 1 k[1][1]=n_section_temp;
45 1 k[1][2]=-fsum(mi,dy,n_section_temp);
46 1 //输出线性方程系数
47 1 m0=fmatrix(0,1);
48 1 m1=fmatrix(1,2);
49 1 m2=fmatrix(2,0);
50 1
51 1 // if(m0==0) return ;
52 1 // else
53 1 // {
54 1 *pb = (float) (m2/m0);
C51 COMPILER V7.50 TEXT1 07/13/2006 16:14:03 PAGE 2
55 1 *pa = (float) (m1/m0);
56 1 // }
57 1 }/*
58 void get_value(float *pa,float *pb)
59 {
60 *pa = 9;
61 *pb = 8;
62 }*/
63 //求最大值
64 float get_max(float * pp,int pp_size)
65 {
66 1 float max_temp = *pp;
67 1 for(i = 1;i<pp_size;i++)
68 1 {
69 2 if(max_temp<*(pp+i))
70 2 {
71 3 max_temp = *(pp+i);
72 3 }
73 2 }
74 1 return max_temp;
75 1 }
76 main()
77 {
78 1 float aBuffer[SECTION],bBuffer[SECTION];
79 1 TI = 1;
80 1 printf("HELLO");
81 1 TI = 0;
82 1 i = 1;
83 1 for(i = 0;i<2;i++)
84 1 {
85 2 for(j = 0;j<N_SECTION;j++)
86 2 {
87 3 dx[j] = x[i*N_SECTION+j];
88 3 dy[j] = y[i*N_SECTION+j];
89 3 }
90 2 get_value(aBuffer+i,bBuffer+i);
91 2 }
92 1 for(i = 0;i<SECTION;i++)
93 1 {
94 2 TI = 1;
95 2 printf("a = %lf,b = %lf",*(aBuffer+i),*(bBuffer+i));
96 2 TI = 0;
97 2 }
98 1 /* dx[0] = 1;dx[1] = 2;dx[2] = 3;
99 1 dy[0] = 4;dy[1] = 7;dy[2] = 10;
100 1 get_value(aBuffer,bBuffer);
101 1 TI = 1;
102 1 printf("a = %lf,b = %lf",*aBuffer,*bBuffer);
103 1 TI = 0;*/
104 1 while(1);
105 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1346 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = 132 79
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -