📄 leakage.lst
字号:
253 3 sampleTimeFlag = FALSE;
254 3 }
255 2
256 2 else if(writeEEPROMBufFullFlag)
257 2 {
258 3 if(EEPROMWrAddr<=0xFFFF)
259 3 {
260 4 if(ISendStr(0xA0, EEPROMWrAddr, writeEEPROMBuf, EEPROM_PAGE_SIZE));
261 4 EEPROMWrAddr += 128;
262 4 }
263 3 else
264 3 {
265 4 EEPROMWrAddr = EEPROM_ORG_ADDR;
266 4 if(ISendStr(0xA0, EEPROMWrAddr, writeEEPROMBuf, EEPROM_PAGE_SIZE));
267 4 EEPROMWrAddr += 128;
268 4 }
269 3 writeEEPROMBufFullFlag = FALSE;
270 3 }
271 2 else if(leakageCurrentMsg[1]>=recPresetData[1])
272 2 {
273 3 leakageCurrentMsg[0] = 0x01;
274 3
275 3 lightControl = TRUE ;
276 3
277 3 switch(recPresetData[0])
278 3 {
279 4 case SWITCH_OFF:
280 4 if(leakageCurrentMsg[1]>=recPresetData[1])
281 4 powerSwitchControl = OPEN_SWITCH; //断开闸刀
282 4 else
283 4 powerSwitchControl = CLOSE_SWITCH; //不断开闸刀
284 4 break;
285 4
286 4 case NO_SWITCH_OFF:
287 4 powerSwitchControl = CLOSE_SWITCH; //不断开闸刀
288 4 break;
289 4
290 4 case DELAY_SWITCH_OFF: //延时断开闸刀
291 4 if(leakageCurrentMsg[1]>=recPresetData[1])
292 4 {
293 5 delayCount = 0;
294 5 delaySwitchFlag = TRUE;
295 5
296 5 }
297 4 else
298 4 {
299 5 powerSwitchControl = CLOSE_SWITCH; //不断开闸刀
300 5 delaySwitchFlag = FALSE;
301 5 }
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 6
302 4 break;
303 4 }
304 3 }
305 2 }
306 1 }
307
308
309
310 //---------------------------------------------------------------------------
311 //函数名称:void Delay(uchar t)
312 //功能描述:延时 t ms
313 //输入:uchar t (所要延时的长度)
314 //输出:无
315 //---------------------------------------------------------------------------
316 void Delay(uchar t) //延时1ms
317 {
318 1 uchar i;
319 1 while(t-- > 0)
320 1 {
321 2 for(i=0;i<120;i++)
322 2 {;}
323 2 }
324 1 }
325
326
327 //---------------------------------------------------------------------------
328 //函数名称:uchar ReadID(void)
329 //功能描述:读取本机地址
330 //输入:无
331 //输出:地址码
332 //---------------------------------------------------------------------------
333
334 uchar ReadID(void)
335 {
336 1 uchar tempID;
337 1
338 1 tempID = P0;
339 1 tempID = tempID >> 6;
340 1 tempID = (0xFC & P2)|(0x03 & tempID);
341 1
342 1 return(tempID);
343 1 //return(0x21);
344 1 }
345
346
347 //---------------------------------------------------------------------------
348 //函数名称:void WriteI2CBufData(void)
349 //功能描述:写缓冲区 满检测
350 //输入:无
351 //输出:无
352 //---------------------------------------------------------------------------
353
354 void WriteI2CBufData(void)
355 {
356 1 uchar i;
357 1
358 1 //将时间数据移动到页缓冲区
359 1 for(i=0;i<7;i++)
360 1 {
361 2 writeEEPROMBuf[wrEEPROMBufPtr] = recCurrentTimeBuf[i];
362 2 wrEEPROMBufPtr++;
363 2 if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 7
364 2 {
365 3 wrEEPROMBufPtr = 0;
366 3 writeEEPROMBufFullFlag = TRUE;
367 3 return;
368 3 }
369 2 else
370 2 writeEEPROMBufFullFlag = FALSE;
371 2 }
372 1
373 1 //将电压数据移动到页缓冲区
374 1 for(i=0;i<3;i++)
375 1 {
376 2 writeEEPROMBuf[wrEEPROMBufPtr] = lineVolt[i];
377 2 wrEEPROMBufPtr++;
378 2 if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
379 2 {
380 3 wrEEPROMBufPtr = 0;
381 3 writeEEPROMBufFullFlag = TRUE;
382 3 return;
383 3 }
384 2 else
385 2 writeEEPROMBufFullFlag = FALSE;
386 2 }
387 1
388 1 //将电流数据移动到页缓冲区
389 1 for(i=0;i<3;i++)
390 1 {
391 2 writeEEPROMBuf[wrEEPROMBufPtr] = lineCurrent[i];
392 2 wrEEPROMBufPtr++;
393 2 if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
394 2 {
395 3 wrEEPROMBufPtr = 0;
396 3 writeEEPROMBufFullFlag = TRUE;
397 3 return;
398 3 }
399 2 else
400 2 writeEEPROMBufFullFlag = FALSE;
401 2 }
402 1
403 1 //将漏电信息移动到页缓冲区
404 1 for(i=0;i<3;i++)
405 1 {
406 2 writeEEPROMBuf[wrEEPROMBufPtr] = leakageCurrentMsg[i];
407 2 wrEEPROMBufPtr++;
408 2 if(wrEEPROMBufPtr>=EEPROM_PAGE_SIZE)
409 2 {
410 3 wrEEPROMBufPtr = 0;
411 3 writeEEPROMBufFullFlag = TRUE;
412 3 return;
413 3 }
414 2 else
415 2 writeEEPROMBufFullFlag = FALSE;
416 2 }
417 1 }
418
419
420 //---------------------------------------------------------------------------
421 //函数名称:void ByteTransBuf(uchar command, uchar dataSize)
422 //功能描述:将待发送数据放入发送缓冲区
423 //输入: command-- 上位机的命令字
424 // dataSize--发送数据的字节数
425 //输出:无
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 8
426 //---------------------------------------------------------------------------
427
428 void ByteTransBuf(uchar command, uchar dataSize)
429 {
430 1 uchar i;
431 1
432 1 //将本机地址、命令、数据字节数放入发送缓冲区
433 1 transDataBuf[0] = ReadID();
434 1 transDataBuf[1] = command;
435 1 transDataBuf[2] = dataSize;
436 1
437 1 //将时间数据移动到发送缓冲区
438 1 for(i=0;i<7;i++)
439 1 {
440 2 transDataBuf[i+3] = recCurrentTimeBuf[i];
441 2 }
442 1
443 1 //将电压数据移动到页缓冲区
444 1 for(i=0;i<3;i++)
445 1 {
446 2 transDataBuf[i+10] = lineVolt[i];
447 2 }
448 1
449 1 //将电流数据移动到页缓冲区
450 1 for(i=0;i<3;i++)
451 1 {
452 2 transDataBuf[i+13] = lineCurrent[i];
453 2 }
454 1
455 1 //将漏电信息移动到页缓冲区
456 1 for(i=0;i<3;i++)
457 1 {
458 2 transDataBuf[i+16] = leakageCurrentMsg[i];
459 2 }
460 1 }
461
462
463 //---------------------------------------------------------------------------
464 //函数名称:void PageTransBuf(uchar command)
465 //功能描述:将待发送数据放入发送缓冲区
466 //输入: command-- 上位机的命令字
467 //输出:无
468 //---------------------------------------------------------------------------
469
470 void PageTransBuf(uchar command)
471 {
472 1 //将本机地址、命令、数据字节数放入发送缓冲区
473 1 transDataBuf[0] = ReadID();
474 1 transDataBuf[1] = command;
475 1 transDataBuf[2] = EEPROM_PAGE_SIZE;
476 1
477 1 if(command == COM_RD_ALL_DATA)
478 1 {
479 2
480 2 EEPROMRdAddr = EEPROM_ORG_ADDR;
481 2
482 2 while(IRcvStr(0xA0, EEPROMRdAddr, transDataBuf+3, EEPROM_PAGE_SIZE)) //0xA0:AT24C512固有地址
483 2 EEPROMRdAddr += 128;
484 2 }
485 1 else
486 1 {
487 2 EEPROMRdAddr = EEPROMWrAddr - EEPROM_PAGE_SIZE * recRdBatDataSize[1] * recRdBatDataSize[0];
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 9
488 2
489 2 while(IRcvStr(0xA0, EEPROMRdAddr, transDataBuf+3, EEPROM_PAGE_SIZE))
490 2 EEPROMRdAddr += 128;
491 2 }
492 1 }
493
494
495 //---------------------------------------------------------------------------
496 //函数名称:void ChkLeakageCurrentLine(void)
497 //功能描述:检测漏电线路
498 //输入:无
499 //输出:无
500 //---------------------------------------------------------------------------
501 //void ChkLeakageCurrentLine(void)
502 //{
503
504 //}
505
506
507 //---------------------------------------------------------------------------
508 //函数名称:rut
509 //功能描述:外部中断1
510 //输入:无
511 //输出:无
512 //---------------------------------------------------------------------------
513 void rut(void) interrupt 2
514 {
515 1 lightControl = FALSE ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -