📄 function.lst
字号:
619 2 UIData[i]=0;
620 2 for(j=0;j<3;j++)
621 2 {
622 3 TB8 = 1; //sign address flag
623 3 SBUF = currentCell; //send cell address
624 3 while(!sendFlag);
625 3 sendFlag = 0;
626 3 SEND_RECEIVE = 0; //receive status
627 3 TR0 = 1; //open the timer0,avoid no response
628 3 while(!receiveFlag && !responseFlag);
629 3 SEND_RECEIVE = 1; //send status
630 3 if(receiveFlag)
631 3 {
632 4 if((UIData[0]==0xaa)&&(UIData[1]==0xaa)&&(UIData[2]==0xaa)&&(UIData[3]==0xaa)&&(UIData[4]==0xaa)&&(UID
-ata[5]==0xaa))
633 4 {
634 5 rightFlag = 1;
635 5 Write_I2c_byte(0,AddressL,currentCell);//save the cell number;total 15cells can be stored;
636 5 AddressL++;
637 5 }
638 4 else
639 4 rightFlag = 0;
640 4 }
641 3 else
642 3 rightFlag = 0;
643 3 receiveFlag = 0;
644 3 responseFlag = 0;
645 3 if(rightFlag)
646 3 {
647 4 cellInfo.cellStack[cellInfo.length++] = currentCell;
648 4 rightFlag = 0;
649 4 break;
650 4 }
651 3 }
652 2 }
653 1 }
654
655 void GatherDis()
656 {
657 1 LCDClr();
658 1 Write_Display(gatherProcess); //gatherProcess[32] = "CELLGATHERING PLEASE WAIT...";
659 1 }
660
661 void SendGather()
662 {
663 1 UCHAR i;
664 1 /*
665 1 for(i = 0;i<16;i++)
666 1 Delay5s();
667 1 */
668 1 p = &GATHER;
669 1 TB8 = 1; //sign address flag
670 1 SBUF = COMMON; //send common address
671 1 while(!sendFlag);
672 1 sendFlag = 0;
673 1 for(i = 0;i < 250;i ++)
C51 COMPILER V7.09 FUNCTION 10/11/2006 16:32:11 PAGE 12
674 1 Delay(255);
675 1 }
676
677 void TransferDis()
678 {
679 1 LCDClr();
680 1 Write_Display(dataGetProcess); //dataGetProcess[32] = "DATA TRANSFERINGPLEASE WAIT...";
681 1 Delay5s();
682 1 }
683
684 void TransferIng()
685 {
686 1 UCHAR cellPoint,highByte,lowByte,datatmp,i;
687 1 receiveFlag = 0;
688 1 responseFlag = 0;
689 1 //在0x00地址保存接收数据组数
690 1 if(cellInfo.length == 0) //得到最大基站号
691 1 {
692 2 cellPoint = 0;
693 2 Write_Display(Nocell);
694 2 Delay5s();
695 2 }
696 1 else
697 1 {
698 2 cellPoint = cellInfo.length-1;
699 2 }
700 1 AddressL= 0;
701 1 AddressH= 0;
702 1 Write_I2c_Page(&groupCurrent, 1);//保存当前组数
703 1 AddressL = (groupCurrent-1)*2+0x10;
704 1 Write_I2c_Page(&cellInfo.length, 1);
705 1 AddressL ++;
706 1 Write_I2c_Page(&cellInfo.cellStack[cellPoint], 1);
707 1
708 1 p = &TRANSFER;
709 1 for(cellPoint = 0; cellPoint < cellInfo.length ; cellPoint ++)
710 1 {
711 2 for(i = 0;i<8;i++)
712 2 UIData[i]=0;
713 2 /*
714 2 for(i = 0;i<2;i++)
715 2 Delay5s();
716 2 */
717 2 // Delay5s();
718 2 // Delay5s();
719 2 // Delay5s();
720 2
721 2 TB8 = 1; //sign address flag
722 2 datatmp = cellInfo.cellStack[cellPoint]; //cell address
723 2 SBUF = datatmp; //send cell address
724 2 while(!sendFlag);
725 2 sendFlag = 0;
726 2 SEND_RECEIVE = 0; //receive status
727 2 TR0 = 1; //open the timer0,avoid no response
728 2 while(!receiveFlag && !responseFlag);
729 2 SEND_RECEIVE = 1; //send status
730 2 LCDClr();
731 2 LCDString(0,allNumber,16); //allNumber[16] = "ALL : CELLS ";
732 2 highByte = (cellInfo.length/10) + 0x30;
733 2 lowByte = (cellInfo.length%10) + 0x30;
734 2 LCDChar(6,highByte);
735 2 LCDChar(7,lowByte);
C51 COMPILER V7.09 FUNCTION 10/11/2006 16:32:11 PAGE 13
736 2 if(receiveFlag)
737 2 {
738 3 highByte = (datatmp/10) + 0x30;
739 3 lowByte = (datatmp%10) + 0x30;
740 3 LCDChar(16,highByte);
741 3 LCDChar(17,lowByte); //display the current cell number
742 3 /*
743 3 //以下代码根据采集数据判断基站电池状态,并显示
744 3 if((UIData[2]&0x30)!=0)
745 3 {
746 3 SOUND = 1;
747 3 }
748 3 else
749 3 {
750 3 SOUND = 0;
751 3 }
752 3
753 3 */
754 3 /* change the gain according to the cell number
755 3
756 3 switch(cellPoint)
757 3 {
758 3 case 3:
759 3 {GAINU=1.0;
760 3 break;}
761 3 case 5:
762 3 {GAINU=1.0;
763 3 break;}
764 3 case 7:
765 3 {GAINU=1.0;
766 3 break;}
767 3 case 0x0b:
768 3 {GAINU=1.0;
769 3 break;}
770 3 case 0x0d:
771 3 {GAINU=1.0;
772 3 break;}
773 3 default:
774 3 {GAINU=0.6575;
775 3 break;}
776 3 }
777 3 */
778 3 showFloat(cellPoint); //显示当前测量结果
779 3 Delay5s(); //延时,方便记录
780 3 Delay5s();
781 3 Delay5s();
782 3 Delay5s();
783 3
784 3
785 3 SaveCellDataToEEPROM(groupCurrent,cellInfo.cellStack[cellPoint]);//保存数据
786 3 Save_Display(); //????????
787 3 showFloat(cellPoint); //显示当前测量结果
788 3 }
789 2 //else
790 2 // cellPoint -- ;
791 2 receiveFlag = 0;
792 2 responseFlag = 0;
793 2 }
794 1 }
795
796 void Save_Display() //???????????????
797 {
C51 COMPILER V7.09 FUNCTION 10/11/2006 16:32:11 PAGE 14
798 1 UCHAR highByte,lowByte,i;
799 1 //save to the eeprom;
800 1 for(i = 0;i < 8;i ++)
801 1 {
802 2 highByte = (UIData[i]/16) + 0x30;
803 2 lowByte = (UIData[i]%16) + 0x30;
804 2 if(highByte>'9')
805 2 highByte = highByte - ':' + 'a';
806 2 if(lowByte>'9')
807 2 lowByte = lowByte - ':' + 'a';
808 2 LCDChar(2*i+20,highByte);
809 2 LCDChar(2*i+21,lowByte);
810 2 }
811 1 }
812
813 void SaveCellDataToEEPROM(UCHAR group,UCHAR currentCell)
814 {
815 1 //UIData
816 1 UINT EEPaddr; //e2prom里的实际地址
817 1 EEPaddr = (group-1)*160+0xA0 + (currentCell-1)*8; //计算改组内基站数据地址
818 1 AddressL= (UCHAR)(EEPaddr&0x00ff);
819 1 AddressH= (UCHAR)(EEPaddr>>8);
820 1 Write_I2c_Page(UIData,8);
821 1
822 1 }
823
824
825 void Write_I2c_Page0(void)
826 {
827 1 UCHAR num;
828 1 UCHAR temp;
829 1 UCHAR num1;
830 1 UCHAR num2=0;
831 1 UCHAR ADDRH;
832 1 UCHAR ADDRL;
833 1 UINT addr;
834 1 for(num1=0;num1<64;num++)
835 1 {
836 2 addr=num1*num2;
837 2 ADDRL= (UCHAR)(addr&0x00ff);
838 2 ADDRH= (UCHAR)(addr>>8);
839 2 StartIic;
840 2 Write_8bit(Iic_Write);
841 2 Write_8bit(ADDRH);
842 2 Write_8bit(ADDRL);
843 2 for(num=0;num<128;num++)
844 2 {
845 3 Write_8bit(0xff);
846 3 }
847 2 EndIic;
848 2 num=0;
849 2 while(num<250){Wait_Nop;Wait_Nop;num++;}
850 2
851 2 temp = (addr%10) + 0x30;
852 2 LCDChar(31,temp);
853 2 addr /= 10;
854 2
855 2 temp = (addr%10) + 0x30;
856 2 LCDChar(30,temp);
857 2 addr /= 10;
858 2
859 2 temp = (addr%10) + 0x30;
C51 COMPILER V7.09 FUNCTION 10/11/2006 16:32:11 PAGE 15
860 2 LCDChar(29,temp);
861 2 addr /= 10;
862 2
863 2 temp = (addr%10) + 0x30;
864 2 LCDChar(28,temp);
865 2
866 2 num2+=128;
867 2 }
868 1 }
869
870 void Query_I2c_Page(void)
871 {
872 1 UCHAR num;
873 1 UCHAR pos;
874 1 UCHAR temp;
875 1 UCHAR GROUPP;
876 1 UCHAR totalnum;
877 1 NUM_GROUG_DISPLAY();//TOTAL CELLS GROUP DATA ;
878 1 totalnum=Read_I2c_byte(0,0x10);//HEX
879 1 temp = (totalnum%10) + 0x30;
880 1 LCDChar(6,temp);
881 1 totalnum /= 10;
882 1 temp = (totalnum%10) + 0x30;
883 1 LCDChar(7,temp);
884 1 GROUPP=Read_I2c_byte(0,0);//HEX
885 1 temp = (GROUPP%10) + 0x30;
886 1 LCDChar(12,temp);
887 1 GROUPP /= 10;
888 1 temp = (GROUPP%10) + 0x30;
889 1 LCDChar(13,temp);
890 1 Delay5s();
891 1 Delay5s();
892 1 EEPnum_Display();
893 1 for (num=1;num<=totalnum;num++)
894 1 {
895 2 pos=16+3*(num-1);
896 2 if(pos>30)
897 2 pos=pos-15;
898 2 GROUPP=Read_I2c_byte(0,num);
899 2 temp = (GROUPP%10) + 0x30;
900 2 LCDChar(pos,temp);
901 2 GROUPP /= 10;
902 2 temp = (GROUPP%10) + 0x30;
903 2 LCDChar(pos+1,temp);
904 2 Delay5s();
905 2
906 2
907 2 }
908 1 EEPQ_Display();
909 1 }
910
911
912
913
914
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3199 ----
CONSTANT SIZE = 755 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.09 FUNCTION 10/11/2006 16:32:11 PAGE 16
DATA SIZE = 25 50
IDATA SIZE = ---- ----
BIT SIZE = 3 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -