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

📄 at45db021.lis

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -