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

📄 fifobuffer.lst

📁 这是一个基于c8051F060的示波器程序
💻 LST
字号:
C51 COMPILER V7.06   FIFOBUFFER                                                            10/08/2007 22:11:01 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FIFOBUFFER
OBJECT MODULE PLACED IN FIFOBuffer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FIFOBuffer.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "FIFOBuffer.h"
   2          
   3           Node* FIFOHeader;
   4           Node* FIFOTailer;
   5          POOL  data_type DMAPool;
   6          /*
   7          *  _k_malloc_()
   8          *  从片内内存POOL中分配一个u16类型的地址空间
   9          *  分配失败: 返回0;成功:返回地址
  10          */
  11          Node * _k_malloc_()
  12          {
  13   1                      Node *p;
  14   1                      if(  DMAPool.curlen < POOL_BLOCK_NUM )    //(DMAPool.tailer + 1)%POOL_BLOCK_NUM != DMAPool.header )              
  15   1                      {
  16   2                              p = &DMAPool.pool[DMAPool.tailer];
  17   2                              DMAPool.tailer = (DMAPool.tailer + 1)%POOL_BLOCK_NUM;
  18   2                  DMAPool.curlen++; 
  19   2                      }
  20   1                      else
  21   1                              p = 0;
  22   1                      return p;
  23   1      }     
  24          /*
  25          *  _free_()
  26          *  将一个内存的一个Node类型的地址空间换回到POOL中
  27          *  释放成功: 返回1;失败:返回0
  28          */
  29          u8 _free_(Node *p )
  30          {
  31   1                      if( DMAPool.curlen >0 && p==&DMAPool.pool[DMAPool.header] ){
  32   2                              DMAPool.header = (DMAPool.header + 1)%POOL_BLOCK_NUM;                   
  33   2                              DMAPool.curlen--;
  34   2                              return 1;
  35   2                      }
  36   1                      else{
  37   2                              return 0;
  38   2                      }  
  39   1               
  40   1      }
  41          void InitPOOL(void)
  42          {
  43   1                      DMAPool.header = 0;
  44   1                      DMAPool.tailer = 0;
  45   1                      DMAPool.curlen = 0;
  46   1      }
  47          
  48          /*
  49          *       u8 InsertBuffer(u16 * p,  u16 len )
  50          *   向FIFOBuffer中插入一帧数据 数据长度<= DMA_BLOCK_SIZE
  51          *   插入成功:返回1;插入失败: 返回0;插入成功后分配空间失败:2;
  52          */
  53          u8 InsertBuffer( u16 *p ,u8 len)
  54          {
  55   1                       u16 i ;
C51 COMPILER V7.06   FIFOBUFFER                                                            10/08/2007 22:11:01 PAGE 2   

  56   1                   Node* ptmp;
  57   1                   if( len > DMA_BLOCK_SIZE ) return 0;       
  58   1                       if(FIFOTailer)
  59   1                           for( i=0; i<len ; i++){
  60   2                                      FIFOTailer->buffer[i] = *(p+i);                         
  61   2                           }
  62   1                   
  63   1                   ptmp  = (Node*)_k_malloc_();
  64   1                       if(!ptmp) return 2;            
  65   1                               
  66   1                   FIFOTailer->next = ptmp; 
  67   1                               FIFOTailer = FIFOTailer->next;
  68   1                               FIFOTailer->next = (Node*)0;
  69   1                   return 1;
  70   1      }
  71          /*
  72          *       u8 ReadBuffer(u16 * p,  u16 len )
  73          *   从FIFOBuffer中读取一帧数据 数据长度<= DMA_BLOCK_SIZE
  74          *   插入成功:返回1;失败: 返回0
  75          */
  76          u8 ReadBuffer(u16 *  p,  u16 len )
  77          {
  78   1                      u16 i ;
  79   1                  Node * ptmp;
  80   1                  if(len > DMA_BLOCK_SIZE) return 0;
  81   1                  if(FIFOHeader == FIFOTailer) return 0;    
  82   1                  for(i=0 ; i<len ; i++)
  83   1                  {                   
  84   2                                      *(p+i) = FIFOHeader->buffer[i]; 
  85   2                  }
  86   1                  ptmp   = FIFOHeader;
  87   1                      FIFOHeader = FIFOHeader->next;  
  88   1                      return  _free_(ptmp);
  89   1      }
  90          
  91          
  92          void InitFIFOBuffer(void)
  93          {
  94   1                      Node *ptmp;
  95   1                      
  96   1                      InitPOOL();
  97   1                      ptmp  = (Node*)_k_malloc_();
  98   1                      if(!ptmp) return;
  99   1                  FIFOTailer = ptmp;
 100   1                      FIFOHeader = FIFOTailer;
 101   1                      FIFOTailer->next = (Node*)0;
 102   1               
 103   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    698    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    669      22
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -