?? 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 /* 將指定數(shù)據(jù)寫入從某個地址(0~263)開始的BUFFER中。 */
175 /*參數(shù): */
176 /* buffer - 選擇BUFFER,01H選擇BUFFER 1,02H選擇BUFFER 2 */
177 /* 在該指令序列中,操作碼84H選擇BUFFER 1,87H選擇BUFFER 2 */
178 /* BFA - BUFFER中的起始地址,0~263 */
179 /* pHeader - 待存數(shù)據(jù)的頭指針 */
C51 COMPILER V7.50 AT45DB 05/14/2008 18:26:14 PAGE 4
180 /* len - 待存數(shù)據(jù)的長度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 /* 將指定數(shù)據(jù)寫入從某個地址(0~263)開始的頁中:包含2個動作,首先將指定數(shù)據(jù)*/
216 /* 寫入到BUFFER 1或者BUFFER 2中,其中可以指定BUFFER中的起始寫入地址,此寫入*/
217 /* 動作不影響B(tài)UFFER中其它地址中的數(shù)據(jù),然后再將BUFFER中的整個數(shù)據(jù)寫入到某指*/
218 /* 定頁中(帶預擦除)。 */
219 /*參數(shù): */
220 /* buffer - 選擇BUFFER,01H選擇BUFFER 1,02H選擇BUFFER 2 */
221 /* PA - 頁地址,0~2047 */
222 /* BFA - 指定BUFFER中的起始寫入地址 */
223 /* pHeader - 指定數(shù)據(jù)的首地址 */
224 /* len - 指定數(shù)據(jù)的長度 */
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 /* 與上一個函數(shù)的唯一區(qū)別是不帶預擦除。 */
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 + -