📄 memory.lst
字号:
C51 COMPILER V7.20 MEMORY 01/31/2007 10:20:43 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MEMORY
OBJECT MODULE PLACED IN memory.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe memory.c DB OE
line level source
1 /****************************************************************************
2 **
3 ** 文件名: momery.c
4 ** 功能: C8051Fxxx的SRAM驱动;
5 ** 创建时间:2005.08.05
6
7 ** 修改时间:2005.12.01
8 ** 修改说明:
9
10 ** 作者: 李立学
11 ** 版权申明:可以拷贝,可以修改,但必须保留修改时间和作者信息
12 **
13 ****************************************************************************/
14
15
16 #include "LZK.H"
17
18
19 /****************************************************************************
20 ** 函数名称: ExInSRAM_Select()
21 ** 功能描述: 片外/片内SRAM选择
22 ** 入口参数: ExInSRAM,
23 0:选择片内SRAM;
24 1:选择片外SRAM;
25 ** 出口参数: 无
26 ** 全局变量: 无
27 ** 调用模块: 无
28 ** 说明:
29 ****************************************************************************/
30 void ExInSRAM_Select(bit ExInSRAM)
31 {
32 1 SFRPAGE = 0x00;
33 1 if( ExInSRAM ) // ExInSRAM = 1: Use External SRAM,800k/S.
34 1 {
35 2 EMI0CF = 0x25; // 0010_1101, ALE: 2SYSCLK. External SRAM Only.
36 2 EMI0TC = 0x49; // 01_0010_01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
37 2 }
38 1 else // ExInSRAM = 0: Use Internal SRAM,900k/S.
39 1 {
40 2 EMI0CF = 0x00; // 0000 0000, ALE: 1SYSCLK. Internal SRAM Only.
41 2 EMI0TC = 0x00; // 00 0000 00: AST:0,nWR/nRd:0SYSCLK,AHT:0.
42 2 }
43 1 }
44
45 /****************************************************************************
46 ** 函数名称: ExSRAM_PageSetting()
47 ** 功能描述: 片外SRAM页选择,每页64kB
48 ** 入口参数: PageNum,片外SRAM页号,0~31;
49 ** 出口参数: 无
50 ** 全局变量: ucP4DATA
51 ** 调用模块: 无
52 ** 说明:
53 ****************************************************************************/
54 void ExSRAM_PageSetting(uint8 PageNum)
55 {
C51 COMPILER V7.20 MEMORY 01/31/2007 10:20:43 PAGE 2
56 1 uint8 ucTMP;
57 1
58 1 if( PageNum >= 16 )
59 1 return;
60 1 /*******************************
61 1 *** Switch to ExSRAM ***
62 1 *******************************/
63 1 SFRPAGE = 0x00;
64 1 EMI0CF = 0x2d; // 0010 1101, ALE: 2SYSCLK. External SRAM Only.
65 1 EMI0TC = 0x49; // 01 0010 01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
66 1
67 1 SFRPAGE = 0x0f;
68 1 ucTMP = ucP4DATA & 0xC0 | PageNum; // ExSRAM Page Caculate,nMCS = 0;
69 1 P4 = ucTMP; // ExSRAM Page Setting.
70 1 SFRPAGE = 0x00;
71 1 }
72
73 /****************************************************************************
74 ** 函数名称: InSRAM_SelfTest()
75 ** 功能描述: 片内SRAM自检测试
76 ** 入口参数: 无
77 ** 出口参数: 0/1:自检错误/自检正常
78 ** 全局变量: 无
79 ** 调用模块: 无
80 ** 说明:
81 ****************************************************************************/
82 bit InSRAM_SelfTest(void) // Toatal bytes: 4k( from 0x0000~0x0fff)
83 {
84 1 uint16 data i;
85 1 uint8 data j,ucTMP;
86 1 uint8 xdata *idata p1;
87 1
88 1 p1 = 0x0000;
89 1 for(i=0x0000;i<0x0fff;i++)
90 1 {
91 2 j = i >> 8; // 256 bytes every SmallPage.
92 2 *p1 = j;
93 2 p1++; // Address Increase 1.
94 2 }
95 1 p1 = 0x0000;
96 1 for(i=0x0000;i<0x0fff;i++)
97 1 {
98 2 j = i >> 8;
99 2 ucTMP = *p1;
100 2 p1++;
101 2 if(ucTMP != j)
102 2 return 1;
103 2 }
104 1 p1 = 0x0000;
105 1 for(i=0;i<0x0fff;i++)
106 1 {
107 2 *p1 = 0x55;
108 2 p1++;
109 2 }
110 1 p1 = 0x0000;
111 1 for(i=0;i<0x0fff;i++)
112 1 {
113 2 ucTMP = *p1;
114 2 if(ucTMP != 0x55)
115 2 return 1;
116 2 }
117 1 p1 = 0x0000;
C51 COMPILER V7.20 MEMORY 01/31/2007 10:20:43 PAGE 3
118 1 for(i=0;i<0x0fff;i++)
119 1 {
120 2 *p1 = 0xaa;
121 2 p1++;
122 2 }
123 1 p1 = 0x0000;
124 1 for(i=0;i<0x0fff;i++)
125 1 {
126 2 ucTMP = *p1;
127 2 if(ucTMP != 0xaa)
128 2 return 1;
129 2 }
130 1 j=0;
131 1 p1 = 0x0000;
132 1 for(i=0x0000;i<0x0fff;i++)
133 1 {
134 2 *p1 = j;
135 2 p1++;
136 2 j++;
137 2 }
138 1 j=0;
139 1 p1 = 0x0000;
140 1 for(i=0x0000;i<0x0fff;i++)
141 1 {
142 2 ucTMP = *p1;
143 2 p1++;
144 2 if(ucTMP != j)
145 2 return 1; // Testing fail
146 2 j++;
147 2 }
148 1 return 0; // Testing success
149 1 }
150
151 /****************************************************************************
152 ** 函数名称: ExSRAM_SelfTest()
153 ** 功能描述: 片外SRAM自检测试
154 ** 入口参数: 无
155 ** 出口参数: 0/1:自检错误/自检正常
156 ** 全局变量: 无
157 ** 调用模块: ExSRAM_PageSetting();
158 ** 说明:
159 ****************************************************************************/
160 bit ExSRAM_SelfTest(void)
161 {
162 1 uint16 data i;
163 1 uint8 data j, ucTMP, PageNum;
164 1
165 1 uint8 xdata *idata p1;
166 1
167 1 for(PageNum=0;PageNum<8;PageNum++) // Step 1;
168 1 {
169 2 ExSRAM_PageSetting(PageNum);
170 2 p1 = 0x0000;
171 2 for(i=0x0000;i<0xffff;i++)
172 2 {
173 3 j = i >> 8; // 256 bytes every SmallPage.
174 3 *p1 = j;
175 3 p1++; // Address Increase 1.
176 3 }
177 2 p1 = 0x0000;
178 2 for(i=0x0000;i<0xffff;i++)
179 2 {
C51 COMPILER V7.20 MEMORY 01/31/2007 10:20:43 PAGE 4
180 3 j = i >> 8;
181 3 ucTMP = *p1;
182 3 p1++;
183 3 if(ucTMP != j)
184 3 return 1;
185 3 }
186 2 }
187 1 for(PageNum=0;PageNum<8;PageNum++) // Step 2;
188 1 {
189 2 ExSRAM_PageSetting(PageNum);
190 2 p1 = 0x0000;
191 2 for(i=0;i<0xffff;i++)
192 2 {
193 3 *p1 = 0x55;
194 3 p1++;
195 3 }
196 2 p1 = 0x0000;
197 2 for(i=0;i<0xffff;i++)
198 2 {
199 3 ucTMP = *p1;
200 3 if(ucTMP != 0x55)
201 3 return 1;
202 3 }
203 2 }
204 1 for(PageNum=0;PageNum<8;PageNum++) // Step 3;
205 1 {
206 2 ExSRAM_PageSetting(PageNum);
207 2 p1 = 0x0000;
208 2 for(i=0;i<0xffff;i++)
209 2 {
210 3 *p1 = 0xaa;
211 3 p1++;
212 3 }
213 2 p1 = 0x0000;
214 2 for(i=0;i<0xffff;i++)
215 2 {
216 3 ucTMP = *p1;
217 3 if(ucTMP != 0xaa)
218 3 return 1;
219 3 }
220 2 }
221 1 for(PageNum=0;PageNum<8;PageNum++) // Step 4;
222 1 {
223 2 ExSRAM_PageSetting(PageNum);
224 2 j=0;
225 2 p1 = 0x0000;
226 2 for(i=0x0000;i<0xffff;i++)
227 2 {
228 3 *p1 = j;
229 3 p1++;
230 3 j++;
231 3 }
232 2 j=0;
233 2 p1 = 0x0000;
234 2 for(i=0x0000;i<0xffff;i++)
235 2 {
236 3 ucTMP = *p1;
237 3 p1++;
238 3 if(ucTMP != j)
239 3 return 1; // Testing fail
240 3 j++;
241 3 }
C51 COMPILER V7.20 MEMORY 01/31/2007 10:20:43 PAGE 5
242 2 }
243 1 ExSRAM_PageSetting(0);
244 1 return 0; // Testing success
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 741 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- 4
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 + -