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

📄 ring.lst

📁 mc51单片机对rtl8019编程,实现ethernet的收发控制.
💻 LST
字号:
C51 COMPILER V6.23a  RING                                                                  05/11/2004 18:03:27 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE RING
OBJECT MODULE PLACED IN ring.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ring.c LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*********************************************************
   2          ** FILE:
   3          **      ring.c
   4          ** DESCRIPTION:
   5          **      Realize the main function of ring buffer operation.
   6          ** NOTES:
   7          **      Copyright(c) 2002 Luo Cheng , All rights reserved.
   8          ** HISTORY:
   9          **      Version         Date            Author
  10          **      1.0             2002/10/17      Luo Cheng       
  11          **
  12          *********************************************************/
  13          
  14          #include "types.h"
  15          #include "ring.h"
  16          #include <string.h>
  17          
  18          /*********************************************************
  19           NAME:
  20           void   ring_init(ring_struc *ring,Uint32 *pmem,Uint16 max_element_number,Uint8 max_block_number)
  21           PURPOSE:
  22                  Initialize the structure of ring; 
  23           PARAMETERS:
  24                  ring: The pointer for a ring structure;
  25                  pmem: The pointer of a memory that will be used by ring;
  26                  max_element_number: The max element number in a block;
  27                  max_block_number: The max block number of ring;
  28           RETURN:
  29                  None;
  30          *********************************************************/
  31          void 
  32          ring_init(ring_struc *ring,void *pmem,Uint16 max_element_number,Uint8 max_block_number)
  33          {
  34   1              ring->pbuffer=pmem;
  35   1              ring->read=ring->write=ring->count=0;
  36   1              ring->element_number=max_element_number;
  37   1              ring->block_number=max_block_number;
  38   1      }
  39          /*********************************************************
  40           NAME:
  41           Bool ring_read(ring_struc *ring, void *pmem);
  42           PURPOSE:
  43                  Read a block from ring; 
  44           PARAMETERS:
  45                  ring: The pointer for a ring structure;
  46                  pmem: The pointer of a memory that will be used to store the data;
  47           RETURN:
  48                  1:  TRUE;
  49                  0:  FALSE;
  50          *********************************************************/
  51          Bool 
  52          ring_read(ring_struc *ring,void *pmem)
  53          {
  54   1              if(ring->count == 0)
  55   1                      return FALSE;
C51 COMPILER V6.23a  RING                                                                  05/11/2004 18:03:27 PAGE 2   

  56   1              memcpy(pmem,ring->pbuffer+ring->read,ring->element_number);
  57   1              ring->read += ring->element_number;
  58   1              if(ring->read > ring->block_number * ring->element_number)
  59   1                      ring->read = 0;
  60   1              ring->count-=1;
  61   1              return TRUE;    
  62   1      }
  63          
  64          /*********************************************************
  65           NAME:
  66           Bool ring_write(ring_struc *ring,void *pmem);
  67           PURPOSE:
  68                  Write data to the ring; 
  69           PARAMETERS:
  70                  ring: The pointer for a ring structure;
  71                  pmem: The pointer of a memory that stored data;
  72           RETURN:
  73                  1:  TRUE;
  74                  0:  FALSE;
  75          *********************************************************/
  76          Bool 
  77          ring_write(ring_struc *ring,void *pmem)
  78          {
  79   1              if(ring->count == ring->block_number)
  80   1                      return FALSE;
  81   1              memcpy(ring->pbuffer+ring->write*ring->element_number,pmem,ring->element_number);
  82   1              ring->write += ring->element_number;
  83   1              if(ring->write > ring->block_number * ring->element_number)
  84   1                      ring->write = 0;
  85   1              ring->count+=1;
  86   1              return TRUE;    
  87   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    756    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      21
   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 + -