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

📄 protozlg.lst

📁 KeilC51下的USB的slave设备源码,MCS51开发.
💻 LST
字号:
C51 COMPILER V7.06   PROTOZLG                                                              06/23/2003 11:17:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PROTOZLG
OBJECT MODULE PLACED IN Protozlg.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Protozlg.c OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2             //*************************************************************************
   3             //
   4             //                           ZLGMCU
   5             //                           www.zlgmcu.com
   6             // File Name:        protozlg.C
   7             // Revision:         0.4(2002-07-08)
   8             // Author:           Liu Ying Bin
   9             // Use library:  USB51S.LIB
  10             // Note:                     USB51S.LIB不带DMA控制功能
  11             //*************************************************************************
  12             */
  13          
  14          
  15          #include <stdio.h>
  16          #include <string.h>
  17          
  18          #include <reg51.h>                /* special function register declarations   */
  19          #include "isr.h"
  20          #include "mainloop.h"
  21          #include "protozlg.h"
  22          
  23          extern CONTROL_XFER ControlData;
  24          extern IO_REQUEST idata ioRequest;
  25          extern EPPFLAGS bEPPflags;
  26          extern unsigned char idata EpBuf[];
  27          byte_count byte_cnt;
  28          
  29          
  30          void get_firmware_version()
  31          {
  32   1              unsigned char i;
  33   1      
  34   1              i = 0x30; // firmware version number
  35   1              single_transmit((unsigned char *)&i, 1);
  36   1      }
  37          
  38          void get_buffer_size()
  39          {
  40   1              unsigned char i[4];
  41   1      
  42   1              i[0] = EP2_PACKET_SIZE;
  43   1              i[1] = 0;
  44   1              i[2] = 0;
  45   1              i[3] = 0;
  46   1              single_transmit((unsigned char *)&i, 4);
  47   1      }
  48          
  49          void read_write_register(void)
  50          {
  51   1      //      unsigned char i;
  52   1      
  53   1              if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
  54   2                      if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
  55   2                              ControlData.DeviceRequest.wValue == 0 &&
C51 COMPILER V7.06   PROTOZLG                                                              06/23/2003 11:17:00 PAGE 2   

  56   2                              ControlData.DeviceRequest.wLength == 1)
  57   2                              get_firmware_version();
  58   2                      else
  59   2                      if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
  60   2                              ControlData.DeviceRequest.wValue == 0 &&
  61   2                              ControlData.DeviceRequest.wLength == 4)
  62   2                              get_buffer_size();
  63   2                      else
  64   2                              stall_ep0();
  65   2      
  66   2              }       // if read register
  67   1              else{
  68   2                      if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
  69   2                              ControlData.DeviceRequest.wValue == 0 &&
  70   2                              ControlData.DeviceRequest.wLength == 6)
  71   2                              {
  72   3                                      if(ControlData.dataBuffer[5]==0x81)
  73   3                                      {
  74   4                                              byte_cnt.byte.high = ControlData.dataBuffer[4];
  75   4                                              byte_cnt.byte.low = ControlData.dataBuffer[3];
  76   4                                              if(byte_cnt.word<64)
  77   4                                              {
  78   5                                                      D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
  79   5                                                      byte_cnt.word=0;
  80   5                                              }
  81   4                                              else
  82   4                                              {
  83   5                                                      byte_cnt.word=byte_cnt.word-64;
  84   5                                                      D12_WriteEndpoint(5, 64, EpBuf);
  85   5                                              }
  86   4                                      }
  87   3                                      if(ControlData.dataBuffer[5]==0x82)
  88   3                                      {
  89   4      //                                      i = D12_ReadEndpoint(4, 64, EpBuf);//读空端点2数据
  90   4      //                                      i = D12_ReadEndpoint(4, 64, EpBuf);
  91   4                                      }
  92   3                                      single_transmit(0, 0);
  93   3                              }
  94   2                      else
  95   2                              stall_ep0();
  96   2              }       // if write register
  97   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    215    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       5
   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 + -