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