?? hicj6.lst
字號:
578 2 }
579 1 Station=Read1B(164,0);
580 1 // Write1B(0x0,255,0);
581 1 //House=House_Max-1;
582 1 Start=Read1B(255,0);
583 1 }
584
585
586 /**********************************************************
587 *名 稱:InitTimer
588 *功 能:定時器初始化
589 *說 明:
590 *調 用:
591 *入口參數:無
592 *返 回 值:無
593 ***********************************************************/
594 void InitTimer(void)
595 {
596 1 TMOD=0x22; /*定時器1為模式2(8位自動重裝),
597 1 定時器0為模式2(8位自動重裝) */
598 1 PCON=00;
599 1
600 1 TR0=0; //在發送或接收才開始使用
601 1 TF0=0;
602 1 TH0=(256-192); //4800bps 就是 1000000/4800=208.333微秒 執行的
603 1 //timer是 208.333*11.0592/12= 192
604 1
605 1 TL0=TH0;
606 1
607 1
608 1
609 1 TH1=0xfa; //9600-FD 4800-FA 2400-F4 1200-E8 300-A0
610 1 TL1=0xfa;
611 1 SCON=0x50;
612 1
613 1 T2CON = 0x04; //定時器2為16位自動重裝,遞增計數
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 11
614 1 T2MOD = 0x00;
615 1 TH2 = 0xb8; //dc 10ms
616 1 TL2 = 0x00;
617 1 RCAP2H = 0xb8; //20ms定時
618 1 RCAP2L = 0x00; //11.0592M晶振,
619 1 //20000*11.0592/12=0x4800 0x100-0x48=0xb8
620 1
621 1 ET2=1;
622 1
623 1 ET0=1;
624 1 // EX1=1;
625 1 ES=1;
626 1
627 1 TR1=1;
628 1 // ET1=1;
629 1
630 1 EA=1;
631 1 TI=0;
632 1
633 1 }
634 /**********************************************************
635 *名 稱:InitDD
636 *功 能:電度口狀態初始化
637 *說 明:
638 *調 用:
639 *入口參數:無
640 *返 回 值:無
641 ***********************************************************/
642 void InitDD(void)
643 {
644 1 BYTE data i,j,P1_Tmp;
645 1
646 1 for (i=0;i<5;i++) //初始化電度狀態 Hdd_New[10][5]
647 1 {
648 2 for(j=0;j<8;j++)
649 2 {
650 3 P1_Tmp=1<<(i+3);
651 3 P1_Tmp=~P1_Tmp&0xf8;
652 3 P1=P1_Tmp|A8_A10[j];
653 3 long_delay();
654 3 if(Hdd==0)
655 3 {
656 4 Hdd_Old[i]|=(1<<j);
657 4 }
658 3 else
659 3 {
660 4 Hdd_Old[i]&=~(1<<j);
661 4 }
662 3
663 3 }
664 2 Hdd_New_Bak[i]=Hdd_Old[i];
665 2 Hdd_Old_Bak[i]=Hdd_Old[i];
666 2 }
667 1
668 1 }
669 /**********************************************************
670 *名 稱:Init
671 *功 能:初始化
672 *說 明:
673 *調 用:
674 *入口參數:無
675 *返 回 值:無
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 12
676 ***********************************************************/
677
678 void Init()
679 {
680 1 BYTE data i,j;
681 1 /*
682 1 for(i=0;i<40;i++)
683 1 {
684 1
685 1 Hdd10s[i]=0;
686 1 RelayOffTimes[i]=0;
687 1 TrsOffCount[i]=0;
688 1 }
689 1 for(i=0;i<5;i++)
690 1 {
691 1 RelayOff[i]=0;
692 1 TrsRelayOff[i]=0;
693 1 Keep_Flag[i]=0;
694 1 Hdd_En[i]=Read1B(250+i,0);
695 1 Short_En[i]=Read1B(240+i,0);
696 1 Break_En[i]=Read1B(245+i,0);
697 1 }
698 1 */
699 1 /*
700 1 for(i=0;i<40;i++)
701 1 {
702 1 Hdd_Str.Hdd_L=Read_Hdd(i);
703 1 } */
704 1 Sp_Flag=0;
705 1 Key_Count=0;
706 1 Key_New=Key_Old=Key;
707 1 Ac_Old=~Ac_Check;
708 1 Press_Count=1000;
709 1 Rcv_Wp=0;
710 1 Rcv_Rp=0;
711 1 Run_Count=0;
712 1 HddEn_Count=1;
713 1 Ms20=0;
714 1 Hdd_Wp=0;
715 1 WriteOrder=0;
716 1 InitFram();
717 1 InitDD();
718 1 LedTest();
719 1 InitTimer();
720 1
721 1
722 1 }
*** WARNING C280 IN LINE 680 OF D:\TEST\HICJ6.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 680 OF D:\TEST\HICJ6.C: 'j': unreferenced local variable
723
724 /**********************************************************
725 *名 稱:Hdd_Check
726 *功 能:電度采集處理
727 *說 明:
728 *調 用:
729 *入口參數:無
730 *返 回 值:無
731 ***********************************************************/
732
733 void Hdd_Check(void)
734 {
735 1 BYTE i,j;
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 13
736 1 BYTE Hdd_Tmp[5];
737 1 // BYTE Constant_Range,Range;
738 1
739 1 for (i=0;i<5;i++)
740 1 {
741 2 /* if(Press_Count==101)
742 2 {
743 2 if(Short_New[i]^Short_Old[i]) Alarm_Check=1;
744 2 Short_Old[i]=Short_New[i];
745 2 }
746 2 */
747 2 // Run=1;
748 2 Hdd_Tmp[i]=Hdd_New[Hdd_Rp][i]^Hdd_Old[i];
749 2 Hdd_Old[i]=Hdd_New[Hdd_Rp][i];
750 2
751 2 if(Hdd_Tmp[i]) //有變位
752 2 {
753 3 for(j=0;j<8;j++)
754 3 {
755 4 if(Hdd_Tmp[i]&(1<<j))
756 4 {
757 5 Keep_Count[i*8+j]=0;
758 5 Keep_Flag[i]|=(1<<j);
759 5 //Ac_Count[i*8+j]++;
760 5 }
761 4 }
762 3
763 3 }
764 2 else //無變位
765 2 {
766 3 if(Keep_Flag[i])
767 3 {
768 4 for(j=0;j<8;j++)
769 4 {
770 5 if(Keep_Flag[i]&(1<<j))
771 5 {
772 6 Keep_Count[i*8+j]++;
773 6 if(Keep_Count[i*8+j]>Smooth)
774 6 {
775 7 Keep_Count[i*8+j]=0;
776 7 Keep_Flag[i]&=~(1<<j);
777 7 Hdd_New_Bak[i]&=~(1<<j);
778 7 if (Hdd_New[Hdd_Rp][i]&(1<<j))
779 7 {
780 8 Hdd_New_Bak[i]|=(1<<j);
781 8 }
782 7 }
783 6 }
784 5 }
785 4 }
786 3 }
787 2 }
788 1
789 1
790 1 for(i=0;i<5;i++)
791 1 {
792 2 Hdd_Tmp[i]=Hdd_New_Bak[i]^Hdd_Old_Bak[i]&Hdd_New_Bak[i];
793 2 Hdd_Old_Bak[i]=Hdd_New_Bak[i];
794 2 if(Hdd_Tmp[i])
795 2 {
796 3 for(j=0;j<8;j++)
797 3 {
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 14
798 4 if(Hdd_Tmp[i]&(1<<j))
799 4 {
800 5 //Change[i]|=1<<j;
801 5 HddVal[i*8+j]++;
802 5 /*
803 5 Constant_Range=Read1B(120+i*8+j,1);
804 5 switch (Constant_Range)
805 5 {
806 5 case (0x26):
807 5 Range=0;
808 5 break;
809 5 case (0x36):
810 5 Range=1;
811 5 break;
812 5 case (0x56):
813 5 Range=2;
814 5 break;
815 5 case (0x76):
816 5 Range=3;
817 5 break;
818 5 default:
819 5 Range=0;
820 5 break;
821 5 }
822 5 Full.Full_L=Full_Val[Range];
823 5 Full.Full_L=320000000;
824 5 Read_Hdd(i*8+j);
825 5 Hdd_Str.Hdd_L++;
826 5 Hdd10s[i*8+j]++;
827 5 if(Hdd_Str.Hdd_L>Full.Full_L)
828 5 {
829 5 Hdd_Str.Hdd_L=0;
830 5 }
831 5 Write_Hdd(i*8+j);
832 5
833 5 Pulse++;
834 5 if(Pulse%2)
835 5 write7279(SEGON,0x33,1);
836 5 else
837 5 write7279(SEGOFF,0x33,1); */
838 5 if(Press_Count<1000) Key_Press=1;
839 5
840 5
841 5 }
842 4 }
843 3 }
844 2 }
845 1
846 1 // Run=0;
847 1 Hdd_Rp++;
848 1 if(Hdd_Rp==10) Hdd_Rp=0;
849 1 }
850
851
852 /**********************************************************
853 *名 稱:Bat_Check
854 *功 能:電池剩余電量顯示
855 *說 明:
856 *調 用:
857 *入口參數:無
858 *返 回 值:無
859 ***********************************************************/
C51 COMPILER V6.12 HICJ6 01/03/2005 12:08:21 PAGE 15
860 void Bat_Check(void)
861 {
862 1 BYTE data i,Battery;
863 1 Ac_Check=1;
864 1 Ac_New=Ac_Check;
865 1 Ac_Tmp=Ac_New^Ac_Old;
866 1 Ac_Old=Ac_New;
867 1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -