⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.lst

📁 单片机的主控端
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -