📄 memory.lst
字号:
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 + -