📄 zdjjc.lst
字号:
298 1 Delay (100, 350);
299 1
300 1 if (!RstStatus)
301 1 {
302 2 //显示时分秒
303 2 displayBuf[5] = SEVEN_BLK1[TimeBuf[0] & 0x0F];
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 6
304 2 displayBuf[4] = SEVEN_BLK1[(TimeBuf[0]>>4) & 0x0F];
305 2 displayBuf[3] = SEVEN_BLK1[TimeBuf[1] & 0x0F];
306 2 displayBuf[2] = SEVEN_BLK1[(TimeBuf[1]>>4) & 0x0F];
307 2 displayBuf[1] = SEVEN_BLK1[TimeBuf[2] & 0x0F];
308 2 displayBuf[0] = SEVEN_BLK1[(TimeBuf[2]>>4) & 0x0F];
309 2
310 2 LocateGroupIndex (TimeBuf[6], TimeBuf[4], TimeBuf[3], TimeBuf[2] ,TimeBuf[1]); //在此确定班号
311 2
312 2 Delay (100, 350);
313 2 }
314 1 EX1 = TRUE; //开始脉冲记数
315 1 }
316
317 void IntToLED (uint uData, uchar uPos, bit bIsDot) //数据转换到LED
318 {
319 1 uchar i;
320 1 for (i=uPos; i>0; i--)
321 1 {
322 2 displayBuf[i] = SEVEN_BLK1[uData % 10];
323 2 uData /= 10;
324 2 }
325 1
326 1 //对高位0消影
327 1 while (++i < uPos)
328 1 {
329 2 if (displayBuf[i] == SEVEN_BLK1[0])
330 2 {
331 3 displayBuf[i] = 0x00;
332 3 }
333 2 else break;
334 2 }
335 1 if (bIsDot)
336 1 displayBuf[4] |= 0x80;
337 1 }
338
339
340 void KBSendData (word data595)
341 {
342 1 uchar data i;
343 1 word data mid;
344 1 _nop_ ();
345 1 _nop_ ();
346 1 _nop_ ();
347 1 _nop_ ();
348 1 _nop_ ();
349 1 _nop_ ();
350 1 for (i=0; i<16; i++)
351 1 {
352 2 mid = 0x8000 >> i;
353 2 if (data595 & mid)
354 2 DAT_595 = HIGH;
355 2 else
356 2 DAT_595 = LOW;
357 2 _nop_ ();
358 2 _nop_ ();
359 2 _nop_ ();
360 2 _nop_ ();
361 2 _nop_ ();
362 2 _nop_ ();
363 2 CLK_595 = LOW;
364 2 _nop_ ();
365 2 _nop_ ();
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 7
366 2 _nop_ ();
367 2 _nop_ ();
368 2 _nop_ ();
369 2 _nop_ ();
370 2 CLK_595 = HIGH;
371 2 _nop_ ();
372 2 _nop_ ();
373 2 _nop_ ();
374 2 _nop_ ();
375 2 _nop_ ();
376 2 _nop_ ();
377 2 }
378 1
379 1 STB_595 = LOW;
380 1 _nop_ ();
381 1 _nop_ ();
382 1 _nop_ ();
383 1 _nop_ ();
384 1 _nop_ ();
385 1 _nop_ ();
386 1 STB_595 = HIGH;
387 1 _nop_ ();
388 1 _nop_ ();
389 1 _nop_ ();
390 1 _nop_ ();
391 1 _nop_ ();
392 1 _nop_ ();
393 1 DAT_595 = HIGH; //数据线保持高电平
394 1 _nop_ ();
395 1 _nop_ ();
396 1 _nop_ ();
397 1 _nop_ ();
398 1 _nop_ ();
399 1 _nop_ ();
400 1 }
401
402 void Display ()
403 {
404 1 uchar data kbIndex;
405 1 word data595;
406 1 //计算显示数据
407 1 data595 = (0x0001 << displayIndex) + (displayBuf[displayIndex] << 8);
408 1 //蜂鸣器
409 1 if (buzzState == TRUE)
410 1 data595 |= 0x0080;
411 1 KBSendData (data595);
412 1
413 1 //判断键盘
414 1 kbIndex = displayIndex - 2;
415 1 if (kbIndex < KBI_COUNT)
416 1 {
417 2 if (KB_DATA == LOW)
418 2 {
419 3 /*
420 3 if (KeyCount == 0)
421 3 {
422 3 FirstKey = kbIndex;
423 3 }
424 3 else if (kbIndex == FirstKey)
425 3 {
426 3
427 3 }
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 8
428 3 */
429 3 //KeyCount ++;
430 3
431 3 //if (KeyCount == KEYDELAY)
432 3 {
433 4 curKey = kbIndex;
434 4 //hasKey = FALSE;
435 4 KeyFlag = TRUE;
436 4 //KeyCount = 0;
437 4 }
438 3 }
439 2 }
440 1
441 1 //计算下一次显示下标
442 1 displayIndex ++;
443 1 displayIndex = displayIndex % DISPLAY_BUF_LEN;
444 1 }
445
446 void IntKey () interrupt 0
447 {
448 1 //关闭显示
449 1 word data595 = 0x0000;
450 1 KBSendData (data595);
451 1 SaveCurrData ();
452 1 //进入掉电模式
453 1 PCON = 0x02;
454 1 }
455
456 void OnPulseTerm (void) interrupt 1
457 {
458 1 if (RunStatus)
459 1 {
460 2 PulseAct ++;
461 2 }
462 1 else
463 1 {
464 2 PulseTotal ++;
465 2 }
466 1
467 1 TH0 = TH0_VAL;
468 1 TL0 = TL0_VAL;
469 1 }
470
471 void IntPulse () interrupt 2
472 {
473 1 ET0 = FALSE;
474 1
475 1 if (!RunStatus)
476 1 {
477 2 PulseCount ++;
478 2 displayBuf[6] = 0x00;
479 2
480 2 if (PulseCount == TERM_COUNT)
481 2 {
482 3 displayBuf[6] = 0x02;
483 3 PulseTerm.w = PulseTotal / 16;
484 3 PulseTerm.w = PulseTerm.w * 9;
485 3 PulseTerm.w /= 10;
486 3 PulseCount = 0;
487 3 PulseTotal = 0;
488 3 C24SetBuf (TERM_H, PulseTerm.b, 2);
489 3 }
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 9
490 2 uDebugPulse ++;
491 2
492 2 if (uKValue.w != 0)
493 2 {
494 3 if (uDebugPulse < uKValue.w)
495 3 {
496 4 displayBuf[5] = SEVEN_BLK1[uDebugPulse * 10 / uKValue.w];
497 4 }
498 3 else
499 3 { DebugLength.w ++;
500 4 uDebugPulse = 0;
501 4 displayBuf[5] = SEVEN_BLK1[0];
502 4 }
503 3 }
504 2
505 2 IntToLED (DebugLength.w, 4, TRUE);
506 2 }
507 1 else
508 1 {
509 2 if (PulseAct != 0)
510 2 {
511 3 if (PulseAct > PulseTerm.w)
512 3 {
513 4 uPulseInc ++;
514 4
515 4 if (uKValue.w != 0)
516 4 {
517 5 if (uPulseInc < uKValue.w)
518 5 {
519 6 displayBuf[5] = SEVEN_BLK1[uPulseInc * 10 / uKValue.w];
520 6 }
521 5 else
522 5 { RunLength.w ++;
523 6 uPulseInc = 0;
524 6 displayBuf[5] = SEVEN_BLK1[0];
525 6 }
526 5 }
527 4 PulseAct = 0;
528 4 displayBuf[6] &= 0x7F;
529 4 }
530 3
531 3 else
532 3 {
533 4 PulseCheat.w ++;
534 4 buzzState = TRUE;
535 4 displayBuf[6] |= 0x80;
536 4 }
537 3 }
538 2 displayBuf[6] = 0x01;
539 2
540 2 IntToLED (RunLength.w, 4, TRUE);
541 2 }
542 1
543 1 //显示
544 1 displayBuf[0] = SEVEN_BLK1[GroupIndex];
545 1
546 1 ET0 = TRUE;
547 1 }
548
549 void LEDShow (void) interrupt 3
550 {
551 1 GroupSaveCount ++;
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 10
552 1
553 1 if (RunStatus)
554 1 {
555 2 //主电机停机监测
556 2 if (!MOTOR)
557 2 {
558 3 motorStatus = FALSE;
559 3 buzzState = FALSE;
560 3 }
561 2 else
562 2 {
563 3 if (motorStatus == FALSE)
564 3 {
565 4 motorStatus = TRUE;
566 4 curMotorStopCount ++;
567 4 }
568 3 buzzState = TRUE;
569 3 }
570 2 }
571 1
572 1 Display ();
573 1
574 1 TH1 = TH1_VAL;
575 1 TL1 = TL1_VAL;
576 1 }
577
578 void SetBaud ()
579 {
580 1 uint Baud;
581 1
582 1 while (TRUE)
583 1 {
584 2 Baud = InitBaud ();
585 2 //显示当前波特率
586 2 displayBuf[0] = SEVEN_BLK1[11];
587 2 IntToLED (Baud, 5, FALSE);
588 2
589 2 Delay (200, 200);
590 2 switch (curKey)
591 2 {
592 3 case 0: //加
593 3 BaudIndex ++;
594 3 BaudIndex = BaudIndex % 5;
595 3 break;
596 3 case 1: //减
597 3 BaudIndex --;
598 3 BaudIndex = BaudIndex % 5;
599 3 break;
600 3 case 2:
601 3 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -