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

📄 memory.lst

📁 单片机开发列程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.01   MEMORY                                                                09/30/2007 11:14:56 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MEMORY
OBJECT MODULE PLACED IN Memory.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Memory.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

line level    source

   1          #define __MEMORY_H__
   2          
   3          #include "Config.h"
   4          /********************************************************************************************************
   5          **函数名称:MemInit
   6          **函数功能:外部存储器初始化
   7          **输    入:无
   8          **输    出:无
   9          ********************************************************************************************************/
  10          void MemInit(void)
  11          {
  12   1          DEVMEMCFG |= BIT7;          //使能外部总线访问
  13   1      }
  14          
  15          /********************************************************************************************************
  16          **函数名称:FM18L08Test
  17          **函数功能:并行FRAM存储器FM18L08测试程序,每次写入256个字节,再读回来与写入的比较
  18          **输    入:无
  19          **输    出:无
  20          ********************************************************************************************************/
  21          void FM18L08Test(void)
  22          {
  23   1          //------------------------------------------------------------
  24   1          //并行存储器FM18L08测试时用到的变量
  25   1          //------------------------------------------------------------
  26   1          uchar xdata FM18L08Cnt128;
  27   1          uchar xdata FM18L08Cnt256_1;
  28   1          uchar xdata FM18L08Cnt256_2;
  29   1          uint  xdata FM18L08Addr_1;
  30   1          uint  xdata FM18L08Addr_2;
  31   1          uchar xdata FM18L08DatWR;
  32   1          uchar xdata FM18L08DatRD;
  33   1          uchar xdata FM18L08WRStore[256] = {0};    //写入的数据存储数组
  34   1          //------------------------------------------------------------
  35   1      
  36   1          FM18L08Addr_1 = 0x8000;
  37   1          FM18L08Addr_2 = 0x8000;
  38   1      
  39   1          UART0_Printf("\n ->FM18L08 test begin: \n");
  40   1          for(FM18L08Cnt128 = 128; FM18L08Cnt128 > 0; FM18L08Cnt128 --)
  41   1          {
  42   2              //写入数据
  43   2              //------------------------------------------------------------
  44   2              //为了方便察看读写的数据可以定义宏  FM18L08DATASHOW
  45   2              #ifdef FM18L08DATASHOW
                          UART0_Printf("\n\n write to 0x:%x \n",FM18L08Addr_1);
                      #endif
  48   2              //------------------------------------------------------------
  49   2              for(FM18L08Cnt256_1 = 0; FM18L08Cnt256_1 < 0xFF; FM18L08Cnt256_1 ++)
  50   2              {
  51   3                  FM18L08DatWR = (int)rand();                             //产生随机数
  52   3                  //------------------------------------------------------------
  53   3                  #ifdef FM18L08DATASHOW
                              UART0_Printf(" %d ",(int)FM18L08DatWR);
                          #endif
C51 COMPILER V8.01   MEMORY                                                                09/30/2007 11:14:56 PAGE 2   

  56   3                  //------------------------------------------------------------
  57   3                  FM18L08WRStore[FM18L08Cnt256_1] = FM18L08DatWR;         //把写入的数据保留待比较
  58   3                  XBYTE[FM18L08Addr_1] = FM18L08DatWR;                    //把随机数写入存储器
  59   3                  FM18L08Addr_1 ++;                                       //地址产生增量
  60   3              }
  61   2                  
  62   2                  FM18L08DatWR = (int)rand();                             //产生随机数
  63   2                  //------------------------------------------------------------
  64   2                  #ifdef FM18L08DATASHOW
                              UART0_Printf(" %d ",(int)FM18L08DatWR);
                          #endif
  67   2                  //------------------------------------------------------------
  68   2                  FM18L08WRStore[FM18L08Cnt256_1] = FM18L08DatWR;         //把写入的数据保留待比较
  69   2                  XBYTE[FM18L08Addr_1] = FM18L08DatWR;                    //把随机数写入存储器
  70   2                  FM18L08Addr_1 ++;                                       //地址产生增量
  71   2              
  72   2              //读出数据
  73   2              //------------------------------------------------------------
  74   2              #ifdef FM18L08DATASHOW
                          UART0_Printf("\n Read From  0x:%x \n",FM18L08Addr_2);
                      #endif
  77   2              //------------------------------------------------------------
  78   2              for(FM18L08Cnt256_2 = 0; FM18L08Cnt256_2 < 0xFF; FM18L08Cnt256_2 ++)
  79   2              {
  80   3                  FM18L08DatRD = XBYTE[FM18L08Addr_2];                    //读回来的数据
  81   3                  //***************************************************************
  82   3                  #ifdef FM18L08DATASHOW
                              UART0_Printf(" %d ",(int)FM18L08DatRD);
                          #endif
  85   3                  //***************************************************************
  86   3                  if(FM18L08DatRD == FM18L08WRStore[FM18L08Cnt256_2])     //读写的数据一致
  87   3                  {;}
  88   3                  else                                                    //读写的数据不一致
  89   3                  {
  90   4                      UART0_Printf("\n\n Data Err Occur at 0x:%x \n\n",FM18L08Addr_2);
  91   4                  }
  92   3                  FM18L08Addr_2 ++;                                       //地址产生增量
  93   3              }
  94   2      
  95   2                  FM18L08DatRD = XBYTE[FM18L08Addr_2];                    //读回来的数据
  96   2                  //***************************************************************
  97   2                  #ifdef FM18L08DATASHOW
                              UART0_Printf(" %d ",(int)FM18L08DatRD);
                          #endif
 100   2                  //***************************************************************
 101   2                  if(FM18L08DatRD == FM18L08WRStore[FM18L08Cnt256_2])     //读写的数据一致
 102   2                  {;}
 103   2                  else                                                    //读写的数据不一致
 104   2                  {
 105   3                      UART0_Printf("\n\n Data Err Occur at 0x:%x \n\n",FM18L08Addr_2);
 106   3                  }
 107   2                  FM18L08Addr_2 ++;                                       //地址产生增量
 108   2      
 109   2              //这256个字节测试完毕,输出一个点
 110   2              UART0_Printf(".");
 111   2          }
 112   1      
 113   1          UART0_Printf("\n   FM18L08 test End! \n");
 114   1      }
C51 COMPILER V8.01   MEMORY                                                                09/30/2007 11:14:56 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION MemInit (BEGIN)
                                           ; SOURCE LINE # 10
                                           ; SOURCE LINE # 11
                                           ; SOURCE LINE # 12
0000 43F680            ORL     DEVMEMCFG,#080H
                                           ; SOURCE LINE # 13
0003 22                RET     
             ; FUNCTION MemInit (END)

             ; FUNCTION FM18L08Test (BEGIN)
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 33
0000 7800        R     MOV     R0,#LOW FM18L08WRStore
0002 7C00        R     MOV     R4,#HIGH FM18L08WRStore
0004 7D01              MOV     R5,#01H
0006 7BFF              MOV     R3,#0FFH
0008 7A00        R     MOV     R2,#HIGH _?ix1000
000A 7900        R     MOV     R1,#LOW _?ix1000
000C 7E01              MOV     R6,#01H
000E 7F00              MOV     R7,#00H
0010 120000      E     LCALL   ?C?COPY
                                           ; SOURCE LINE # 36
0013 900000      R     MOV     DPTR,#FM18L08Addr_1
0016 7480              MOV     A,#080H
0018 F0                MOVX    @DPTR,A
0019 A3                INC     DPTR
001A E4                CLR     A
001B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 37
001C A3                INC     DPTR
001D 7480              MOV     A,#080H
001F F0                MOVX    @DPTR,A
0020 A3                INC     DPTR
0021 E4                CLR     A
0022 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 39
0023 7BFF              MOV     R3,#0FFH
0025 7A00        R     MOV     R2,#HIGH ?SC_0
0027 7900        R     MOV     R1,#LOW ?SC_0
0029 120000      E     LCALL   _UART0_Printf
                                           ; SOURCE LINE # 40
002C 900000      R     MOV     DPTR,#FM18L08Cnt128
002F 7480              MOV     A,#080H
0031 F0                MOVX    @DPTR,A
0032         ?C0002:
                                           ; SOURCE LINE # 41
                                           ; SOURCE LINE # 49
0032 E4                CLR     A
0033 900000      R     MOV     DPTR,#FM18L08Cnt256_1
0036 F0                MOVX    @DPTR,A
0037         ?C0005:
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 51
0037 120000      E     LCALL   rand
003A 900000      R     MOV     DPTR,#FM18L08DatWR
003D EF                MOV     A,R7
003E F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 57
C51 COMPILER V8.01   MEMORY                                                                09/30/2007 11:14:56 PAGE 4   

003F E0                MOVX    A,@DPTR
0040 FF                MOV     R7,A
0041 900000      R     MOV     DPTR,#FM18L08Cnt256_1
0044 E0                MOVX    A,@DPTR
0045 2400        R     ADD     A,#LOW FM18L08WRStore
0047 F582              MOV     DPL,A
0049 E4                CLR     A
004A 3400        R     ADDC    A,#HIGH FM18L08WRStore
004C F583              MOV     DPH,A
004E EF                MOV     A,R7
004F F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 58
0050 900000      R     MOV     DPTR,#FM18L08Addr_1
0053 E0                MOVX    A,@DPTR
0054 FC                MOV     R4,A
0055 A3                INC     DPTR
0056 E0                MOVX    A,@DPTR
0057 F582              MOV     DPL,A
0059 8C83              MOV     DPH,R4
005B EF                MOV     A,R7
005C F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 59
005D 900000      R     MOV     DPTR,#FM18L08Addr_1+01H
0060 E0                MOVX    A,@DPTR
0061 04                INC     A
0062 F0                MOVX    @DPTR,A
0063 7006              JNZ     ?C0016
0065 900000      R     MOV     DPTR,#FM18L08Addr_1
0068 E0                MOVX    A,@DPTR
0069 04                INC     A
006A F0                MOVX    @DPTR,A
006B         ?C0016:
                                           ; SOURCE LINE # 60
006B 900000      R     MOV     DPTR,#FM18L08Cnt256_1
006E E0                MOVX    A,@DPTR
006F 04                INC     A
0070 F0                MOVX    @DPTR,A
0071 E0                MOVX    A,@DPTR
0072 C3                CLR     C
0073 94FF              SUBB    A,#0FFH
0075 40C0              JC      ?C0005
0077         ?C0006:

⌨️ 快捷键说明

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