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

📄 fram.lst

📁 实用的空调计费系统
💻 LST
字号:
C51 COMPILER V7.50   FRAM                                                                  07/20/2005 09:16:50 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FRAM
OBJECT MODULE PLACED IN E:\空调计费\空调计费\FRAM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\空调计费\空调计费\FRAM.C DB SB OE

line level    source

   1          #include "P89C60X2.h"
   2          #include "hicj6.h"
   3          #include "fram.h"
   4          
   5          /* here is the instrution of x25045*/
   6          #define WREN 0x06
   7          #define WRDI 0x04
   8          #define RDSR 0x05
   9          #define WRSR 0x01
  10          #define READ 0x03
  11          #define WRITE 0x02
  12          extern union hdd_long {BYTE Hdd_B[4];unsigned long Hdd_L;} Hdd_Str;
  13          
  14          unsigned char Read8()
  15          {
  16   1        bit bData;
  17   1        BYTE cLoop;
  18   1        BYTE cData;
  19   1        for(cLoop=0;cLoop<8;cLoop++)
  20   1        {
  21   2         SK=1;
  22   2         SK=0;
  23   2         SIO=1;
  24   2         bData=SIO;
  25   2         cData<<=1;
  26   2         if(bData)
  27   2          {
  28   3           cData|=0x01;
  29   3           }
  30   2         }
  31   1         return cData;
  32   1       }
  33          
  34          void Write8(BYTE cData)
  35          {
  36   1        BYTE cLoop;
  37   1        for(cLoop=0;cLoop<8;cLoop++)
  38   1        {
  39   2         if((cData&0x80)==0)    SIO=0;
  40   2          else  SIO=1;
  41   2         SK=0;
  42   2         SK=1;
  43   2         cData<<=1;
  44   2         }
  45   1         SIO=1;
  46   1      }
  47          
  48          BYTE ReadSR()
  49          {
  50   1        BYTE cData;
  51   1        CS=0;
  52   1        Write8(RDSR);
  53   1        cData=Read8();
  54   1        CS=1;
  55   1        return cData;
C51 COMPILER V7.50   FRAM                                                                  07/20/2005 09:16:50 PAGE 2   

  56   1      }
  57           /*
  58          BYTE WriteSR(BYTE cData)
  59          {
  60            BYTE cTemp;
  61            cTemp=ReadSR();
  62            if((cTemp&0x01)==1)
  63            return 0;
  64            CS=0;
  65            Write8(WREN);
  66            CS=1;
  67            CS=0;
  68            Write8(WRSR);
  69            Write8(cData);
  70            CS=1;
  71            return 1;
  72          }
  73             */
  74          
  75          #ifdef Fm25040
              BYTE Read1B(WORD cAddress)
              /* 读入一个字节,cAddress为读入地址 */
              {
                BYTE cData,a;
                EA=0;
                while((ReadSR()&0x01)==1)
                {}
                CS=0;
                short_delay();
                if(cAddress<0x100)
                  {
                   a=READ;
                  }
                 else
                  {
                   a=READ|0x08;
                   }
                Write8(a);
                a=cAddress;
                Write8(a);
                cData=Read8();
                CS=1;
                EA=1;
                return cData;
              }
              
              void Write1B(BYTE cData,WORD cAddress)
              /* 写入一个字节,cData为写入的数,cAddress为写入地址 */
              {
                BYTE a;
                EA=0;
              while((ReadSR()&0x01)==1)
                {}
                CS=0;
                short_delay();
                Write8(WREN);
                SK=0;
                CS=1;
                CS=0;
                if(cAddress<0x100)
                {
                 a=WRITE;
C51 COMPILER V7.50   FRAM                                                                  07/20/2005 09:16:50 PAGE 3   

                }
                else
                {
                 a=WRITE|0x08;
                }
                Write8(a);
                a=cAddress;
                Write8(a);
                Write8(cData);
                SK=0;
                CS=1;
                EA=1;
              }
              #endif
 132          
 133          #ifdef Fm25640
 134          BYTE Read1B(WORD cAddress)
 135          /* 读入一个字节,cAddress为读入地址 */
 136          {
 137   1        BYTE cData,a;
 138   1        EA=0;
 139   1        while((ReadSR()&0x01)==1)
 140   1        {}
 141   1        CS=0;
 142   1        short_delay();
 143   1        Write8(READ);
 144   1        a=cAddress>>8;
 145   1        Write8(a);
 146   1        a=cAddress;
 147   1        Write8(a);
 148   1        cData=Read8();
 149   1        CS=1;
 150   1        EA=1;
 151   1        return cData;
 152   1      }
 153          
 154          void Write1B(BYTE cData,WORD cAddress)
 155          /* 写入一个字节,cData为写入的数,cAddress为写入地址 */
 156          {
 157   1        BYTE a;
 158   1        EA=0;
 159   1      while((ReadSR()&0x01)==1)
 160   1        {}
 161   1        CS=0;
 162   1        short_delay();
 163   1        Write8(WREN);
 164   1        SK=0;
 165   1        CS=1;
 166   1        CS=0;
 167   1      
 168   1        Write8(WRITE);
 169   1      
 170   1        a=cAddress>>8;
 171   1        Write8(a);
 172   1        a=cAddress;
 173   1        Write8(a);
 174   1        Write8(cData);
 175   1        SK=0;
 176   1        CS=1;
 177   1        EA=1;
 178   1      }
 179          
C51 COMPILER V7.50   FRAM                                                                  07/20/2005 09:16:50 PAGE 4   

 180          #endif
 181          
 182          unsigned long Read_Hdd(unsigned char i)
 183          {
 184   1       i<<=2;
 185   1       Hdd_Str.Hdd_B[0]=Read1B(i);
 186   1       Hdd_Str.Hdd_B[1]=Read1B(i+1);
 187   1       Hdd_Str.Hdd_B[2]=Read1B(i+2);
 188   1       Hdd_Str.Hdd_B[3]=Read1B(i+3);
 189   1       return Hdd_Str.Hdd_L;
 190   1       }
 191          void Write_Hdd(unsigned char i)
 192          {
 193   1       i<<=2;
 194   1       Write1B(Hdd_Str.Hdd_B[0],i);
 195   1       Write1B(Hdd_Str.Hdd_B[1],i+1);
 196   1       Write1B(Hdd_Str.Hdd_B[2],i+2);
 197   1       Write1B(Hdd_Str.Hdd_B[3],i+3);
 198   1       }
 199          
C51 COMPILER V7.50   FRAM                                                                  07/20/2005 09:16:50 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
CS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0084H  1
SK . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0086H  1
ReadSR . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cData. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_Write8. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cData. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  cLoop. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
short_delay. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
Hdd_Str. . . . . . . . . . . . . . . .  EXTERN   DATA   UNION    -----  4
Read8. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  bData. . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  cLoop. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  cData. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
hdd_long . . . . . . . . . . . . . . .  * TAG *  -----  UNION    -----  4
  Hdd_B. . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  4
  Hdd_L. . . . . . . . . . . . . . . .  MEMBER   -----  U_LONG   0000H  4
_Read_Hdd. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_Read1B. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0004H  -----
  cAddress . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  cData. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  a. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_Write_Hdd . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_Write1B . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cData. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  cAddress . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0001H  2
  a. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
SIO. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0085H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    283    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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