?? leakage.lst
字號:
516 1
517 1 TH1 = Time_1s_H ;
518 1 TL1 = Time_1s_L ;
519 1
520 1 TR1 = 1;
521 1
522 1 ET1 = 1;
523 1 }
524
525 //---------------------------------------------------------------------------
526 //函數名稱:Timer1_Int
527 //功能描述:定時1的中斷程序
528 //輸入:無
529 //輸出:無
530 //---------------------------------------------------------------------------
531 void Timer1_Int(void) interrupt 3
532 {
533 1 static uchar second_c = 100;
534 1
535 1 TR1 = 0 ;
536 1
537 1 second_c--;
538 1 if(!second_c)
539 1 {
540 2 lightControl = TRUE ;
541 2
542 2 TR1 = 0 ;
543 2 }
544 1 else
545 1 TR1 = 1;
546 1 }
547
548 //---------------------------------------------------------------------------
549 //函數名稱:Timer0_Int
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 10
550 //功能描述:定時10 ms 的中斷程序
551 //輸入:無
552 //輸出:無
553 //---------------------------------------------------------------------------
554 void Timer0_Int(void) interrupt 1
555 {
556 1 static uchar second_cnt = 100;
557 1
558 1 TR0 = 0;
559 1
560 1 TH0 = TIME_10ms_H;
561 1 TL0 = TIME_10ms_L;
562 1
563 1 second_cnt --;
564 1 if(second_cnt == 50)
565 1 workIndication = !workIndication; //500ms 翻轉一次
566 1
567 1 //時間已達1 秒
568 1 if(!second_cnt)
569 1 {
570 2 sampleTimeFlag = TRUE;
571 2 second_cnt = 100;
572 2 }
573 1 TR0 = 1;
574 1 }
575
576
577 //---------------------------------------------------------------------------
578 //函數名稱:Serial_Int()
579 //功能描述:串行口中斷程序
580 //輸入:無
581 //輸出:無
582 //---------------------------------------------------------------------------
583 void Serial_Int(void) interrupt 4
584 {
585 1 uchar recBuf;
586 1 static uchar scnt;
587 1
588 1 EA = 0;
589 1 scnt++; //關閉中斷
590 1 if(_testbit_(TI)) //JBC指令 是發送中斷
591 1 {
592 2 if(transDataPtr < transDataBuf[2] + 3) //是否已經發送完畢
593 2 {
594 3 SBUF = transDataBuf[transDataPtr]; //發送數據 對SBUF覆值,即為發送數據
595 3 transCheckSum += transDataBuf[transDataPtr];
596 3 transDataPtr++;
597 3
598 3 if(transDataPtr == transDataBuf[2]+2) //發送校驗字 發送結束
599 3 SBUF = transCheckSum;
600 3 }
601 2 }
602 1
603 1 if(_testbit_(RI)) //是接收中斷
604 1 {
605 2 recBuf = SBUF;
606 2
607 2 switch(recStatus)
608 2 {
609 3 case INIT_STAT:
610 3 if(recBuf == SYNC) //是同步信號
611 3 {
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 11
612 4 recStatus = ADDR_STAT;
613 4 recChkSum = SYNC; //初始化校驗和
614 4 }
615 3 break;
616 3
617 3 case ADDR_STAT:
618 3 if(recBuf == ReadID()) //是本機地址
619 3 {
620 4 recChkSum += recBuf;
621 4 recStatus = COMMAND_STAT;
622 4 }
623 3 else
624 3 {
625 4 recStatus = INIT_STAT;
626 4 recChkSum = 0;
627 4 }
628 3 break;
629 3
630 3 case COMMAND_STAT:
631 3 recCommandBuf = recBuf;
632 3 recChkSum += recBuf;
633 3 if((recCommandBuf==COM_INIT)||(recCommandBuf==COM_TIME)\
634 3 ||(recCommandBuf==COM_RD_CUR_DATA)||(recCommandBuf==COM_RD_BATCH_DATA)\
635 3 ||(recCommandBuf==COM_RD_ALL_DATA))
636 3 {//合法命令
637 4 recStatus = SIZE_STAT;
638 4 }
639 3 else if(recCommandBuf == TERM_CUR_TX_ERR) //上位機回應終端接收當前數據錯誤
640 3 {
641 4 curTransErrFlag = TRUE;
642 4 recStatus = INIT_STAT;
643 4 }
644 3 else if(recCommandBuf==TERM_BAT_TX_ERR) //上位機回應終端接收批量數據錯誤
645 3 {
646 4 batTransErrFlag = TRUE;
647 4 recStatus = INIT_STAT;
648 4 }
649 3 else if(recCommandBuf==TERM_ALL_TX_ERR) //上位機回應終端接收所有數據錯誤
650 3 {
651 4 allDataTransErrFlag = TRUE;
652 4 recStatus = INIT_STAT;
653 4 }
654 3 else //其它不確定錯誤
655 3 {
656 4 recStatus = INIT_STAT;
657 4 recChkSum = 0;
658 4 }
659 3 break;
660 3
661 3 case SIZE_STAT:
662 3 recDataSize = recBuf;
663 3 recChkSum += recBuf;
664 3
665 3 if(recDataSize > 0)
666 3 recStatus = DATA_STAT;
667 3 else
668 3 recStatus = VERIFY_STAT;
669 3 break;
670 3
671 3 case DATA_STAT:
672 3 switch(recCommandBuf)
673 3 {
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 12
674 4 case COM_INIT: //上位機發出 讀取預置信息(消防控制類型) 命令
675 4 recChkSum += recBuf;
676 4 recPresetData[recDataCnt] = recBuf;
677 4 recDataCnt++;
678 4 if(recDataCnt == recDataSize) //數據接收完畢
679 4 {
680 5 recDataCnt = 0;
681 5 recStatus = VERIFY_STAT;
682 5 }
683 4 break;
684 4
685 4 case COM_TIME:
686 4 recChkSum += recBuf;
687 4 recCurrentTimeBuf[recDataCnt] = recBuf;
688 4 recDataCnt++;
689 4 if(recDataCnt==recDataSize) //數據接收完畢
690 4 {
691 5 recDataCnt = 0;
692 5 recStatus = VERIFY_STAT;
693 5 }
694 4 break;
695 4
696 4 case COM_RD_CUR_DATA:
697 4 recChkSum += recBuf;
698 4 recStatus = VERIFY_STAT;
699 4 break;
700 4
701 4 case COM_RD_BATCH_DATA:
702 4 recChkSum += recBuf;
703 4 recRdBatDataSize[recDataCnt] = recBuf;
704 4 recDataCnt++;
705 4 if(recDataCnt==recDataSize) //數據接收完畢
706 4 {
707 5 recDataCnt = 0;
708 5 recStatus = VERIFY_STAT;
709 5 }
710 4 break;
711 4
712 4 case COM_RD_ALL_DATA:
713 4 recChkSum += recBuf;
714 4 recStatus = VERIFY_STAT;
715 4 break;
716 4
717 4 }
718 3
719 3 break;
720 3
721 3 case VERIFY_STAT:
722 3 if(recChkSum==recBuf) //校驗正確
723 3 {
724 4 recErrorFlag = FALSE;
725 4 switch(recCommandBuf) //根據不同命令置相應標志
726 4 {
727 5 case COM_INIT:
728 5 initFlag = TRUE;
729 5 break;
730 5
731 5 case COM_TIME:
732 5 timeVerifyFlag = TRUE;
733 5 break;
734 5
735 5 case COM_RD_CUR_DATA:
C51 COMPILER V8.05a LEAKAGE 11/26/2007 12:52:43 PAGE 13
736 5 rdCurDataFlag = TRUE;
737 5 break;
738 5
739 5 case COM_RD_BATCH_DATA:
740 5 rdBatDataFlag = TRUE;
741 5 break;
742 5
743 5 case COM_RD_ALL_DATA:
744 5 rdAllDataFlag = TRUE;
745 5 break;
746 5 }
747 4
748 4 }
749 3 else
750 3 {
751 4 recErrorFlag = TRUE;
752 4 }
753 3 break;
754 3
755 3 default:
756 3 recStatus = INIT_STAT;
757 3 break;
758 3 }
759 2
760 2 }
761 1 EA = 1; //打開中斷
762 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1444 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 259 ----
PDATA SIZE = ---- ----
DATA SIZE = 26 ----
IDATA SIZE = 6 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -