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

📄 fw.lst

📁 FS7805 使用APLIF的demoFS7805 使用APLIF的demo
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   FW                                                                    04/17/2007 10:42:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FW
OBJECT MODULE PLACED IN .\Output\Fw.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Fw.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Output\Fw.lst) OBJECT(.\Output
                    -\Fw.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          * File:     Fw.C
   4          * Contents: Firmware frameworks task dispatcher and device request parser source
   5          *
   6          * $Date:    04/06/06    Kimi    v0.1
   7          * $Date:    04/25/06    Kimi    v0.2
   8          * $Date:    04/30/06    Kimi    v0.3
   9          * $Date:    01/23/07    Kevin   v0.4
  10          * Copyright (c) 2006 Fameg, Inc. All rights reserved
  11          *********************************************************************************************************
  12          */
  13          
  14          #include "fs7805.h"
  15          #include "fs7805regs.h"
  16          #include "string.h"
  17          
  18          const INT8U xdata WaveData[128] =
  19          {
  20          // Wave 0
  21          /* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  22          /* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  23          /* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  24          /* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  25          // Wave 1
  26          /* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  27          /* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  28          /* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  29          /* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  30          // Wave 2
  31          /* LenBr */ 0x01,     0x02,     0x39,     0x00,     0x00,     0x00,     0x00,     0x00,
  32          /* Opcode*/ 0x00,     0x02,     0x07,     0x00,     0x00,     0x00,     0x00,     0x00,
  33          /* LFun  */ 0x00,     0x00,     0x2D,     0x00,     0x00,     0x00,     0x00,     0x00,
  34          /* Output*/ 0xFF,     0xFF,     0xFF,     0x00,     0x00,     0x00,     0x00,     0x00,
  35          // Wave 3
  36          /* LenBr */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  37          /* Opcode*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  38          /* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  39          /* Output*/ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
  40          };
  41          
  42          /*
  43          *********************************************************************************************************
  44          *                                       VARIABLE PROTOTYPES
  45          *********************************************************************************************************
  46          */
  47          union FIFODataLen
  48          {
  49              INT16U  Val;
  50              INT8U   Byte[2];
  51          };
  52          
  53             union FIFODataLen Length;
  54          #ifdef  PINGPONG_FIFO
C51 COMPILER V7.50   FW                                                                    04/17/2007 10:42:47 PAGE 2   

                 INT8U SW_FifoOut_Toggle = 0, SW_FifoIn_Toggle = 0;
              #endif
  57             INT16U UsbDmaBuffer;
  58          
  59          /*
  60          *********************************************************************************************************
  61          *                                       FUNCTION PROTOTYPES
  62          *********************************************************************************************************
  63          */
  64          #ifdef  PINGPONG_FIFO
               void  FifoIn (INT8U *pReadBuffer, INT8U BufferNo, INT16U DataLen);
               void  FifoOut (INT8U *pReadBuffer, INT8U BufferNo);
               void  SendDataCmd (INT8U BufferNo);
              #else
  69           void  FifoIn (INT8U *pReadBuffer, INT16U DataLen);
  70           void  FifoOut (INT8U *pReadBuffer);
  71           void  SendDataCmd (void);
  72          #endif
  73           void  UsbBulkIn (INT8U *pReadBuffer, INT16U DataLen);
  74           void  UsbBulkOut (INT8U *pReadBuffer);
  75           void  UsbInit (void);
  76           void  KsocInit (void);
  77          
  78          #ifdef  PINGPONG_FIFO
              /*
              *********************************************************************************************************
              *                                             USBBULKOUT
              *
              * Description: Device receive data from host
              *
              * Arguments  : pReadBuffer   buffer address
              *
              * Returns    : none
              *********************************************************************************************************
              */
              void  UsbBulkOut (INT8U *pReadBuffer)
              {
                  if ((EP2FIFOCS & bmFIFO0_FULL) && (EP2FIFOCS & bmFIFO1_FULL))
                  {                                                  // FULL_0 = 1 and FULL_1 = 1
                      if (SW_FifoOut_Toggle == 0)
                      {
                          FifoOut(pReadBuffer, 0);                   // Read FIFO0
                      }
                      else
                      {
                          FifoOut(pReadBuffer, 1);                   // Read FIFO1
                      }
                  }
                  else if (EP2FIFOCS & bmFIFO0_FULL)                 // FULL_0 = 1
                  {
                      FifoOut(pReadBuffer, 0);                       // Read FIFO0
                  }
                  else if (EP2FIFOCS & bmFIFO1_FULL)                 // FULL_1 = 1
                  {
                      FifoOut(pReadBuffer, 1);                       // Read FIFO1
                  }
              }
              
              
              /*
              *********************************************************************************************************
              *                                             USBBULKIN
C51 COMPILER V7.50   FW                                                                    04/17/2007 10:42:47 PAGE 3   

              *
              * Description: Device send data to host
              *
              * Arguments  : pReadBuffer   buffer address
              *
              *              DataLen       Data Length
              *
              * Returns    : none
              *********************************************************************************************************
              */
              void  UsbBulkIn (INT8U *pReadBuffer, INT16U DataLen)
              {
                  if ((!(EP1FIFOCS & bmFIFO0_FULL)) && (!(EP1FIFOCS & bmFIFO1_FULL)))
                  {                                                  // FULL_0 = 0 and FULL_1 = 0
                      if ((EP1FIFOCS & bmFIFO_TOG) == 0)
                      {
                          FifoIn(pReadBuffer, 0, DataLen);           // Write FIFO0
                      }
                      else
                      {
                          FifoIn(pReadBuffer, 1, DataLen);           // Write FIFO1
                      }
                  }
                  else if (!(EP1FIFOCS & bmFIFO0_FULL))              // FULL_0 = 0
                  {
                      FifoIn(pReadBuffer, 0, DataLen);               // Write FIFO0
                  }
                  else if (!(EP1FIFOCS & bmFIFO1_FULL))              // FULL_1 = 0
                  {
                      FifoIn(pReadBuffer, 1, DataLen);               // Write FIFO1
                  }
              
                  if ((!(EP1FIFOCS & bmFIFO0_FULL)) && (!(EP1FIFOCS & bmFIFO1_FULL)))
                  {                                                  // FULL_0 = 0 and FULL_1 = 0
                      if (SW_FifoIn_Toggle == 0)
                      {
                          SendDataCmd(0);                            // Complete Write FIFO0
                      }
                      else
                      {
                          SendDataCmd(1);                            // Complete Write FIFO1
                      }
                  }
                  else if (!(EP1FIFOCS & bmFIFO0_FULL))              // FULL_0 = 0
                  {
                      SendDataCmd(0);                                // Complete Write FIFO0
                  }
                  else if (!(EP1FIFOCS & bmFIFO1_FULL))              // FULL_1 = 0
                  {
                      SendDataCmd(1);                                // Complete Write FIFO1
                  }
              }
              
              
              /*
              *********************************************************************************************************
              *                                             FIFOOUT
              *
              * Description: Device receive data from host using FIFO function
              *
              * Arguments  : pReadBuffer   buffer address
              *
C51 COMPILER V7.50   FW                                                                    04/17/2007 10:42:47 PAGE 4   

              *              BufferNo      FIFO0 or FIFO1
              *
              * Returns    : none
              *********************************************************************************************************
              */
              void  FifoOut (INT8U *pReadBuffer, INT8U BufferNo)
              {
                  SW_FifoOut_Toggle       = !BufferNo;               // Invert SW_FifoOut_Toggle polarity
              
                  if (BufferNo == 0)
                  {
                      Length.Byte[1]      = EP2CNT0L;                // Get low byte data
                      Length.Byte[0]      = EP2CNTH & 0x07;          // Get high byte data
                      UsbDmaBuffer        = DMA_FIFO2_0;             // Get FIFO address
                  }
                  else
                  {
                      Length.Byte[1]      = EP2CNT1L;
                      Length.Byte[0]      = (EP2CNTH & 0x70) >> 4;
                      UsbDmaBuffer        = DMA_FIFO2_1;
                  }
                  memcpy(pReadBuffer, (INT8U xdata *)UsbDmaBuffer, Length.Val);
              
                  if (BufferNo == 0)                                 // Switch FIFO_Toggle and Clear FULL bit
                  {
                      EP2FIFOCS           = (EP2FIFOCS | bmFIFO_TOG_WE) | bmFIFO_TOG;
                      EP2FIFOCS           = (EP2FIFOCS | bmFIFO0_FULL_WE) & (~bmFIFO0_FULL);
                  }
                  else
                  {
                      EP2FIFOCS           = (EP2FIFOCS | bmFIFO_TOG_WE) & (~bmFIFO_TOG);
                      EP2FIFOCS           = (EP2FIFOCS | bmFIFO1_FULL_WE) & (~bmFIFO1_FULL);
                  }
                  EP2CS                   = EP2CS | bmEP_RXTXEN;     // Enable RXTX
              }
              
              
              /*
              *********************************************************************************************************
              *                                             FIFOIN

⌨️ 快捷键说明

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