c_main.lst
来自「433.92m无线模块的接收到有效数据后」· LST 代码 · 共 421 行 · 第 1/2 页
LST
421 行
197 1 uchar idata work_dat[16]={0};
198 1 Read_Datato_E2RAM(16,0,work_dat);
199 1 if(work_dat[0]==0x36)
200 1 {
201 2 count=work_dat[1];
202 2 for(i=0;i<count+1;i++)
203 2 {
204 3 num+=work_dat[1+i];
205 3 }
206 2 if(num==0)
207 2 { WorkMode=work_dat[3];
208 3 //Load_x=work_dat[6];
209 3 //Load_M=work_dat[7];
210 3 //Load_S=work_dat[8];
211 3 botelv=work_dat[8];
212 3 Readnum=work_dat[13];
213 3 return(0x01);}
214 2 else return(0x00);
215 2 }
216 1 else return(0x00);
217 1 }
218 //////////////////////////////////////////////////////////////////////////////////////////
219 /////////////////////////////////////////////////////////////////////////////////////////
220 /////////////////////////////////////////////////////////////////////////////////////////
221 /////////////////////////////////////////////////////////////////////////////////////////
222 void Wait_Code1(void)
223 {
224 1 uchar idata work_dat[16]={0};
225 1 uchar i1,ki1,j1;
226 1 LED_red=1;
227 1 LED_green=0;
228 1 KF=0;
229 1 RFC=0; //无线接收状态控制位0为发送,1为接收状态
230 1 uart2txd=0; //无线发射端
231 1 delayms(100);
232 1 KF=1;
233 1 RFC=1;
234 1 while(1){
235 2 while(1){
236 3 if(uart2read()==0x55)ki1++;
237 3 else ki1=0;
238 3 if(ki1>5)break;
239 3 }
240 2 while(1){if(uart2read()==0x36)
241 3 {work_dat[0]=0x36;break;}
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 5
242 3 }
243 2 ki1=uart2read();
244 2 work_dat[1]=ki1;
245 2 for(i1=0;i1<ki1;i1++)work_dat[i1+2]=uart2read();
246 2 j1=0;
247 2 for(i1=1;i1<ki1+2;i1++)j1+=work_dat[i1];
248 2 if(j1==0)
249 2 {Write_Datato_E2RAM(16,0,work_dat);
250 3 botelv=work_dat[8];
251 3 for(i1=0;i1<botelv;i1++)
252 3 {
253 4 LED_red=!LED_red;
254 4 delayms(600);
255 4 LED_red=!LED_red;
256 4 delayms(600);
257 4 }
258 3 WorkMode=work_dat[3];
259 3 for(i1=0;i1<work_dat[3];i1++)
260 3 {
261 4 LED_green=!LED_green;
262 4 delayms(600);
263 4 LED_green=!LED_green;
264 4 delayms(600);
265 4 }
266 3 break;
267 3 }
268 2
269 2 }
270 1 }
271 /////////////////////////////////////////////////////////////////////////////////////////
272 uchar Wait_Code2(void)
273 {
274 1 uchar idata work_dat[16]={0};
275 1 uchar ki1;
276 1 Time_S=0;
277 1 while(Time_S<3){
278 2 if(uart2read()==0x55)ki1++;
279 2 else ki1=0;
280 2 if(ki1>5)break;
281 2 }
282 1 while(Time_S<4){
283 2 if(uart2read()==0xff)break;
284 2 }
285 1 while(Time_S<5){
286 2 if(uart2read()==0x35)
287 2 {
288 3 work_dat[0]=0x35;break;
289 3 }
290 2 }
291 1 ki1=uart2read();
292 1 if(ki1==1)return(0x01);
293 1 else return(0x00);
294 1
295 1 }
296 ////////////////////////////////////////////////////////////////////////////////////////
297 void SendDatatowless_a()
298 {uchar i_3,i;
299 1 for(i_3=0;i_3<3;i_3++)
300 1 {
301 2 LED_red=!LED_red;
302 2 delayms(600);
303 2 LED_red=!LED_red;
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 6
304 2 uart2txd=0; RFC=0;
305 2 delayms(10);
306 2 for(i=0;i<10;i++)uart2send(0x55);
307 2 for(i=0;i<2;i++)uart2send(0x00);
308 2 uart2send(0x06);uart2send(ch);
309 2 for(i=0;i<ch;i++){uart2send(ser_dat[i]);}
310 2 delayms(2);
311 2 uart2txd=0; RFC=1;
312 2 delayms(15);
313 2 // if(Wait_Code2()==1)break;
314 2 }
315 1 }
316
317 /////////////////////////////////////////////////////////////////////////////////////////
318 void SendDatatowless_b()
319 {
320 1 Time_S=0;Time_M=0;
321 1 while(Time_S>1);
322 1 LED_green=!LED_green;
323 1 delayms(300);
324 1 LED_green=!LED_green;
325 1 SendDatatowless_a();
326 1 // sendtoPCa();
327 1 delayms(10);
328 1 uart2txd=0; RFC=1;
329 1 sendRQ=0;ch=0; // reset send request flag
330 1 }
331 /////////////////////////////////////////////////////////////////////////////////////////
332 void Taking_overDataWelss(void)
333 {
334 1 uchar i;
335 1 // uchar xdata MTR_dat[60]={0};
336 1 while(uart2read()!=0x06);
337 1 ch=uart2read();
338 1 for(i=0;i<ch;i++)ser_dat[i]=uart2read();
339 1 LED_green=!LED_green;
340 1 delayms(300);
341 1 LED_green=!LED_green;
342 1 sendtoPCa();
343 1 delayms(10);
344 1 uart2txd=0; RFC=1;
345 1 sendRQ=0;ch=0;
346 1 }
347 /////////////////////////////////////////////////////////////////////////////////////////
348 /*-------------------------------------------------------------------------------------*/
349 // main
350 /*-------------------------------------------------------------------------------------*/
351 main()
352 { uchar ki1,ip=50;
353 1 // uchar data MRD[2]={0};
354 1 // uchar data MRD_T[3]={0};
355 1 //uchar data MRD1[2]={0};
356 1 // uchar data MRD1_T[3]={0};
357 1 Init_cpuio();
358 1 InitTimer();
359 1 Init_Serial();
360 1 RTC_Init();
361 1 while(1){
362 2 if(Int_System()==0x00)Wait_Code1();
363 2 else {
364 3 Init_Serial();
365 3 LED_red=0;
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 7
366 3 LED_green=1;
367 3 uart2txd=0; RFC=1;
368 3 CTRL485=1;RI=0;
369 3 while(1)
370 3 {
371 4 if(key1==0){Write_Datato_00E2RAM (16,0 );break;}
372 4 if (sendRQ)SendDatatowless_b(); // wait for command 'S'
373 4 while(--ip){
374 5 if(uart2read()==0x55)ki1++;
375 5 else ki1=0;
376 5 if(ki1>5)break;
377 5 }
378 4 ip=50;
379 4 if(ki1>5)Taking_overDataWelss();
380 4 }
381 3 }
382 2 }
383 1 }
384
385
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1096 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 37 10
IDATA SIZE = 60 48
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?