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

📄 hpi32.lst

📁 JLDLED.rar
💻 LST
📖 第 1 页 / 共 4 页
字号:
 678   1                      return FALSE;
 679   1              if((len%32)!=0)
 680   1                      return FALSE;
 681   1              if((len+32)>DeviceInfo.BPB_BytesPerSec)
 682   1                      return FALSE;
 683   1      
 684   1              ThisFile.bFileOpen=0;
 685   1              ThisFile.FatSectorPointer=0;
 686   1      
 687   1              cnum=GetFreeCusterNum32();
 688   1              if(cnum<0x02)
 689   1                      return FALSE;   
 690   1              
 691   1              pBuffer[11]=0x10;
 692   1              pBuffer[21]=(unsigned char)(cnum>>24);
 693   1              pBuffer[20]=(unsigned char)(cnum>>16);
 694   1              pBuffer[27]=(unsigned char)(cnum>>8);
 695   1              pBuffer[26]=(unsigned char)(cnum);
 696   1              pBuffer[28]=0;pBuffer[29]=0;pBuffer[30]=0;pBuffer[31]=0;
 697   1              bstop=0;
 698   1      
 699   1              NowCluster32=DirStartCluster32;         
 700   1                      do
 701   1                      {
 702   2                              NowSector=FirstSectorofCluster32(NowCluster32);
 703   2                              ClusterPointer=NowCluster32;
 704   2                              for(sector=0;sector<DeviceInfo.BPB_SecPerClus;sector++)
 705   2                      {   
 706   3                                      if(!SdReadSector(NowSector+sector,1,DBUF))
 707   3                                              return FALSE;
 708   3                                      DirCount=0;bwrite=0;
 709   3                                      for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 710   3                                      {
 711   4                                      if(len==0)
 712   4                                              {
 713   5                                              if((DBUF[i]==0x00)||(DBUF[i]==0xE5))
 714   5                                              {
 715   6                                              for(j=0;j<32;j++)
 716   6                                                      DBUF[i+j]=*(pBuffer+j);
 717   6                                              if(!SdWriteSector(NowSector+sector,1,DBUF))
 718   6                                                      return FALSE;                                   
 719   6                                              bstop=1;
 720   6                                              break;
 721   6                                              }               
 722   5                                              }
 723   4                                      else
 724   4                                      {
 725   5                                      if(DirCount==0)
 726   5                                              InByte=i;
 727   5                                      if(DBUF[i]==0xE5)                               
 728   5                                              DirCount++;                             
 729   5                                      else if(DBUF[i]==0x00)
 730   5                                              {       
 731   6                                              DirCount++;     
 732   6                                              DBUF[i]=0xE5;
 733   6                                              bwrite=1;                                       
 734   6                                              }
 735   5                                      else
 736   5                                              DirCount=0;
 737   5      
C51 COMPILER V7.00  HPI32                                                                  01/15/2008 09:38:32 PAGE 13  

 738   5                                      if((DirCount*32)>=(len+32))
 739   5                                              {
 740   6                                              for(j=0;j<len;j++)
 741   6                                                      DBUF[InByte+j]=*(pName+j);
 742   6                                              for(j=0;j<32;j++)
 743   6                                                      DBUF[InByte+len+j]=*(pBuffer+j);
 744   6                                              if(!SdWriteSector(NowSector+sector,1,DBUF))
 745   6                                                      return FALSE;                                   
 746   6                                              bstop=1;
 747   6                                              break;
 748   6                                              }
 749   5                                       }                      
 750   4                                      }
 751   3                                      if(bstop==1)break;
 752   3                                      if((len!=0)&&(bwrite==1))
 753   3                                      {
 754   4                                      if(!SdWriteSector(NowSector+sector,1,DBUF))
 755   4                                              return FALSE;
 756   4                              }
 757   3                      }
 758   2                              if(bstop==1)break;
 759   2              
 760   2                              NowCluster32=GetNextClusterNum32(NowCluster32);
 761   2                              if(NowCluster32>DeviceInfo.TotCluster)
 762   2                      {
 763   3                              NowCluster32=CreateClusterLink32(ClusterPointer);
 764   3                              if(NowCluster32==0x00)
 765   3                                       return FALSE;
 766   3                              NowSector=FirstSectorofCluster32(NowCluster32);
 767   3                              for(i=0;i<DeviceInfo.BPB_BytesPerSec;i++) DBUF[i]=0x00;
 768   3                              for(sector=0;sector<DeviceInfo.BPB_SecPerClus;sector++)
 769   3                                      {
 770   4                                      if(!SdWriteSector(NowSector+sector,1,DBUF))
 771   4                                              return FALSE;
 772   4                                      }
 773   3                              }
 774   2                      }while(NowCluster32<=DeviceInfo.TotCluster);
 775   1              
 776   1              if(NowCluster32>DeviceInfo.TotCluster)
 777   1                  return FALSE;
 778   1      ////////////////////////////////////////////////////////////////
 779   1              for(i=64;i<DeviceInfo.BPB_BytesPerSec;i++)      DBUF[i]=0x00;
 780   1              
 781   1              for(i=0;i<43;i++) DBUF[i]=0x20;
 782   1              
 783   1              DBUF[0]=0x2e;
 784   1              for(i=11;i<32;i++) DBUF[i]=pBuffer[i];
 785   1      
 786   1              DBUF[32]=0x2e;DBUF[33]=0x2e;
 787   1              for(i=43;i<64;i++) DBUF[i]=pBuffer[i-32];
 788   1      
 789   1              if(DirStartCluster32==DeviceInfo.RootStartCluster)      //Root Dir
 790   1                      {
 791   2                      DBUF[53]=0;DBUF[52]=0;DBUF[59]=0;DBUF[58]=0;
 792   2                      }
 793   1              else
 794   1                      {
 795   2                      DBUF[53]=(unsigned char)(DirStartCluster32>>24);
 796   2                      DBUF[52]=(unsigned char)(DirStartCluster32>>16);
 797   2                      DBUF[59]=(unsigned char)(DirStartCluster32>>8);
 798   2                      DBUF[58]=(unsigned char)(DirStartCluster32);
 799   2                      }
C51 COMPILER V7.00  HPI32                                                                  01/15/2008 09:38:32 PAGE 14  

 800   1      
 801   1              NowSector=FirstSectorofCluster32(cnum);
 802   1              if(!SdWriteSector(NowSector,1,DBUF))
 803   1                      return FALSE;   
 804   1      
 805   1              DirStartCluster32=cnum;
 806   1      //      ThisFile.ClusterPointer=DirStartCluster32;
 807   1              ThisFile.ClusterPointer=0;              
 808   1              return TRUE;    
 809   1      }
 810          
 811          unsigned char DownDir32(unsigned char *pBuffer)
 812          {
 813   1              unsigned int i;
 814   1              unsigned char j,bstop,sector;   
 815   1                      
 816   1              if(!bFlags.bits.SLAVE_IS_ATTACHED)
 817   1                      return FALSE;   
 818   1              
 819   1              ThisFile.bFileOpen=0;
 820   1              bstop=0;
 821   1      
 822   1              NowCluster32=DirStartCluster32;         
 823   1                      do
 824   1                      {
 825   2                              NowSector=FirstSectorofCluster32(NowCluster32);
 826   2                              for(sector=0;sector<DeviceInfo.BPB_SecPerClus;sector++)
 827   2                      {   
 828   3                                      if(!SdReadSector(NowSector+sector,1,DBUF))
 829   3                                              return FALSE;                           
 830   3                                      for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 831   3                                      {
 832   4                                              if(DBUF[i]==0x00)
 833   4                                                      return FALSE;
 834   4                                              j=0;
 835   4                                              while(DBUF[i+j]==*(pBuffer+j))
 836   4                                              {
 837   5                                                       j=j+1;
 838   5                                                       if(j>10)
 839   5                                                              break;
 840   5                                              }
 841   4                                              if(j>10&&(DBUF[i+11]&0x10))
 842   4                                              {bstop=1;break;}
 843   4                                      }
 844   3                                      if(bstop==1)break;              
 845   3                      }
 846   2                              if(bstop==1)break;      
 847   2                              NowCluster32=GetNextClusterNum32(NowCluster32);                 
 848   2                      }while(NowCluster32<=DeviceInfo.TotCluster);
 849   1                      
 850   1              if(NowCluster32>DeviceInfo.TotCluster)
 851   1                      return FALSE;
 852   1      
 853   1              DirStartCluster32=LSwapINT32(DBUF[i+26],DBUF[i+27],DBUF[i+20],DBUF[i+21]);      
 854   1      //      ThisFile.ClusterPointer=DirStartCluster32;
 855   1              ThisFile.ClusterPointer=0;              
 856   1              return TRUE;
 857   1      }
 858          
 859          unsigned char UpDir32()
 860          {
 861   1              if(!bFlags.bits.SLAVE_IS_ATTACHED)
C51 COMPILER V7.00  HPI32                                                                  01/15/2008 09:38:32 PAGE 15  

 862   1                      return FALSE;   
 863   1              if(DirStartCluster32==DeviceInfo.RootStartCluster)      //Root Dir
 864   1                      return TRUE;    
 865   1              
 866   1              ThisFile.bFileOpen=0;
 867   1      
 868   1              NowSector=FirstSectorofCluster32(DirStartCluster32);
 869   1              if(!SdReadSector(NowSector,1,DBUF))
 870   1                              return FALSE;
 871   1              if(DBUF[32]!=0x2e&&DBUF[33]!=0x2e)      //..
 872   1                              return FALSE;
 873   1      
 874   1              DirStartCluster32=LSwapINT32(DBUF[58],DBUF[59],DBUF[52],DBUF[53]);
 875   1              if(DirStartCluster32==0)        //Root Dir
 876   1                      DirStartCluster32=DeviceInfo.RootStartCluster;  
 877   1      //      ThisFile.ClusterPointer=DirStartCluster32;
 878   1              ThisFile.ClusterPointer=0;              
 879   1              return TRUE;
 880   1      }
 881          
 882          unsigned char UpRootDir32()
 883          {
 884   1              if(!bFlags.bits.SLAVE_IS_ATTACHED)
 885   1                      return FALSE;
 886   1      
 887   1              ThisFile.bFileOpen=0;
 888   1              DirStartCluster32=DeviceInfo.RootStartCluster;  //Root Dir
 889   1                              
 890   1              return TRUE;
 891   1      }
 892          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   8657    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      8       6
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----     136
   IDATA SIZE       =   ----    ----
   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 + -