📄 protocol.lst
字号:
244 2 Trs_Buf[6]=Trs_Length;
245 2 Trs_Buf[7]=0;
246 2 Trs_Buf[8]=Trs_Comm;
247 2 Trs_Buf[9]=Station;
248 2 Trs_Buf[10]=0;
249 2 Trs_Buf[11]=House_R;
250 2 Trs_Buf[12]=Start;
251 2 Trs_Buf[13]=0;
252 2 i=Read1B(240+(House_R-1)/8);
253 2 if(i & (1<<((House_R-1)%8)) )
254 2 Trs_Buf[13]|=0x04; //Short
255 2 i=Read1B(245+(House_R-1)/8);
256 2 if(i & (1<<((House_R-1)%8)) )
257 2 Trs_Buf[13]|=0x10; //Break
258 2 i=Read1B(160+(House_R-1)/8+0x100);
259 2 if(i & (1<<((House_R-1)%8)) )
260 2 Trs_Buf[13]|=0x40; //Power
261 2 Trs_Buf[14]=0;
262 2 Trs_Buf[15]=0;
263 2 if(Alarm_Select&0x04)
264 2 {
265 3 i=Short_New[(House_R-1)/8];
266 3 if(i & (1<<((House_R-1)%8)) )
267 3 Trs_Buf[15]|=0x04; //Short
268 3 i=Read1B(170+(House_R-1)/8);
269 3 if(i & (1<<((House_R-1)%8)) )
270 3 Trs_Buf[15]|=0x08; //Short_Bak
271 3 }
272 2 if(Alarm_Select&0x10)
273 2 {
274 3 i=Break_New[(House_R-1)/8];
275 3 if(i & (1<<((House_R-1)%8)) )
276 3 Trs_Buf[15]|=0x10; //Break
277 3 i=Read1B(175+(House_R-1)/8);
278 3 if(i & (1<<((House_R-1)%8)) )
279 3 Trs_Buf[15]|=0x20; //Break
280 3 }
281 2 Trs_Buf[16]=0;
282 2 Trs_Check=0;
283 2 for(i=8;i<17;i++)
284 2 {
285 3 Trs_Check+=Trs_Buf[i];
286 3 }
287 2 Trs_Buf[17]=Trs_Check;
288 2 Trs_Wp=18;
289 2
290 2 break;
291 2
292 2 case (0xe0):
293 2
294 2 eb90();
295 2 Trs_Length=6;
296 2 Trs_Buf[6]=Trs_Length;
297 2 Trs_Buf[7]=0;
298 2 Trs_Buf[8]=Trs_Comm;
299 2 Trs_Buf[9]=Station;
300 2 Trs_Buf[10]=0;
301 2 Trs_Buf[11]=House_R;
302 2 Trs_Buf[12]=Read1B(200+(House_R-1)+0x100);
303 2 Trs_Check=0;
C51 COMPILER V6.12 PROTOCOL 01/10/2005 07:10:30 PAGE 6
304 2 for(i=8;i<13;i++)
305 2 {
306 3 Trs_Check+=Trs_Buf[i];
307 3 }
308 2 Trs_Buf[13]=Trs_Check;
309 2 Trs_Wp=14;
310 2
311 2
312 2 default:
313 2 break;
314 2 }
315 1 DIR485=0;
316 1 if(Trs_Buf[0]==0xeb && Trs_Buf[1]==0x90)
317 1 {
318 2 SBUF=0xfe;
319 2 Trs_Rp=0;
320 2 }
321 1 else
322 1 {
323 2 SBUF=Trs_Buf[0];
324 2 Trs_Rp=1;
325 2 }
326 1 }
327
328 void Rcv_Pro(void)
329 {
330 1 BYTE i;//,YkNo,YkHf;
331 1 BYTE Rcv_Check,Rcv_Length,Rcv_Tmp,Tmp;
332 1 if((Rcv_Wp-Rcv_Rp)>(Rcv_Buf[Rcv_Rp+4]+5) && Rcv_Wp>11)
333 1 {
334 2 Rcv_Flag=0;
335 2 Rcv_Wp=0;
336 2 Rcv_Length=Rcv_Buf[Rcv_Rp+4];
337 2 Rcv_Check=0;
338 2 for(i=Rcv_Rp+6;i<Rcv_Rp+Rcv_Length+5;i++)
339 2 {
340 3 Rcv_Check+=Rcv_Buf[i];
341 3 }
342 2 Rcv_Comm=0;
343 2 if(Rcv_Check==Rcv_Buf[Rcv_Rp+5+Rcv_Length])
344 2 {
345 3 Rcv_Comm=Rcv_Buf[Rcv_Rp+6];
346 3
347 3 }
348 2 switch (Rcv_Comm)
349 2 {
350 3 case (0x20):
351 3 if(Rcv_Buf[Rcv_Rp+7]==Station
352 3 ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff)&&(!Key))
353 3
354 3 {
355 4
356 4 Trs_Comm=0xaa;
357 4 Trs_Comm_Bak=0xa0;
358 4 Trs_Flag=1;
359 4
360 4 }
361 3 break;
362 3 case (0x21):
363 3 if(!Key)
364 3 {
365 4 Station=Rcv_Buf[Rcv_Rp+7];
C51 COMPILER V6.12 PROTOCOL 01/10/2005 07:10:30 PAGE 7
366 4 Write1B(Station,164);
367 4 Trs_Comm=0xaa;
368 4 Trs_Comm_Bak=0xa1;
369 4 Trs_Flag=1;
370 4 }
371 3 break;
372 3 case (0x24):
373 3 if(Rcv_Buf[Rcv_Rp+7]==Station
374 3 ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
375 3 {
376 4 Start=Rcv_Buf[Rcv_Rp+9];
377 4 if((Start&0x80)==0x80)
378 4 Write1B(0x80,255);
379 4 else
380 4 Write1B(0x00,255);
381 4 Flash=0;
382 4 for(i=0;i<5;i++)
383 4 {
384 5 Short_New[i]=0;
385 5 Break_New[i]=0;
386 5 }
387 4 Alarm_Check=1;
388 4 }
389 3 if(Rcv_Buf[Rcv_Rp+7]==Station)
390 3 {
391 4 Trs_Comm=0xaa;
392 4 Trs_Comm_Bak=0xa4;
393 4 Trs_Flag=1;
394 4 }
395 3
396 3 break;
397 3 case (0x30):
398 3 if(Rcv_Buf[Rcv_Rp+7]==Station)
399 3 {
400 4 Trs_Comm=0xb0;
401 4 House_R=Rcv_Buf[Rcv_Rp+9];
402 4 Trs_Flag=1;
403 4 }
404 3 break;
405 3 case (0x31):
406 3 if(Rcv_Buf[Rcv_Rp+7]==Station)
407 3 {
408 4 House_R=Rcv_Buf[Rcv_Rp+9];
409 4 Alarm_Check=1;
410 4 if(House_R!=0xff)
411 4 {
412 5 if(Rcv_Buf[Rcv_Rp+10]!=0xff)
413 5 {
414 6 Hdd_En=Read1B(250+(House_R-1)/8);
415 6 Short_Bak=Read1B(170+(House_R-1)/8);
416 6 Break_Bak=Read1B(175+(House_R-1)/8);
417 6 if (Rcv_Buf[Rcv_Rp+10]&0x80)
418 6 {
419 7 Hdd_En|=(1<<((House_R-1)%8));
420 7 }
421 6 else
422 6 {
423 7 Hdd_En&=~(1<<((House_R-1)%8));
424 7 Short_Bak&=~(1<<((House_R-1)%8));
425 7 Break_Bak&=~(1<<((House_R-1)%8));
426 7 Short_New[(House_R-1)/8]=0;
427 7 Break_New[(House_R-1)/8]=0;
C51 COMPILER V6.12 PROTOCOL 01/10/2005 07:10:30 PAGE 8
428 7 }
429 6 Write1B(Hdd_En,250+(House_R-1)/8);
430 6 Write1B(Short_Bak,170+(House_R-1)/8);
431 6 Write1B(Break_Bak,175+(House_R-1)/8);
432 6 //Type
433 6 Rcv_Tmp=Rcv_Buf[Rcv_Rp+10]&0x0f;
434 6 i=Read1B((House_R-1)+200);
435 6 i&=0xf0;
436 6 Rcv_Tmp|=i;
437 6 Write1B(Rcv_Tmp,(House_R-1)+200);
438 6 }
439 5 if(Rcv_Buf[Rcv_Rp+11]!=0xff)
440 5 {
441 6 Write1B(Rcv_Buf[Rcv_Rp+11],(House_R-1)*3+0x100);
442 6 }
443 5 if(Rcv_Buf[Rcv_Rp+12]!=0xff)
444 5 {
445 6 Write1B(Rcv_Buf[Rcv_Rp+12],(House_R-1)*3+1+0x100);
446 6 }
447 5 if(Rcv_Buf[Rcv_Rp+13]!=0xff)
448 5 {
449 6 Write1B(Rcv_Buf[Rcv_Rp+13],(House_R-1)*3+2+0x100);
450 6 }
451 5 //Point
452 5 if(Rcv_Buf[Rcv_Rp+16]!=0xff)
453 5 {
454 6 Rcv_Tmp=Rcv_Buf[Rcv_Rp+16];
455 6 Rcv_Tmp<<=4;
456 6 i=Read1B((House_R-1)+200);
457 6 i&=0x0f;
458 6 Rcv_Tmp|=i;
459 6 Write1B(Rcv_Tmp,(House_R-1)+200);
460 6 }
461 5
462 5 //CONST
463 5 if(Rcv_Buf[Rcv_Rp+14]!=0xff)
464 5 {
465 6 Rcv_Tmp=Rcv_Buf[Rcv_Rp+14];
466 6 Rcv_Tmp<<=4;
467 6 i=Read1B((House_R-1)+120+0x100);
468 6 i&=0x0f;
469 6 Rcv_Tmp|=i;
470 6 Write1B(Rcv_Tmp,(House_R-1)+120+0x100);
471 6 }
472 5 //RANGE
473 5 if(Rcv_Buf[Rcv_Rp+15]!=0xff)
474 5 {
475 6 Rcv_Tmp=Rcv_Buf[Rcv_Rp+15]&0x0f;
476 6 i=Read1B((House_R-1)+120+0x100);
477 6 i&=0xf0;
478 6 Rcv_Tmp|=i;
479 6 Write1B(Rcv_Tmp,(House_R-1)+120+0x100);
480 6 }
481 5 Rcv_Tmp=Rcv_Buf[Rcv_Rp+17];
482 5 if(Rcv_Tmp!=0xff)
483 5 {
484 6 Short_En=Read1B(240+(House_R-1)/8);
485 6 Short_Bak=Read1B(170+(House_R-1)/8);
486 6 if (Rcv_Tmp&0x04)
487 6 {
488 7 Short_En|=(1<<((House_R-1)%8));
489 7 }
C51 COMPILER V6.12 PROTOCOL 01/10/2005 07:10:30 PAGE 9
490 6 else
491 6 {
492 7 Short_En&=~(1<<((House_R-1)%8));
493 7 Short_Bak&=~(1<<((House_R-1)%8));
494 7 Short_New[(House_R-1)/8]=0;
495 7 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -