📄 weight.lst
字号:
C51 COMPILER V7.00 WEIGHT 07/18/2007 12:16:50 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE WEIGHT
OBJECT MODULE PLACED IN Weight.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Weight.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "Weight.h"
2 #include "CS5460A.h"
3 #include "Math.h"
4
5 #define StateIO StateIO_4
6 #define m_bStabilization m_bStabilization_4
7 char bdata StateIO _at_ 0x20;
8 sbit m_bStabilization = StateIO^0;
9
10 #define COUNT_WEIGHT 30
11 xdata long lWeightList[COUNT_WEIGHT];
12 xdata uchar listi = 0;
13 xdata long lWeight = 0;
14 xdata uchar AvgCount = 0;
15 xdata long lCountWeight;
16 xdata long lTemp;
17 xdata float g_xScale = 30;
18 //上一次称重值
19 xdata long g_lPrvWeight = 0;
20 //零位值
21 xdata long g_lZero = 0;
22 //上一个真实重量值,包括零位
23 xdata long g_lTrueWeight = 0;
24 bit bZero;
25
26 long Weight(void)
27 {
28 1 static DWORD dPrvConversionTime = 0;
29 1 uchar i;
30 1 while((GetTickCount() - dPrvConversionTime) < 100);
31 1 {
32 2 dPrvConversionTime = GetTickCount();
33 2 lWeight = GetWeight();
34 2
35 2 lWeightList[listi] = lWeight;
36 2 listi++;
37 2
38 2 if(listi > AvgCount)
39 2 {
40 3 AvgCount = listi;
41 3 }
42 2 if(listi >= COUNT_WEIGHT)
43 2 {
44 3 listi = 0;
45 3 }
46 2 lCountWeight = 0;
47 2 for(i = 0; i < AvgCount; i++)
48 2 {
49 3 lCountWeight += lWeightList[i];
50 3 }
51 2
52 2 if(AvgCount > 5)
53 2 {
54 3 //去掉一个最大值
55 3 for(i = 0; i < AvgCount; i++)
C51 COMPILER V7.00 WEIGHT 07/18/2007 12:16:50 PAGE 2
56 3 {
57 4 if(lWeightList[i] > lTemp)
58 4 lTemp = lWeightList[i];
59 4 }
60 3 if(lWeight == lTemp)//最大值是我
61 3 {
62 4 bZero = 0;
63 4 }
64 3 lCountWeight -= lTemp;
65 3
66 3 //去掉一个最小值
67 3 for(i = 0; i < AvgCount; i++)
68 3 {
69 4 if(lWeightList[i] < lTemp)
70 4 lTemp = lWeightList[i];
71 4 }
72 3 if(lWeight == lTemp)//最小值是我
73 3 {
74 4 bZero = 0;
75 4 }
76 3 lCountWeight -= lTemp;
77 3 lCountWeight /= (AvgCount - 2);
78 3
79 3 m_bStabilization = 1;
80 3 }else
81 2 {
82 3 m_bStabilization = 0;
83 3 lCountWeight /= AvgCount;
84 3 }
85 2
86 2 if(AvgCount > 3)
87 2 {
88 3 lTemp = (lCountWeight - g_lZero)/g_xScale;
89 3 if((labs(g_lPrvWeight - lTemp) > 5/*uLbbuf[sEprom.uLb]*/))
90 3 {
91 4 lWeightList[0] = lWeight;
92 4 for(i = 1; i < COUNT_WEIGHT; i++)
93 4 {
94 5 lWeightList[i] = 0;
95 5 }
96 4 AvgCount = listi = 1;
97 4 }
98 3 g_lPrvWeight = lTemp;
99 3 }
100 2 g_lTrueWeight = lCountWeight;
101 2
102 2 lCountWeight = lCountWeight - g_lZero;
103 2 lCountWeight /= g_xScale;
104 2 }
105 1 return lCountWeight;
106 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1049 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 150 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILER V7.00 WEIGHT 07/18/2007 12:16:50 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -