📄 at45db021.lis
字号:
0328 L66:
0328 00D0 rcall pop_gset2
032A .dbline 0 ; func end
032A 0895 ret
032C .dbsym l i 1 i
032C .dbsym r BufferSelect 22 c
032C .dbsym r Page_add 20 i
032C .dbend
032C .dbfunc e MemoryPageRead _MemoryPageRead fV
032C ; tempdata -> R20,R21
032C ; i -> R20,R21
032C ; in_page_add -> y+8
032C ; Page_add -> y+6
032C ; datalength -> R10,R11
032C ; Read_data -> R22,R23
.even
032C _MemoryPageRead::
032C 00D0 rcall push_gset3
032E 5901 movw R10,R18
0330 B801 movw R22,R16
0332 .dbline -1
0332 .dbline 226
0332 ;
0332 ; }
0332 ;
0332 ; void MemoryPageRead(unsigned char * Read_data,unsigned int datalength,unsigned int Page_add,unsigned int in_page_add)
0332 ; {
0332 .dbline 228
0332 ; unsigned int i, tempdata;
0332 ; SPI_Start();//enable spi
0332 84DE rcall _SPI_Start
0334 .dbline 229
0334 ; SPI_Send8BitData(MAIN_MEMORY_PAGE_READ );
0334 02E5 ldi R16,82
0336 A5DE rcall _SPI_Send8BitData
0338 .dbline 230
0338 ; SPI_Send8BitData((char)(Page_add >> 7));
0338 27E0 ldi R18,7
033A 30E0 ldi R19,0
033C 0E81 ldd R16,y+6
033E 1F81 ldd R17,y+7
0340 00D0 rcall lsr16
0342 9FDE rcall _SPI_Send8BitData
0344 .dbline 231
0344 ; tempdata=(in_page_add>>8);
0344 4885 ldd R20,y+8
0346 5985 ldd R21,y+9
0348 452F mov R20,R21
034A 5527 clr R21
034C .dbline 232
034C ; tempdata&=0x01;
034C 4170 andi R20,1
034E 5070 andi R21,0
0350 .dbline 233
0350 ; tempdata|=(Page_add << 1);
0350 2E80 ldd R2,y+6
0352 3F80 ldd R3,y+7
0354 220C lsl R2
0356 331C rol R3
0358 4229 or R20,R2
035A 5329 or R21,R3
035C .dbline 234
035C ; SPI_Send8BitData((char)tempdata);
035C 042F mov R16,R20
035E 91DE rcall _SPI_Send8BitData
0360 .dbline 235
0360 ; SPI_Send8BitData((char)(in_page_add));//send block address LSB BA7 ... BA0
0360 0885 ldd R16,y+8
0362 1985 ldd R17,y+9
0364 8EDE rcall _SPI_Send8BitData
0366 .dbline 236
0366 ; SPI_Send8BitData(0x00); //do not care
0366 0027 clr R16
0368 8CDE rcall _SPI_Send8BitData
036A .dbline 237
036A ; SPI_Send8BitData(0x00); //do not care
036A 0027 clr R16
036C 8ADE rcall _SPI_Send8BitData
036E .dbline 238
036E ; SPI_Send8BitData(0x00); //do not care
036E 0027 clr R16
0370 88DE rcall _SPI_Send8BitData
0372 .dbline 239
0372 ; SPI_Send8BitData(0x00); //do not care
0372 0027 clr R16
0374 86DE rcall _SPI_Send8BitData
0376 .dbline 240
0376 ; Delay(1000);
0376 08EE ldi R16,1000
0378 13E0 ldi R17,3
037A 00D0 rcall _Delay
037C .dbline 241
037C ; for(i=0;i<datalength;i++)
037C 4427 clr R20
037E 5527 clr R21
0380 07C0 rjmp L76
0382 L73:
0382 .dbline 242
0382 A3DE rcall _SPI_Receive8BitData
0384 FA01 movw R30,R20
0386 E60F add R30,R22
0388 F71F adc R31,R23
038A 0083 std z+0,R16
038C L74:
038C .dbline 241
038C 4F5F subi R20,255 ; offset = 1
038E 5F4F sbci R21,255
0390 L76:
0390 .dbline 241
0390 4A15 cp R20,R10
0392 5B05 cpc R21,R11
0394 B0F3 brlo L73
0396 .dbline 243
0396 ; Read_data[i]=SPI_Receive8BitData();
0396 ; SPI_End();//disable spi
0396 63DE rcall _SPI_End
0398 .dbline 244
0398 ; Delay(100);
0398 04E6 ldi R16,100
039A 10E0 ldi R17,0
039C 00D0 rcall _Delay
039E .dbline -2
039E L72:
039E 00D0 rcall pop_gset3
03A0 .dbline 0 ; func end
03A0 0895 ret
03A2 .dbsym r tempdata 20 i
03A2 .dbsym r i 20 i
03A2 .dbsym l in_page_add 8 i
03A2 .dbsym l Page_add 6 i
03A2 .dbsym r datalength 10 i
03A2 .dbsym r Read_data 22 pc
03A2 .dbend
03A2 .dbfunc e ContinuousArraryRead _ContinuousArraryRead fV
03A2 ; tempdata -> R20,R21
03A2 ; i -> R20,R21
03A2 ; in_page_add -> y+8
03A2 ; Page_add -> y+6
03A2 ; datalength -> R10,R11
03A2 ; Read_data -> R22,R23
.even
03A2 _ContinuousArraryRead::
03A2 00D0 rcall push_gset3
03A4 5901 movw R10,R18
03A6 B801 movw R22,R16
03A8 .dbline -1
03A8 .dbline 249
03A8 ;
03A8 ; }
03A8 ;
03A8 ; void ContinuousArraryRead(unsigned char * Read_data,unsigned int datalength,unsigned int Page_add,unsigned int in_page_add)
03A8 ; {
03A8 .dbline 251
03A8 ; unsigned int i, tempdata;
03A8 ; SPI_Start();//enable spi
03A8 49DE rcall _SPI_Start
03AA .dbline 252
03AA ; SPI_Send8BitData(Continuous_Array_Read );
03AA 08E6 ldi R16,104
03AC 6ADE rcall _SPI_Send8BitData
03AE .dbline 253
03AE ; SPI_Send8BitData((char)(Page_add >> 7));
03AE 27E0 ldi R18,7
03B0 30E0 ldi R19,0
03B2 0E81 ldd R16,y+6
03B4 1F81 ldd R17,y+7
03B6 00D0 rcall lsr16
03B8 64DE rcall _SPI_Send8BitData
03BA .dbline 254
03BA ; tempdata=(in_page_add>>8);
03BA 4885 ldd R20,y+8
03BC 5985 ldd R21,y+9
03BE 452F mov R20,R21
03C0 5527 clr R21
03C2 .dbline 255
03C2 ; tempdata&=0x01;
03C2 4170 andi R20,1
03C4 5070 andi R21,0
03C6 .dbline 256
03C6 ; tempdata|=(Page_add << 1);
03C6 2E80 ldd R2,y+6
03C8 3F80 ldd R3,y+7
03CA 220C lsl R2
03CC 331C rol R3
03CE 4229 or R20,R2
03D0 5329 or R21,R3
03D2 .dbline 257
03D2 ; SPI_Send8BitData((char)tempdata);
03D2 042F mov R16,R20
03D4 56DE rcall _SPI_Send8BitData
03D6 .dbline 258
03D6 ; SPI_Send8BitData((char)(in_page_add));//send block address LSB BA7 ... BA0
03D6 0885 ldd R16,y+8
03D8 1985 ldd R17,y+9
03DA 53DE rcall _SPI_Send8BitData
03DC .dbline 259
03DC ; SPI_Send8BitData(0x00); //do not care
03DC 0027 clr R16
03DE 51DE rcall _SPI_Send8BitData
03E0 .dbline 260
03E0 ; SPI_Send8BitData(0x00); //do not care
03E0 0027 clr R16
03E2 4FDE rcall _SPI_Send8BitData
03E4 .dbline 261
03E4 ; SPI_Send8BitData(0x00); //do not care
03E4 0027 clr R16
03E6 4DDE rcall _SPI_Send8BitData
03E8 .dbline 262
03E8 ; SPI_Send8BitData(0x00); //do not care
03E8 0027 clr R16
03EA 4BDE rcall _SPI_Send8BitData
03EC .dbline 263
03EC ; for(i=0;i<datalength;i++)
03EC 4427 clr R20
03EE 5527 clr R21
03F0 07C0 rjmp L81
03F2 L78:
03F2 .dbline 264
03F2 6BDE rcall _SPI_Receive8BitData
03F4 FA01 movw R30,R20
03F6 E60F add R30,R22
03F8 F71F adc R31,R23
03FA 0083 std z+0,R16
03FC L79:
03FC .dbline 263
03FC 4F5F subi R20,255 ; offset = 1
03FE 5F4F sbci R21,255
0400 L81:
0400 .dbline 263
0400 4A15 cp R20,R10
0402 5B05 cpc R21,R11
0404 B0F3 brlo L78
0406 .dbline 265
0406 ; Read_data[i]=SPI_Receive8BitData();
0406 ; SPI_End();//disable spi
0406 2BDE rcall _SPI_End
0408 .dbline 266
0408 ; Delay(100);
0408 04E6 ldi R16,100
040A 10E0 ldi R17,0
040C 00D0 rcall _Delay
040E .dbline -2
040E L77:
040E 00D0 rcall pop_gset3
0410 .dbline 0 ; func end
0410 0895 ret
0412 .dbsym r tempdata 20 i
0412 .dbsym r i 20 i
0412 .dbsym l in_page_add 8 i
0412 .dbsym l Page_add 6 i
0412 .dbsym r datalength 10 i
0412 .dbsym r Read_data 22 pc
0412 .dbend
0412 .dbfunc e WriteBlock _WriteBlock fV
0412 ; write_data -> y+4
0412 ; i -> R20
0412 ; Block_Data -> R22
0412 ; Block_Add -> R10
.even
0412 _WriteBlock::
0412 00D0 rcall push_gset3
0414 622F mov R22,R18
0416 A02E mov R10,R16
0418 EF97 sbiw R28,63
041A EF97 sbiw R28,63
041C EF97 sbiw R28,63
041E EF97 sbiw R28,63
0420 6097 sbiw R28,16 ; offset = 268
0422 .dbline -1
0422 .dbline 270
0422 ;
0422 ; }
0422 ; void WriteBlock(unsigned char Block_Add,unsigned char Block_Data)
0422 ; {
0422 .dbline 273
0422 ; unsigned char write_data[Buffer_Size];
0422 ; unsigned char i;
0422 ; for(i=0;i<Buffer_Size;i++)
0422 4427 clr R20
0424 08C0 rjmp L86
0426 L83:
0426 .dbline 274
0426 CE01 movw R24,R28
0428 0496 adiw R24,4
042A E42F mov R30,R20
042C FF27 clr R31
042E E80F add R30,R24
0430 F91F adc R31,R25
0432 6083 std z+0,R22
0434 L84:
0434 .dbline 273
0434 4395 inc R20
0436 L86:
0436 .dbline 273
0436 4830 cpi R20,8
0438 B4F3 brlt L83
043A .dbline 278
043A ; write_data[i]=Block_Data;
043A ; //PutStr("write Data");
043A ; //PutInt(write_data[0]);
043A ; //EasingBlock(Block_Add);
043A ; WriteToBuffer( write_data,Buffer_Size, BUFFER_1, 0);
043A 2224 clr R2
043C 3324 clr R3
043E 3B82 std y+3,R3
0440 2A82 std y+2,R2
0442 2882 std y+0,R2
0444 28E0 ldi R18,264
0446 31E0 ldi R19,1
0448 8E01 movw R16,R28
044A 0C5F subi R16,252 ; offset = 4
044C 1F4F sbci R17,255
044E B7DE rcall _WriteToBuffer
0450 .dbline 279
0450 ; Delay(100);
0450 04E6 ldi R16,100
0452 10E0 ldi R17,0
0454 00D0 rcall _Delay
0456 .dbline 285
0456 ; //ReadBuffer(write_data,Buffer_Size, BUFFER_1,0);
0456 ; //Delay(100);
0456 ; //Block_Data=write_data[0];
0456 ; //PutStr("Read Data");
0456 ; //PutInt(Block_Data);
0456 ; for(i=0;i<8;i++)
0456 4427 clr R20
0458 0DC0 rjmp L90
045A L87:
045A .dbline 286
045A .dbline 287
045A 23E8 ldi R18,131
045C 88E0 ldi R24,8
045E 8A9D mul R24,R10
0460 8001 movw R16,R0
0462 242E mov R2,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -