?? 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 + -