📄 process.lst
字号:
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PROCESS
OBJECT MODULE PLACED IN process.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE process.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****--------------文件信息-----------------------------------------------------
2 **文 件 名: process.C
3 **最后修改日期: 2006-4-13
4 **描 述: 对串口接收的数据进行处理
5 **设计者 : jxf
6 ***********************************************************************************/
7 #include "process.h"
8 #include "proccomm.h"
9 #include "recframe.h"
10 #include "scan.h"
11 #include "string.h"
12 #include "time.h"
13 #include "cond.h"
14
15 uchar i2c_addr=0x00;
16
17 /*******************************************************************
18 字符转二进制函数
19 函数原型: uint CHAR_TO_INT(uchar tmp[],uchar len)
20 功 能:
21
22 ********************************************************************/
23 uint CHAR_TO_INT(uchar tmp[],uchar len)
24 {
25 1 uint xdata hex=0;
26 1 uchar i;
27 1
28 1 for(i=0;i<len;i++)
29 1 {
30 2 hex=(tmp[i]&0x0f)+hex*10;
31 2 }
32 1 return hex;
33 1 }
34
35 /*******************************************************************
36 字符转二进制函数
37 函数原型: ulong CHAR_TO_LONG(uchar tmp[],uchar len)
38 功 能:
39
40 ********************************************************************/
41 ulong CHAR_TO_LONG(uchar tmp[],uchar len)
42 {
43 1 ulong xdata hex=0;
44 1 uchar i;
45 1
46 1 for(i=0;i<len;i++)
47 1 {
48 2 hex=(tmp[i]&0x0f)+hex*10;
49 2 }
50 1 return hex;
51 1 }
52
53
54 /*******************************************************************
55 改变发送状态
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 2
56 函数原型: void Rec_to_Send(void)
57 功 能:
58
59 ********************************************************************/
60 void Rec_to_Send(void)
61 {
62 1 r_end=0;
63 1 s_end=0;
64 1 p_end=1;
65 1 con_485=S_CON;
66 1 TI=1;
67 1 send_lamp=!send_lamp;
68 1 }
69
70
71 /*******************************************************************
72 采集器应答集中器函数设置
73 函数原型: void cl_ack_ct(unsigned char p,unsigned char t,unsigned char ack)
74 功 能:
75
76 ********************************************************************/
77 void cl_ack_ct(unsigned char p,unsigned char t,unsigned char ack)
78 {
79 1 unsigned char i;
80 1
81 1 SenBuf[3]=t;
82 1
83 1 if(ack>0)
84 1 SenBuf[5]=(p|0x80);
85 1 else
86 1 SenBuf[5]=(p|0xc0);
87 1
88 1 SenBuf[6]=0;
89 1
90 1 for(i=0;i<SenBuf[6]+7;i++)
91 1 cs+=SenBuf[i];
92 1
93 1 SenBuf[SenBuf[6]+7]=cs;
94 1 SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
95 1 Senlen=SenBuf[6]+9;
96 1 }
97
98
99 /*******************************************************************
100 雨量数据函数
101 函数原型: char RainFall_Process(uchar cntr,ulong rain, uchar len)
102 功 能:
103
104 ********************************************************************/
105 char RainFall_Process(uchar cntr,ulong rain, uchar len)
106 {
107 1 uchar i;
108 1 ulong xdata Total_RainFall=0;
109 1 uchar xdata Send_RainFall[5];
110 1 static uchar Last_RainFall[5]={0x30,0x30,0x30,0x30,0x30};
111 1
112 1 for(i=0;i<5;i++)
113 1 Send_RainFall[i]=0;
114 1
115 1 SenBuf[3]=0x01;
116 1 SenBuf[5]=(cntr|0x80);
117 1
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 3
118 1 switch(len)
119 1 {
120 2 case 0:
121 2 Total_RainFall=rain*Mult_Rainfall;
122 2 break;
123 2 case 1:
124 2 Total_RainFall=rain;
125 2 break;
126 2
127 2 case 2 :
128 2 Total_RainFall=rain*Mult_Rainfall;
129 2 break;
130 2 }
131 1
132 1 Send_RainFall[4]=Total_RainFall%10+0x30;
133 1 Send_RainFall[3]=(Total_RainFall/10)%10+0x30;
134 1 Send_RainFall[2]=(Total_RainFall/100)%10+0x30;
135 1 Send_RainFall[1]=(Total_RainFall/1000)%10+0x30;
136 1 Send_RainFall[0]=(Total_RainFall/10000)%10+0x30;
137 1
138 1 SenBuf[6]=0x00;
139 1
140 1 switch(len)
141 1 {
142 2 case 0:
143 2 SenBuf[6]=0x05;
144 2
145 2 for(i=0;i<5;i++)
146 2 SenBuf[7+i]=Send_RainFall[i];
147 2 break;
148 2
149 2 case 1:
150 2 SenBuf[6]=0x07;
151 2
152 2 SenBuf[8]=0x30;
153 2 for(i=0;i<5;i++)
154 2 SenBuf[8+len+i]=Send_RainFall[i];
155 2 break;
156 2
157 2 case 2 :
158 2 //add by jxf 060807
159 2 SenBuf[6]=0x0b;
160 2 SenBuf[7]=0x32;
161 2
162 2 for(i=0;i<5;i++)
163 2 SenBuf[8+i]=Send_RainFall[i];
164 2
165 2 for(i=0;i<5;i++)
166 2 SenBuf[13+i]=Last_RainFall[i];
167 2
168 2 for(i=0;i<5;i++)
169 2 Last_RainFall[i]=Send_RainFall[i];
170 2
171 2 break;
172 2 }
173 1
174 1 cs=0;
175 1 for(i=0;i<SenBuf[6]+7;i++)
176 1 cs+=SenBuf[i];
177 1
178 1 SenBuf[7+SenBuf[6]]=cs;
179 1 SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 4
180 1 Senlen=SenBuf[6]+9;
181 1
182 1 return 1;
183 1 }
184
185
186 /*******************************************************************
187 水位数据处理函数
188 函数原型: void WaterLevel_Process(void)
189 功 能:
190
191 ********************************************************************/
192
193 void WaterLevel_Process(void)
194 {
195 1 char i,k;
196 1 uint xdata tmp[5],t;
197 1
198 1 for(i=0;i<5;i++)
199 1 tmp[i]=Scan_WaterLevel[i];
200 1
201 1 for(i=1;i<4;i++)
202 1 for(k=0;k<4-i;k++)
203 1 {
204 2 if(tmp[k]>tmp[k+1])
205 2 {
206 3 t=tmp[k];tmp[k]=tmp[k+1];tmp[k+1]=t;
207 3 }
208 2 }
209 1
210 1 WaterLevel=tmp[2]+Basic_WaterLevel;
211 1
212 1 }
213
214 /*******************************************************************
215 水位数据函数
216 函数原型: char Waterlevel(unsigned char p,unsigned char len)
217 功 能:
218
219 ********************************************************************/
220 char Waterlevel(unsigned char p,unsigned char len)
221 {
222 1 char i,k;
223 1 ulong xdata Total_WaterLevel=0;
224 1 uchar xdata Send_WaterLevel[5];
225 1 static uchar last_waterlevel[5]={0x30,0x30,0x30,0x30,0x30};
226 1
227 1 for(i=0;i<5;i++)
228 1 Send_WaterLevel[i]=0;
229 1
230 1 Total_WaterLevel=WaterLevel;
231 1
232 1 for(k=4;k>=0;k--)
233 1 {
234 2 Send_WaterLevel[k]=(Total_WaterLevel%10)+0x30;
235 2 Total_WaterLevel=Total_WaterLevel/10;
236 2 }
237 1
238 1 cs=0;
239 1 SenBuf[3]=0x02;
240 1 SenBuf[5]=(p|0x80);
241 1
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 5
242 1 SenBuf[6]=0x00;
243 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -