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

📄 usb_disk.lst

📁 mp3c程序源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 427   2               K9F_CLE = 0;
 428   2                   K9F_ALE = 1;           
 429   2                       K9F5608 = 0;                                                     //A0-A7        
 430   2                       K9F5608 = (PG.addr[3]&0x3f)|BuffBlock;   //A9-A16  
 431   2                       K9F5608 = 0xff;                                                  //A17-A24
 432   2                       //K9F_FUN = D_DATA;
 433   2                       K9F_ALE = 0;
 434   2                       for(i=0;i<8;i++)
 435   2                         {
 436   3                                while (!(UEPINT & EP2));      
 437   3                                WriteFlash();
 438   3                                UEPSTAX &= 0xB9;
 439   3                         }
 440   2                       //K9F_FUN = COMMAND;
 441   2                       K9F_CLE = 1;
 442   2                       K9F5608 = 0x10;
 443   2                       //K9F_FUN = D_DATA;
 444   2                       K9F_CLE = 0;
 445   2                       length--;      
 446   2                       delay();
 447   2                       while(!K9F_RB);
 448   2      
 449   2                   if(((PG.addr[3]&0x1f)==0x1f)||(length==0))
 450   2                         {
 451   3                         
 452   3                                  for(i=((PG.addr[3]&0x1f)+1);i<32;i++)
 453   3                           {
 454   4                             //K9F_FUN = COMMAND;
 455   4                                 K9F_CLE = 1;
 456   4                                         K9F5608 = 0x00;
 457   4                                 //K9F_FUN = ADDRESS;
 458   4                         K9F_CLE = 0;
 459   4                             K9F_ALE = 1;                   
 460   4                                         K9F5608 = 0;                                              //A0-A7  
 461   4                         K9F5608 = (PG.addr[3]&0xe0)|i;            //A9-A16
 462   4                             K9F5608 = PG.addr[2];                         //A17-A24 
 463   4                                 //K9F_FUN = D_DATA;
 464   4                                 K9F_ALE = 0;
 465   4                                         delay();
 466   4                                 while(!K9F_RB);
 467   4      
 468   4                                 //K9F_FUN = COMMAND;
 469   4                                 K9F_CLE = 1;
 470   4                                         K9F5608 = 0x8a;
 471   4                                 //K9F_FUN = ADDRESS;
 472   4                         K9F_CLE = 0;
 473   4                             K9F_ALE = 1;
 474   4                                         K9F5608 = 0;                                                 //A0-A7
 475   4                         K9F5608 = (PG.addr[3]&0x20)|BuffBlock|i; //A9-A16
 476   4                             K9F5608 = 0xff;                                      //A17-A24 
 477   4                                 //K9F_FUN = D_DATA;
 478   4                                 K9F_ALE = 0;
 479   4                                         delay();
 480   4                                 while(!K9F_RB);
 481   4                           }
 482   3                                      
 483   3                                //K9F_FUN = COMMAND;
 484   3                    K9F_CLE = 1;
 485   3                                K9F5608 = 0x60;                                //擦除当前block
 486   3                    //K9F_FUN = ADDRESS;
 487   3                    K9F_CLE = 0;
 488   3                        K9F_ALE = 1;
C51 COMPILER V7.50   USB_DISK                                                              11/18/2005 21:31:23 PAGE 9   

 489   3                                K9F5608 = PG.addr[3];          //A9-A16
 490   3                        K9F5608 = PG.addr[2];                  //A17-A24 
 491   3                    //K9F_FUN = COMMAND;
 492   3                    K9F_ALE = 0;
 493   3                        K9F_CLE = 1;
 494   3                                K9F5608 = 0xd0;
 495   3                    //K9F_FUN = D_DATA;
 496   3                                K9F_CLE = 0;
 497   3                                delay();
 498   3                            while(!K9F_RB);        //等待操作完成  
 499   3      
 500   3                                for(i=0;i<32;i++)     
 501   3                                  {
 502   4                                         //K9F_FUN = COMMAND;
 503   4                                         K9F_CLE = 1;
 504   4                                         K9F5608 = 0x00;
 505   4                                         //K9F_FUN = ADDRESS;
 506   4                         K9F_CLE = 0;
 507   4                             K9F_ALE = 1;
 508   4                                         K9F5608 = 0;                                         //A0-A7
 509   4                         K9F5608 = (PG.addr[3]&0x20)|BuffBlock|i; //A9-A16
 510   4                             K9F5608 = 0xff;                                  //A17-A24 
 511   4                                         //K9F_FUN = D_DATA;
 512   4                                         K9F_ALE = 0;
 513   4                                         delay();
 514   4                                 while(!K9F_RB); 
 515   4      
 516   4                                         //K9F_FUN = COMMAND;
 517   4                                         K9F_CLE = 1;
 518   4                                         K9F5608 = 0x8a;  
 519   4                                         //K9F_FUN = ADDRESS;
 520   4                         K9F_CLE = 0;
 521   4                             K9F_ALE = 1;
 522   4                                         K9F5608 = 0;                                            //A0-A7
 523   4                         K9F5608 = (PG.addr[3]&0xe0)|i;      //A9-A16
 524   4                             K9F5608 = PG.addr[2];                       //A17-A24 
 525   4                                         //K9F_FUN = D_DATA;
 526   4                                         K9F_ALE = 0;
 527   4                                         delay();
 528   4                                 while(!K9F_RB);
 529   4                                  }
 530   3      
 531   3                                if(length>0)
 532   3                                  {
 533   4                                         //K9F_FUN = COMMAND;
 534   4                         K9F_CLE = 1;
 535   4                                         K9F5608 = 0x60;
 536   4                         //K9F_FUN = ADDRESS;
 537   4                         K9F_CLE = 0;
 538   4                             K9F_ALE = 1;
 539   4                                         K9F5608 = (PG.addr[3]&0x20)|BuffBlock;  //A9-A16
 540   4                             K9F5608 = 0xff;                                     //A17-A24 
 541   4                         //K9F_FUN = COMMAND;
 542   4                         K9F_ALE = 0;
 543   4                             K9F_CLE = 1;
 544   4                                         K9F5608 = 0xD0;
 545   4                         //K9F_FUN = D_DATA;
 546   4                                         K9F_CLE = 0;
 547   4                                         delay();
 548   4                                         while(!K9F_RB);
 549   4                                      }
 550   3                         }
C51 COMPILER V7.50   USB_DISK                                                              11/18/2005 21:31:23 PAGE 10  

 551   2                        PG.page++;
 552   2                }
 553   1      
 554   1              TransmitCSW();
 555   1              
 556   1              K9F_CS = 1;     
 557   1      }       
 558          
 559          void main_rxdone()
 560          {
 561   1        unsigned char data i;
 562   1        unsigned char data Buf[64];
 563   1      
 564   1        i = ReadEp(2,Buf);
 565   1      
 566   1               P3_5 =0;
 567   1               bulk_CSW[4] = Buf[4];  bulk_CSW[5] = Buf[5]; bulk_CSW[6] = Buf[6]; bulk_CSW[7] = Buf[7];
 568   1               for(i=0;i<12;i++) bulk_CBW.CBWCB[i] = Buf[i+15];
 569   1               switch(bulk_CBW.CBWCB[0])
 570   1                      {
 571   2                              case Inquiry                         :WriteEpBulk(1,36,B_InquiryData);break;
 572   2                              case Mode_Sense                      :SCSI_Mode_Sense();              break;
 573   2                              case Read10                                  :SCSI_Read10();                  break;
 574   2                              case Read_Capacity                   :WriteEpBulk(1, sizeof(B_Read_Capacity), B_Read_Capacity);break;
 575   2                              case Read_Format_Capacities      :SCSI_Read_Format_Capacities();  break;
 576   2                              case Test_Unit_Ready         :TransmitCSW();                  break;
 577   2                              case Verify                                  :TransmitCSW();                  break;
 578   2                              case Write10                         :SCSI_Write10();                 break;
 579   2                              case Medium_Removal                  :TransmitCSW();                  break;
 580   2                      }
 581   1           P3_5 =1;
 582   1      }
 583          
 584          void Flash_Reset(void)                                               //flash reset
 585          { 
 586   1              unsigned int data i;
 587   1              K9F_RB = 1;
 588   1              K9F_CLE = 0;
 589   1              K9F_ALE = 0;
 590   1              K9F_CS = 1;
 591   1      
 592   1              //K9F_FUN = COMMAND;                     
 593   1              K9F_CS = 0;
 594   1              K9F_CLE = 1;
 595   1              K9F5608 = 0xff;                  //reset command
 596   1              K9F_CLE = 0;
 597   1              K9F_CS = 1;
 598   1              
 599   1              for (i=0; i<3000; i++) ;                                         //delay        
 600   1      }
 601          
 602          
 603          void ReadPage(unsigned int block, unsigned int page, unsigned char *pPage)
 604          {
 605   1              int i;
 606   1              unsigned int blockPage = (block << 5) | page;
 607   1      
 608   1              //K9F_FUN = COMMAND;
 609   1              K9F_CS = 0;
 610   1              K9F_CLE = 1;
 611   1              K9F5608 = 0x00;
 612   1              //K9F_FUN = ADDRESS;
C51 COMPILER V7.50   USB_DISK                                                              11/18/2005 21:31:23 PAGE 11  

 613   1          K9F_CLE = 0;
 614   1              K9F_ALE = 1;
 615   1              K9F5608 = 0;                                             //A0-A7
 616   1          K9F5608 = blockPage & 0xff;              //A9-A16
 617   1              K9F5608 = (blockPage >> 8) & 0xff;   //A17-A24 
 618   1              //K9F_FUN = D_DATA;
 619   1              K9F_ALE = 0;
 620   1              i = 512;
 621   1          while(!K9F_RB);
 622   1      
 623   1              while((i--)>0) 
 624   1              {
 625   2                      *pPage++ = K9F5608; 
 626   2              }
 627   1              K9F_CS = 1;
 628   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1514    ----
   CONSTANT SIZE    =    184    ----
   XDATA SIZE       =   ----      13
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25     118
   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 + -