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

📄 main.lst

📁 HardDiskUSBconnectsourcecode
💻 LST
字号:
C51 COMPILER V8.05a   MAIN                                                                 05/22/2009 15:28:37 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE INCDIR(.\INCLUDE;D:\ch9\include\) DEBUG OBJECTEXTEND

line level    source

   1          /**************************************************************************
   2           *                         H E A D E R   F I L E S
   3           *************************************************************************/
   4          #define  GLOBAL_H
   5          #include <reg51.h>
   6          #include <intrins.h>
   7          #include <stdio.h>
   8          #include "AT89C51SND.h"
   9          #include "typedef.h"
  10          #include "config.h"
  11          #include "constant.h"
  12          #include "global.h"
  13          #include "gpio.h"
  14          #include "macro.h"
  15          #include "external.h"
  16          /**************************************************************************
  17           *                           C O N S T A N T S
  18           *************************************************************************/
  19          
  20          /**************************************************************************
  21           *                              M A C R O S
  22           *************************************************************************/
  23          
  24          /**************************************************************************
  25           *                          D A T A    T Y P E S
  26           *************************************************************************/
  27          
  28          /**************************************************************************
  29           *                         G L O B A L    D A T A
  30           *************************************************************************/
  31          
  32          
  33          UINT8 COUNT=0;
  34          /**************************************************************************
  35           *  Function Name:
  36           *
  37           *  Descriptions:
  38           *
  39           *  Arguments:
  40           *
  41           *  Returns: None
  42           **************************************************************************/
  43          void main(void){
  44   1      
  45   1              UINT8 status;
  46   1              P1_0=1;
  47   1              MCU_Init();
  48   1              usb_init();
  49   1              EA=1;
  50   1              printf(" program start\n");
  51   1              stInit(1);
  52   1              printf("hd_initial_ok\n");
  53   1              while(1)
  54   1              {
  55   2              
C51 COMPILER V8.05a   MAIN                                                                 05/22/2009 15:28:37 PAGE 2   

  56   2                      usb_task();
  57   2                      if(GetCBW()) continue;
  58   2                      status=ufiCommandDecoder();
  59   2                      SendCSW(status);
  60   2                      gState=0;
  61   2      
  62   2              }//while
  63   1      
  64   1      }
  65          
  66          /**************************************************************************
  67           *  Function Name:
  68           *
  69           *  Descriptions:
  70           *
  71           *  Arguments:
  72           *
  73           *  Returns: None
  74           **************************************************************************/
  75          UINT8 GetCBW(void)
  76          {
  77   1              UINT8 i;
  78   1              union {
  79   1                      UINT32 u32value;
  80   1                      UINT8  u8byte[4];
  81   1              } s;
  82   1      
  83   1              Usb_sel_ep(2);
  84   1              if(Usb_receive_out_data())
  85   1              {
  86   2      
  87   2                      //dCBWSignature 43425355
  88   2                      s.u8byte[3]=Usb_read_byte();
  89   2                      s.u8byte[2]=Usb_read_byte();
  90   2                      s.u8byte[1]=Usb_read_byte();
  91   2                      s.u8byte[0]=Usb_read_byte();
  92   2                              if ( (s.u8byte[3]!=0x55)||(s.u8byte[2]!=0x53)||(s.u8byte[1]!=0x42)||(s.u8byte[0]!=0x43) )
  93   2                      {
  94   3      
  95   3                              return 1;
  96   3                      }
  97   2      
  98   2                      //dCBWTag
  99   2                      s.u8byte[3]=Usb_read_byte();
 100   2                      s.u8byte[2]=Usb_read_byte();
 101   2                      s.u8byte[1]=Usb_read_byte();
 102   2                      s.u8byte[0]=Usb_read_byte();
 103   2                      gCBWTag=s.u32value;
 104   2      
 105   2                      //dCBWDataTransferLength
 106   2                      s.u8byte[3]=Usb_read_byte();
 107   2                      s.u8byte[2]=Usb_read_byte();
 108   2                      s.u8byte[1]=Usb_read_byte();
 109   2                      s.u8byte[0]=Usb_read_byte();
 110   2      
 111   2                      gCBWDataLen=s.u32value;
 112   2                      gOrgCBWDataLen=gCBWDataLen;
 113   2      
 114   2                      //bCBWFlag(ignore)
 115   2                      gCBWFlags=(Usb_read_byte())&0x80;
 116   2      
 117   2                      //bCBWLUN
C51 COMPILER V8.05a   MAIN                                                                 05/22/2009 15:28:37 PAGE 3   

 118   2                      gCmdBlock.CB[1]=Usb_read_byte()& 0x0F;      //(J)get LUN from CBW
 119   2      
 120   2                      //bCBWCBLength(ignore)
 121   2                      i=Usb_read_byte();
 122   2                      //CBWCB
 123   2                              for (i=0;i<12;i++)
 124   2                              gCmdBlock.CB[i]=Usb_read_byte();
 125   2                      //printf("cbw:%#2x:%#2x:%#2x:%#2x:%#2x:%#2x:%#2x\n",gCmdBlock.CB[0],gCmdBlock.CB[1],gCmdBlock.CB[2],gCmd
             -Block.CB[3],gCmdBlock.CB[4],gCmdBlock.CB[5],gCmdBlock.CB[6]);
 126   2                      Usb_clear_RXOUT_PP();                       // usb read acknowledgement
 127   2                      gActiveCard=gCmdBlock.CB1.LUN;          //(J)give active LUN
 128   2                      return 0;
 129   2              }
 130   1              else    return 1;
 131   1      
 132   1      }
 133          
 134          /**************************************************************************
 135           *  Function Name:
 136           *
 137           *  Descriptions:
 138           *
 139           *  Arguments:
 140           *
 141           *  Returns: None
 142           **************************************************************************/
 143          
 144          void SendCSW(UINT8 u8Status)
 145          {
 146   1              union {
 147   1                      UINT32 u32value;
 148   1                      UINT8  u8byte[4];
 149   1              } s;
 150   1      
 151   1              Usb_sel_ep(1);
 152   1                      //dCSWSignature
 153   1              Usb_write_byte(0x55);
 154   1              Usb_write_byte(0x53);
 155   1              Usb_write_byte(0x42);
 156   1              Usb_write_byte(0x53);
 157   1      
 158   1              //dCSWTag
 159   1              s.u32value=gCBWTag;
 160   1              UEPDATX=s.u8byte[3];
 161   1              UEPDATX=s.u8byte[2];
 162   1              UEPDATX=s.u8byte[1];
 163   1              UEPDATX=s.u8byte[0];
 164   1              //dCSWDataResidue
 165   1              s.u32value=gCBWDataLen;
 166   1              UEPDATX=s.u8byte[3];
 167   1              UEPDATX=s.u8byte[2];
 168   1              UEPDATX=s.u8byte[1];
 169   1              UEPDATX=s.u8byte[0];
 170   1              //bCSWStatus
 171   1              UEPDATX=u8Status;
 172   1                      Usb_set_TXRDY_bit();
 173   1              while (!(Usb_tx_complete_bit()));
 174   1              Usb_clear_TXCMPL_bit();
 175   1              //printf("u8Status:%#x\n",u8Status);
 176   1      
 177   1      }
 178          
C51 COMPILER V8.05a   MAIN                                                                 05/22/2009 15:28:37 PAGE 4   

 179                                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    308    ----
   CONSTANT SIZE    =     31    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       9
   IDATA SIZE       =      6    ----
   BIT SIZE         =      8    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -