⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at45db161d.lis

📁 使用atmel128对45db161读写程序加LM2009R大液晶显示
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -