📄 at45db161d.lis
字号:
0380 .dbline 219
0380 ; }
0380 L35:
0380 .dbline 220
0380 L34:
0380 .dbline -2
0380 L32:
0380 2296 adiw R28,2
0382 0E940000 xcall pop_gset3
0386 .dbline 0 ; func end
0386 0895 ret
0388 .dbsym r temp 10 i
0388 .dbsym r size 20 i
0388 .dbsym r buf 22 pi
0388 .dbend
0388 .dbfunc e read_buffer _read_buffer fV
0388 ; i -> R20,R21
0388 ; size -> R22,R23
0388 ; data -> R10,R11
0388 ; addr -> R20,R21
.even
0388 _read_buffer::
0388 0E940000 xcall push_gset3
038C 5901 movw R10,R18
038E A801 movw R20,R16
0390 6E81 ldd R22,y+6
0392 7F81 ldd R23,y+7
0394 .dbline -1
0394 .dbline 225
0394 ; }
0394 ; }
0394 ; //========================================================================
0394 ; //从读缓冲区读数据
0394 ; void read_buffer(uint addr,uint *data,uint size)
0394 ; {
0394 .dbline 228
0394 ; uint i;
0394 ;
0394 ; SELECT_CHIP;
0394 88B3 in R24,0x18
0396 8F7E andi R24,239
0398 88BB out 0x18,R24
039A .dbline 228
039A .dbline 230
039A ;
039A ; spi_write(BUFFER_1_READ);
039A 01ED ldi R16,209
039C 10E0 ldi R17,0
039E 9CDE xcall _spi_write
03A0 .dbline 231
03A0 ; spi_write(0x00);
03A0 0027 clr R16
03A2 1127 clr R17
03A4 99DE xcall _spi_write
03A6 .dbline 232
03A6 ; spi_write((uint)(addr>>8));
03A6 8A01 movw R16,R20
03A8 012F mov R16,R17
03AA 1127 clr R17
03AC 95DE xcall _spi_write
03AE .dbline 233
03AE ; spi_write((uint)addr);
03AE 8A01 movw R16,R20
03B0 93DE xcall _spi_write
03B2 .dbline 234
03B2 ; for(i=0;i<size;i++)
03B2 4427 clr R20
03B4 5527 clr R21
03B6 10C0 xjmp L41
03B8 L38:
03B8 .dbline 235
03B8 0027 clr R16
03BA 1127 clr R17
03BC 8DDE xcall _spi_write
03BE 1801 movw R2,R16
03C0 02E0 ldi R16,2
03C2 10E0 ldi R17,0
03C4 9A01 movw R18,R20
03C6 0E940000 xcall empy16s
03CA F801 movw R30,R16
03CC EA0D add R30,R10
03CE FB1D adc R31,R11
03D0 3182 std z+1,R3
03D2 2082 std z+0,R2
03D4 L39:
03D4 .dbline 234
03D4 4F5F subi R20,255 ; offset = 1
03D6 5F4F sbci R21,255
03D8 L41:
03D8 .dbline 234
03D8 4617 cp R20,R22
03DA 5707 cpc R21,R23
03DC 68F3 brlo L38
03DE .dbline 237
03DE ; data[i]=spi_write(0);
03DE ;
03DE ; UNSELECT_CHIP;
03DE C49A sbi 0x18,4
03E0 .dbline 237
03E0 .dbline -2
03E0 L37:
03E0 0E940000 xcall pop_gset3
03E4 .dbline 0 ; func end
03E4 0895 ret
03E6 .dbsym r i 20 i
03E6 .dbsym r size 22 i
03E6 .dbsym r data 10 pi
03E6 .dbsym r addr 20 i
03E6 .dbend
03E6 .dbfunc e Read_Page _Read_Page fV
03E6 ; size -> y+8
03E6 ; buf -> y+6
03E6 ; page_address -> R20,R21
03E6 ; page -> R22,R23
.even
03E6 _Read_Page::
03E6 0E940000 xcall push_gset2
03EA A901 movw R20,R18
03EC B801 movw R22,R16
03EE 2297 sbiw R28,2
03F0 .dbline -1
03F0 .dbline 241
03F0 ; }
03F0 ; //========================================================================
03F0 ; void Read_Page(uint page,uint page_address, uint *buf,uint size) //page 页地址, page_address 页内地址, buf 数据 , size 多少个字节
03F0 ; {
03F0 .dbline 242
03F0 ; load_page_to_buffer(page,DF_READ_BUFFER); // 将主存储器指定的页内容读到缓冲区
03F0 2227 clr R18
03F2 3327 clr R19
03F4 8B01 movw R16,R22
03F6 4BDE xcall _load_page_to_buffer
03F8 .dbline 243
03F8 ; read_buffer(page_address,buf,size); //从读缓冲区读数据
03F8 0884 ldd R0,y+8
03FA 1984 ldd R1,y+9
03FC 1982 std y+1,R1
03FE 0882 std y+0,R0
0400 2E81 ldd R18,y+6
0402 3F81 ldd R19,y+7
0404 8A01 movw R16,R20
0406 C0DF xcall _read_buffer
0408 .dbline -2
0408 L42:
0408 2296 adiw R28,2
040A 0E940000 xcall pop_gset2
040E .dbline 0 ; func end
040E 0895 ret
0410 .dbsym l size 8 i
0410 .dbsym l buf 6 pi
0410 .dbsym r page_address 20 i
0410 .dbsym r page 22 i
0410 .dbend
0410 .dbfunc e Write_page _Write_page fV
0410 ; size -> y+8
0410 ; buf -> y+6
0410 ; page_address -> R22,R23
0410 ; page -> R20,R21
.even
0410 _Write_page::
0410 0E940000 xcall push_gset2
0414 B901 movw R22,R18
0416 A801 movw R20,R16
0418 2297 sbiw R28,2
041A .dbline -1
041A .dbline 247
041A ; }
041A ; //========================================================================
041A ; void Write_page(uint page, uint page_address, uint *buf,uint size) //page 页地址, page_address 页内地址, buf 数据 , size 多少个字节
041A ; {
041A .dbline 248
041A ; load_page_to_buffer(page,DF_WRITE_BUFFER); // 将主存储器指定的页内容读到缓冲区
041A 21E0 ldi R18,1
041C 30E0 ldi R19,0
041E 8A01 movw R16,R20
0420 36DE xcall _load_page_to_buffer
0422 .dbline 249
0422 ; write_buffer(page_address,buf,size); //将数据写入写缓冲区
0422 0884 ldd R0,y+8
0424 1984 ldd R1,y+9
0426 1982 std y+1,R1
0428 0882 std y+0,R0
042A 2E81 ldd R18,y+6
042C 3F81 ldd R19,y+7
042E 8B01 movw R16,R22
0430 E4DE xcall _write_buffer
0432 .dbline 250
0432 ; write_page_from_buffer(page,DF_WRITE_BUFFER); //将缓冲区内容写入到主存储器中指定页中
0432 21E0 ldi R18,1
0434 30E0 ldi R19,0
0436 8A01 movw R16,R20
0438 0CDF xcall _write_page_from_buffer
043A .dbline -2
043A L43:
043A 2296 adiw R28,2
043C 0E940000 xcall pop_gset2
0440 .dbline 0 ; func end
0440 0895 ret
0442 .dbsym l size 8 i
0442 .dbsym l buf 6 pi
0442 .dbsym r page_address 22 i
0442 .dbsym r page 20 i
0442 .dbend
0442 .dbfunc e Page_Scrape _Page_Scrape fV
0442 ; page -> R20,R21
.even
0442 _Page_Scrape::
0442 0E940000 xcall push_gset1
0446 A801 movw R20,R16
0448 .dbline -1
0448 .dbline 254
0448 ; }
0448 ; //========================================================================
0448 ; void Page_Scrape(uint page) //page 要擦除的页
0448 ; {
0448 .dbline 255
0448 ; SELECT_CHIP;
0448 88B3 in R24,0x18
044A 8F7E andi R24,239
044C 88BB out 0x18,R24
044E .dbline 255
044E .dbline 256
044E ; spi_write(0x81); //页擦除
044E 01E8 ldi R16,129
0450 10E0 ldi R17,0
0452 42DE xcall _spi_write
0454 .dbline 257
0454 ; spi_write((uint)(page>>6)); //2个无关位,12位页地址 PA11~PA0 与10个无关位
0454 26E0 ldi R18,6
0456 30E0 ldi R19,0
0458 8A01 movw R16,R20
045A 0E940000 xcall lsr16
045E 3CDE xcall _spi_write
0460 .dbline 258
0460 ; spi_write((uint)(page<<2));
0460 8A01 movw R16,R20
0462 000F lsl R16
0464 111F rol R17
0466 000F lsl R16
0468 111F rol R17
046A 36DE xcall _spi_write
046C .dbline 259
046C ; spi_write(0x00); // don't cares
046C 0027 clr R16
046E 1127 clr R17
0470 33DE xcall _spi_write
0472 .dbline 261
0472 ;
0472 ; UNSELECT_CHIP;
0472 C49A sbi 0x18,4
0474 .dbline 261
0474 .dbline 263
0474 ;
0474 ; df_wait_busy();
0474 37DE xcall _df_wait_busy
0476 .dbline -2
0476 L44:
0476 0E940000 xcall pop_gset1
047A .dbline 0 ; func end
047A 0895 ret
047C .dbsym r page 20 i
047C .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\ICC128\2008控制台\2008console0TEST\flashTest\at45db161d.c
0000 _g_CurWriteByte::
0000 .blkb 2
0002 .dbsym e g_CurWriteByte _g_CurWriteByte i
0002 _g_CurWritePage::
0002 .blkb 2
0004 .dbsym e g_CurWritePage _g_CurWritePage i
0004 _g_CurReadByte::
0004 .blkb 2
0006 .dbsym e g_CurReadByte _g_CurReadByte i
0006 _g_CurReadPage::
0006 .blkb 2
0008 .dbsym e g_CurReadPage _g_CurReadPage i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -