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

📄 main.lst

📁 ATMEL AT89C51SND1 IDE TO USB READER
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 13:08:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c OPTIMIZE(9,SPEED) BROWSE INCDIR(D:\IDE_demo_code\INCLUDE\) DEBUG OBJ
                    -ECTEXTEND PRINT(.\LST\Main.lst)

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 "include\AT89C51SND.h"
   9          #include "include\typedef.h"
  10          #include "include\config.h"
  11          #include "include\constant.h"
  12          #include "include\global.h"
  13          #include "include\gpio.h"
  14          #include "include\macro.h"
  15          #include "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();
  52   1              printf("hd_initial_ok\n");
  53   1      
  54   1              while(1)
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 13:08:49 PAGE 2   

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

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

 178   1      }
 179          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    278    ----
   CONSTANT SIZE    =     30    ----
   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 + -