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

📄 fifo.lst

📁 TS12864液晶驱动
💻 LST
字号:
C51 COMPILER V8.02   FIFO                                                                  07/26/2008 19:16:14 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE FIFO
OBJECT MODULE PLACED IN fifo.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe fifo.c DB OE BR

line level    source

   1          /************************************************************              已测试
   2           *      Copyright (C) 2006, 华中科技大学电气与电子科技创新中心  *
   3           *      All Rights Reserved.                                    *
   4           *                                                              *
   5           *      文件名:         fifo.c                                      * 
   6           *      文件描述:                                                   *
   7           *                                                                      *
   8           *      当前版本:       1.0                                         * 
   9           *      作者:           王璠(wang.fan@smail.hust.edu.cn)            *
  10           *      完成日期:       2008年7月23日                               *
  11           ************************************************************/
  12          #include"fifo.h"
  13          
  14          #define DEPTH 80                                 //存储深度设置
  15          
  16          unsigned char xdata fifo[8][DEPTH];               //FIFO寄存器
  17          static unsigned char fifowp;                      //FIFO写指针
  18          static unsigned char fiforp;                      //FIFO读指针 
  19          //static unsigned char virtualwp;                   //虚拟写指针,用于Scan
  20          //static unsigned char virtualrp;                   //虚拟读指针,用于Scan
  21          
  22          
  23          
  24          
  25          /*****************************
  26          FIFO初始化
  27          ******************************/
  28          void FIFO_Init(void)
  29          {
  30   1              fifowp = 0;
  31   1              fiforp = 0;
  32   1      //  virtualwp = 0;
  33   1      //      virtualrp = 0;
  34   1      }
  35          
  36          /*****************************
  37          写FIFO
  38          ******************************/
  39          void WriteFIFO(unsigned char *logic)
  40          {
  41   1              unsigned char i;
  42   1      
  43   1              for(i=0;i<8;i++)                         
  44   1              { 
  45   2                      fifo[i][fifowp] = logic[i];           //数据写入fifo
  46   2              }
  47   1      
  48   1              if(fifowp>DEPTH-1)                       
  49   1                      fifowp = 0;                           //循环指针      
  50   1              else
  51   1                      fifowp++;                             //写指针后移
  52   1              if(fifowp==fiforp)
  53   1                      fiforp = fifowp + 1;                  //若未读数据被覆盖,读指针移到写指针的上一个单元 
  54   1      
  55   1      //      virtualwp = fifowp;
C51 COMPILER V8.02   FIFO                                                                  07/26/2008 19:16:14 PAGE 2   

  56   1      //      virtualrp = fiforp;
  57   1      }
  58          
  59          /******************************
  60          读FIFO
  61          *******************************/
  62          void ReadFIFO(unsigned char *logic) reentrant
  63          {
  64   1              unsigned char i;
  65   1      
  66   1          for(i=0;i<8;i++)
  67   1              {
  68   2                      if(fifowp == fiforp)
  69   2                      {
  70   3                              logic[i] = 0;
  71   3                      }
  72   2                      else if(fifowp > fiforp)
  73   2                      {
  74   3                              logic[i] = fifo[i][fiforp];
  75   3                              if(i==7)
  76   3                                      fiforp++;
  77   3                      }
  78   2                      else                                    // if(fifowp < fiforp) 
  79   2                      {
  80   3                              logic[i] = fifo[i][fiforp];
  81   3                              if(i==7)
  82   3                                      fiforp++;
  83   3                              if(fiforp == DEPTH)
  84   3                                      fiforp = 0;
  85   3                      }
  86   2              }
  87   1      
  88   1      //      virtualwp = fifowp;
  89   1      //      virtualrp = fiforp;
  90   1      }
  91          
  92          
  93          
  94          
  95          /**********************************
  96          查看FIFO,不改变读写指针的位置
  97          **********************************/
  98          /*
  99          void ScanFIFO(unsigned char *logic)
 100          {
 101                  unsigned char i;
 102          
 103              for(i=0;i<8;i++)
 104                  {
 105                          if(virtualwp == virtualrp)
 106                          {
 107                                  logic[i] = 0;
 108                          }
 109                          else if(virtualwp > virtualrp)
 110                          {
 111                                  logic[i] = fifo[i][virtualrp];
 112                                  if(i==7)
 113                                          virtualrp++;
 114                          }
 115                          else                                    // if(fifowp < fiforp) 
 116                          {
 117                                  logic[i] = fifo[i][virtualrp];
C51 COMPILER V8.02   FIFO                                                                  07/26/2008 19:16:14 PAGE 3   

 118                                  if(i==7)
 119                                          virtualrp++;
 120                                  if(virtualrp == DEPTH)
 121                                          virtualrp = 0;
 122                          }
 123                  }
 124          }
 125          */
 126          
 127          
 128          /********************************
 129          返回FIFO中的数据量
 130          ********************************/
 131          unsigned char FIFO_length(void)
 132          {
 133   1              unsigned char num;
 134   1                                                                      
 135   1              if(fiforp == fifowp)
 136   1                      num = 0;
 137   1              else if(fifowp > fiforp)
 138   1                      num = (fifowp-fiforp);
 139   1              else                                         // if(fifowp < fiforp) 
 140   1                      num = (DEPTH-fifowp+fiforp);
 141   1      
 142   1              return num;
 143   1      }


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