📄 at45db.lst
字号:
161 2 case 1:SPI_HostWriteByte(0xd4);break;
162 2 case 2:SPI_HostWriteByte(0xd6);break;
163 2 }
164 1 SPI_HostWriteByte(0x00);
165 1 SPI_HostWriteByte((unsigned char)(BFA>>8));
166 1 SPI_HostWriteByte((unsigned char)BFA);
167 1 SPI_HostWriteByte(0x00);
168 1
169 1 for(i=0;i<len;i++){pHeader[i]=SPI_HostReadByte();}
170 1 SPI_CS=1;
171 1 }
172 /******************************************************************************/
173 /*描述: */
174 /* 将指定数据写入从某个地址(0~263)开始的BUFFER中。 */
175 /*参数: */
176 /* buffer - 选择BUFFER,01H选择BUFFER 1,02H选择BUFFER 2 */
177 /* 在该指令序列中,操作码84H选择BUFFER 1,87H选择BUFFER 2 */
178 /* BFA - BUFFER中的起始地址,0~263 */
179 /* pHeader - 待存数据的头指针 */
C51 COMPILER V7.50 AT45DB 05/14/2008 18:26:14 PAGE 4
180 /* len - 待存数据的长度1~264 */
181 /******************************************************************************/
182 void AT45DB041B_BufferWrite(UCHAR buffer,UINT BFA,UCHAR *pHeader,UINT len){
183 1 unsigned int i;
184 1
185 1 while(i++<255){if(AT45DB041B_StatusRegisterRead()&0x80){break;}}
186 1 SPI_CS=0;
187 1 switch(buffer){
188 2 case 1:SPI_HostWriteByte(0x84);break;
189 2 case 2:SPI_HostWriteByte(0x87);break;
190 2 }
191 1 SPI_HostWriteByte(0x00);
192 1 SPI_HostWriteByte((unsigned char)(BFA>>8));
193 1 SPI_HostWriteByte((unsigned char)BFA);
194 1
195 1 for(i=0;i<len;i++){SPI_HostWriteByte(pHeader[i]);}
196 1 SPI_CS=1;
197 1 }
198
199 void AT45DB041B_MainMemoryPageRead(UINT PA,UINT BFA,unsigned char *pHeader,UINT len)
200 { unsigned int i;
201 1
202 1 while(i++<255){if(AT45DB041B_StatusRegisterRead()&0x80){break;}}
203 1 SPI_CS=0;
204 1 SPI_HostWriteByte(0xd2);
205 1 SPI_HostWriteByte((unsigned char)(PA>>7));
206 1 SPI_HostWriteByte((unsigned char)((PA<<1)|(BFA>>8)));
207 1 SPI_HostWriteByte((unsigned char)BFA);
208 1 for(i=0;i<4;i++){SPI_HostWriteByte(0x00);}
209 1
210 1 for(i=0;i<len;i++){pHeader[i]=SPI_HostReadByte();}
211 1 SPI_CS=1;
212 1 }
213 /******************************************************************************/
214 /*描述: */
215 /* 将指定数据写入从某个地址(0~263)开始的页中:包含2个动作,首先将指定数据*/
216 /* 写入到BUFFER 1或者BUFFER 2中,其中可以指定BUFFER中的起始写入地址,此写入*/
217 /* 动作不影响BUFFER中其它地址中的数据,然后再将BUFFER中的整个数据写入到某指*/
218 /* 定页中(带预擦除)。 */
219 /*参数: */
220 /* buffer - 选择BUFFER,01H选择BUFFER 1,02H选择BUFFER 2 */
221 /* PA - 页地址,0~2047 */
222 /* BFA - 指定BUFFER中的起始写入地址 */
223 /* pHeader - 指定数据的首地址 */
224 /* len - 指定数据的长度 */
225 /******************************************************************************/
226 void AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(UCHAR buffer,UINT PA,UINT BFA,UCHAR *pHeade
-r,UINT len){
227 1 unsigned int i;
228 1
229 1 AT45DB041B_BufferWrite(buffer,BFA,pHeader,len);
230 1 while(i++<1000){if(AT45DB041B_StatusRegisterRead()&0x80){break;}}
231 1
232 1 SPI_CS=0;
233 1 switch(buffer){
234 2 case 1:SPI_HostWriteByte(0x83);break;
235 2 case 2:SPI_HostWriteByte(0x86);break;
236 2 }
237 1 SPI_HostWriteByte((unsigned char)(PA>>7));
238 1 SPI_HostWriteByte((unsigned char)(PA<<1));
239 1 SPI_HostWriteByte(0x00);
240 1 SPI_CS=1;
C51 COMPILER V7.50 AT45DB 05/14/2008 18:26:14 PAGE 5
241 1 }
242 /******************************************************************************/
243 /*描述: */
244 /* 与上一个函数的唯一区别是不带预擦除。 */
245 /******************************************************************************/
246 void AT45DB041B_BufferToMainMemoryPageProgramWithoutBuilt_inErase(UCHAR buffer,UINT PA,UINT BFA,UCHAR *pHe
-ader,UINT len){
247 1 unsigned int i=0;
248 1
249 1 AT45DB041B_BufferWrite(buffer,BFA,pHeader,len);
250 1 while(i++<1000){if(AT45DB041B_StatusRegisterRead()&0x80){break;}}
251 1
252 1 SPI_CS=0;
253 1 SPI_HostWriteByte(0x88+buffer);
254 1 SPI_HostWriteByte((unsigned char)(PA>>7));
255 1 SPI_HostWriteByte((unsigned char)(PA<<1));
256 1 SPI_HostWriteByte(0x00);
257 1
258 1 for(i=0;i<len;i++){SPI_HostWriteByte(pHeader[i]);}
259 1 SPI_CS=1;
260 1 }
261
262 void main(void){
263 1 // unsigned char i;
264 1 // unsigned char k;
265 1 unsigned char j;
266 1 UCHAR idata test[128];
267 1
268 1 SPI_RES=1;
269 1 SPI_WP=1;
270 1 SPI_AY1=0;
271 1 SPI_AY2=0;
272 1 SPI_AY3=0;
273 1
274 1 // i=AT45DB041B_StatusRegisterRead();
275 1
276 1
277 1 //memset(test,0x26,32);
278 1 //AT45DB041B_MainMemoryPageRead(2047,0,test,32);
279 1 // AT45DB041B_ContinuousArrayRead(0,0,test,32);
280 1
281 1 // AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(1,0,0,DisPlay22,264);
282 1 init_serial();
283 1 while(1)
284 1 {
285 2
286 2 AT45DB041B_ContinuousArrayRead(0,0,test,128);
287 2 for(j=0;j<128;j++)
288 2 {
289 3 SendCh(test[j]);
290 3 SPI_AY1=~SPI_AY1;
291 3 SPI_AY2=~SPI_AY2;
292 3 SPI_AY3=~SPI_AY3;
293 3 delay(20000);
294 3
295 3 }
296 2
297 2 //SendCh(i);
298 2 //delay(20000);
299 2 /* for(j=0;j<8;j++)
300 2 {SendCh(test[j]);
301 2 // SPI_AY1=~SPI_AY1;
C51 COMPILER V7.50 AT45DB 05/14/2008 18:26:14 PAGE 6
302 2 // SPI_AY2=~SPI_AY2;
303 2 // SPI_AY3=~SPI_AY3;
304 2 delay(20000);
305 2 }
306 2 */
307 2
308 2 }
309 1 }
310
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1037 ----
CONSTANT SIZE = 264 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 66
IDATA SIZE = ---- 128
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 + -