📄 temp.lss
字号:
26a: cf 93 push r28
26c: df 93 push r29
26e: cd b7 in r28, 0x3d ; 61
270: de b7 in r29, 0x3e ; 62
272: 21 97 sbiw r28, 0x01 ; 1
274: 0f b6 in r0, 0x3f ; 63
276: f8 94 cli
278: de bf out 0x3e, r29 ; 62
27a: 0f be out 0x3f, r0 ; 63
27c: cd bf out 0x3d, r28 ; 61
unsigned char state_reg=0x00;
27e: 19 82 std Y+1, r1 ; 0x01
DF_SELECT_1;
280: 80 91 23 00 lds r24, 0x0023
284: 8b 7f andi r24, 0xFB ; 251
286: 80 93 23 00 sts 0x0023, r24
write_SPI(READ_STATE_REGISTER);
28a: 87 ed ldi r24, 0xD7 ; 215
28c: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
290: 80 e0 ldi r24, 0x00 ; 0
292: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
296: 80 e0 ldi r24, 0x00 ; 0
298: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
29c: 80 e0 ldi r24, 0x00 ; 0
29e: 0e 94 8d 00 call 0x11a
while((state_reg&0x80) == 0)
2a2: 89 81 ldd r24, Y+1 ; 0x01
2a4: 88 23 and r24, r24
2a6: 0c f4 brge .+2 ; 0x2aa
2a8: 05 c0 rjmp .+10 ; 0x2b4
{
state_reg = write_SPI(0x00);
2aa: 80 e0 ldi r24, 0x00 ; 0
2ac: 0e 94 8d 00 call 0x11a
2b0: 89 83 std Y+1, r24 ; 0x01
2b2: f7 cf rjmp .-18 ; 0x2a2
}
DF_DESELECT_1;
2b4: 80 91 23 00 lds r24, 0x0023
2b8: 84 60 ori r24, 0x04 ; 4
2ba: 80 93 23 00 sts 0x0023, r24
}
2be: 21 96 adiw r28, 0x01 ; 1
2c0: 0f b6 in r0, 0x3f ; 63
2c2: f8 94 cli
2c4: de bf out 0x3e, r29 ; 62
2c6: 0f be out 0x3f, r0 ; 63
2c8: cd bf out 0x3d, r28 ; 61
2ca: df 91 pop r29
2cc: cf 91 pop r28
2ce: 08 95 ret
000002d0 <DF_format>:
//格式化主存储器(以扇区<0A,0B,1……31>为单位删除所有页数据)
uint8_t DF_format(void)
{
2d0: cf 93 push r28
2d2: df 93 push r29
2d4: cd b7 in r28, 0x3d ; 61
2d6: de b7 in r29, 0x3e ; 62
2d8: 21 97 sbiw r28, 0x01 ; 1
2da: 0f b6 in r0, 0x3f ; 63
2dc: f8 94 cli
2de: de bf out 0x3e, r29 ; 62
2e0: 0f be out 0x3f, r0 ; 63
2e2: cd bf out 0x3d, r28 ; 61
unsigned char i;
DF_wait_busy();
2e4: 0e 94 35 01 call 0x26a
DF_SELECT_1;
2e8: 80 91 23 00 lds r24, 0x0023
2ec: 8b 7f andi r24, 0xFB ; 251
2ee: 80 93 23 00 sts 0x0023, r24
write_SPI(SECTOR_ERASE);
2f2: 8c e7 ldi r24, 0x7C ; 124
2f4: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
2f8: 80 e0 ldi r24, 0x00 ; 0
2fa: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
2fe: 80 e0 ldi r24, 0x00 ; 0
300: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
304: 80 e0 ldi r24, 0x00 ; 0
306: 0e 94 8d 00 call 0x11a
DF_DESELECT_1;
30a: 80 91 23 00 lds r24, 0x0023
30e: 84 60 ori r24, 0x04 ; 4
310: 80 93 23 00 sts 0x0023, r24
DF_wait_busy();
314: 0e 94 35 01 call 0x26a
DF_SELECT_1;
318: 80 91 23 00 lds r24, 0x0023
31c: 8b 7f andi r24, 0xFB ; 251
31e: 80 93 23 00 sts 0x0023, r24
write_SPI(SECTOR_ERASE);
322: 8c e7 ldi r24, 0x7C ; 124
324: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
328: 80 e0 ldi r24, 0x00 ; 0
32a: 0e 94 8d 00 call 0x11a
write_SPI(0x40);
32e: 80 e4 ldi r24, 0x40 ; 64
330: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
334: 80 e0 ldi r24, 0x00 ; 0
336: 0e 94 8d 00 call 0x11a
DF_DESELECT_1;
33a: 80 91 23 00 lds r24, 0x0023
33e: 84 60 ori r24, 0x04 ; 4
340: 80 93 23 00 sts 0x0023, r24
for (i=1;i<32;i++)
344: 81 e0 ldi r24, 0x01 ; 1
346: 89 83 std Y+1, r24 ; 0x01
348: 89 81 ldd r24, Y+1 ; 0x01
34a: 80 32 cpi r24, 0x20 ; 32
34c: 08 f0 brcs .+2 ; 0x350
34e: 1f c0 rjmp .+62 ; 0x38e
{
DF_wait_busy();
350: 0e 94 35 01 call 0x26a
DF_SELECT_1;
354: 80 91 23 00 lds r24, 0x0023
358: 8b 7f andi r24, 0xFB ; 251
35a: 80 93 23 00 sts 0x0023, r24
write_SPI(SECTOR_ERASE);
35e: 8c e7 ldi r24, 0x7C ; 124
360: 0e 94 8d 00 call 0x11a
write_SPI(i << 3);
364: 89 81 ldd r24, Y+1 ; 0x01
366: 88 0f add r24, r24
368: 88 0f add r24, r24
36a: 88 0f add r24, r24
36c: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
370: 80 e0 ldi r24, 0x00 ; 0
372: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
376: 80 e0 ldi r24, 0x00 ; 0
378: 0e 94 8d 00 call 0x11a
DF_DESELECT_1;
37c: 80 91 23 00 lds r24, 0x0023
380: 84 60 ori r24, 0x04 ; 4
382: 80 93 23 00 sts 0x0023, r24
386: 89 81 ldd r24, Y+1 ; 0x01
388: 8f 5f subi r24, 0xFF ; 255
38a: 89 83 std Y+1, r24 ; 0x01
38c: dd cf rjmp .-70 ; 0x348
}
return 1;
38e: 81 e0 ldi r24, 0x01 ; 1
390: 90 e0 ldi r25, 0x00 ; 0
}
392: 21 96 adiw r28, 0x01 ; 1
394: 0f b6 in r0, 0x3f ; 63
396: f8 94 cli
398: de bf out 0x3e, r29 ; 62
39a: 0f be out 0x3f, r0 ; 63
39c: cd bf out 0x3d, r28 ; 61
39e: df 91 pop r29
3a0: cf 91 pop r28
3a2: 08 95 ret
000003a4 <DF_MM_read>:
//以直接读取方式读取指定的主存储器数据(页范围0-8191,地址范围0-1055,长度范围1-1056)
uint8_t DF_MM_read(unsigned int page,uint16_t start_address,uint8_t DF_buffer[],unsigned int length)
{
3a4: cf 93 push r28
3a6: df 93 push r29
3a8: cd b7 in r28, 0x3d ; 61
3aa: de b7 in r29, 0x3e ; 62
3ac: 2c 97 sbiw r28, 0x0c ; 12
3ae: 0f b6 in r0, 0x3f ; 63
3b0: f8 94 cli
3b2: de bf out 0x3e, r29 ; 62
3b4: 0f be out 0x3f, r0 ; 63
3b6: cd bf out 0x3d, r28 ; 61
3b8: 89 83 std Y+1, r24 ; 0x01
3ba: 9a 83 std Y+2, r25 ; 0x02
3bc: 6b 83 std Y+3, r22 ; 0x03
3be: 7c 83 std Y+4, r23 ; 0x04
3c0: 4d 83 std Y+5, r20 ; 0x05
3c2: 5e 83 std Y+6, r21 ; 0x06
3c4: 2f 83 std Y+7, r18 ; 0x07
3c6: 38 87 std Y+8, r19 ; 0x08
unsigned int i;
if ((1056-start_address)>=length)
3c8: 20 e2 ldi r18, 0x20 ; 32
3ca: 34 e0 ldi r19, 0x04 ; 4
3cc: 8b 81 ldd r24, Y+3 ; 0x03
3ce: 9c 81 ldd r25, Y+4 ; 0x04
3d0: 28 1b sub r18, r24
3d2: 39 0b sbc r19, r25
3d4: 8f 81 ldd r24, Y+7 ; 0x07
3d6: 98 85 ldd r25, Y+8 ; 0x08
3d8: 28 17 cp r18, r24
3da: 39 07 cpc r19, r25
3dc: 08 f4 brcc .+2 ; 0x3e0
3de: 57 c0 rjmp .+174 ; 0x48e
{
DF_wait_busy();
3e0: 0e 94 35 01 call 0x26a
DF_SELECT_1;
3e4: 80 91 23 00 lds r24, 0x0023
3e8: 8b 7f andi r24, 0xFB ; 251
3ea: 80 93 23 00 sts 0x0023, r24
write_SPI(MAIN_MEMORY_PAGE_READ);
3ee: 82 ed ldi r24, 0xD2 ; 210
3f0: 0e 94 8d 00 call 0x11a
write_SPI((unsigned char)(page >> 5));
3f4: 89 81 ldd r24, Y+1 ; 0x01
3f6: 9a 81 ldd r25, Y+2 ; 0x02
3f8: 96 95 lsr r25
3fa: 87 95 ror r24
3fc: 92 95 swap r25
3fe: 82 95 swap r24
400: 8f 70 andi r24, 0x0F ; 15
402: 89 27 eor r24, r25
404: 9f 70 andi r25, 0x0F ; 15
406: 89 27 eor r24, r25
408: 0e 94 8d 00 call 0x11a
write_SPI((unsigned char)((page << 3)|(start_address>>8)));
40c: 89 81 ldd r24, Y+1 ; 0x01
40e: 28 2f mov r18, r24
410: 22 0f add r18, r18
412: 22 0f add r18, r18
414: 22 0f add r18, r18
416: 8b 81 ldd r24, Y+3 ; 0x03
418: 9c 81 ldd r25, Y+4 ; 0x04
41a: 89 2f mov r24, r25
41c: 99 27 eor r25, r25
41e: 82 2b or r24, r18
420: 0e 94 8d 00 call 0x11a
write_SPI((unsigned char)start_address);
424: 8b 81 ldd r24, Y+3 ; 0x03
426: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
42a: 80 e0 ldi r24, 0x00 ; 0
42c: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
430: 80 e0 ldi r24, 0x00 ; 0
432: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
436: 80 e0 ldi r24, 0x00 ; 0
438: 0e 94 8d 00 call 0x11a
write_SPI(0x00);
43c: 80 e0 ldi r24, 0x00 ; 0
43e: 0e 94 8d 00 call 0x11a
for (i=0;i<length;i++)
442: 19 86 std Y+9, r1 ; 0x09
444: 1a 86 std Y+10, r1 ; 0x0a
446: 29 85 ldd r18, Y+9 ; 0x09
448: 3a 85 ldd r19, Y+10 ; 0x0a
44a: 8f 81 ldd r24, Y+7 ; 0x07
44c: 98 85 ldd r25, Y+8 ; 0x08
44e: 28 17 cp r18, r24
450: 39 07 cpc r19, r25
452: 08 f0 brcs .+2 ; 0x456
454: 12 c0 rjmp .+36 ; 0x47a
{
DF_buffer[i] = write_SPI(0xFF);
456: 8f ef ldi r24, 0xFF ; 255
458: 0e 94 8d 00 call 0x11a
45c: 48 2f mov r20, r24
45e: 2d 81 ldd r18, Y+5 ; 0x05
460: 3e 81 ldd r19, Y+6 ; 0x06
462: 89 85 ldd r24, Y+9 ; 0x09
464: 9a 85 ldd r25, Y+10 ; 0x0a
466: f9 01 movw r30, r18
468: e8 0f add r30, r24
46a: f9 1f adc r31, r25
46c: 40 83 st Z, r20
46e: 89 85 ldd r24, Y+9 ; 0x09
470: 9a 85 ldd r25, Y+10 ; 0x0a
472: 01 96 adiw r24, 0x01 ; 1
474: 89 87 std Y+9, r24 ; 0x09
476: 9a 87 std Y+10, r25 ; 0x0a
478: e6 cf rjmp .-52 ; 0x446
}
DF_DESELECT_1;
47a: 80 91 23 00 lds r24, 0x0023
47e: 84 60 ori r24, 0x04 ; 4
480: 80 93 23 00 sts 0x0023, r24
return 1;
484: 81 e0 ldi r24, 0x01 ; 1
486: 90 e0 ldi r25, 0x00 ; 0
488: 8b 87 std Y+11, r24 ; 0x0b
48a: 9c 87 std Y+12, r25 ; 0x0c
48c: 02 c0 rjmp .+4 ; 0x492
}
else
return 0;
48e: 1b 86 std Y+11, r1 ; 0x0b
490: 1c 86 std Y+12, r1 ; 0x0c
}
492: 8b 85 ldd r24, Y+11 ; 0x0b
494: 9c 85 ldd r25, Y+12 ; 0x0c
496: 2c 96 adiw r28, 0x0c ; 12
498: 0f b6 in r0, 0x3f ; 63
49a: f8 94 cli
49c: de bf out 0x3e, r29 ; 62
49e: 0f be out 0x3f, r0 ; 63
4a0: cd bf out 0x3d, r28 ; 61
4a2: df 91 pop r29
4a4: cf 91 pop r28
4a6: 08 95 ret
000004a8 <DF_write_buf>:
//将DF_buffer[]数组中指定长度的数据写入指定缓冲区
unsigned char DF_write_buf(unsigned char buffer,unsigned int start_address,uint8_t DF_buffer[],unsigned int length)
{
4a8: cf 93 push r28
4aa: df 93 push r29
4ac: cd b7 in r28, 0x3d ; 61
4ae: de b7 in r29, 0x3e ; 62
4b0: 2b 97 sbiw r28, 0x0b ; 11
4b2: 0f b6 in r0, 0x3f ; 63
4b4: f8 94 cli
4b6: de bf out 0x3e, r29 ; 62
4b8: 0f be out 0x3f, r0 ; 63
4ba: cd bf out 0x3d, r28 ; 61
4bc: 89 83 std Y+1, r24 ; 0x01
4be: 6a 83 std Y+2, r22 ; 0x02
4c0: 7b 83 std Y+3, r23 ; 0x03
4c2: 4c 83 std Y+4, r20 ; 0x04
4c4: 5d 83 std Y+5, r21 ; 0x05
4c6: 2e 83 std Y+6, r18 ; 0x06
4c8: 3f 83 std Y+7, r19 ; 0x07
unsigned int i;
if ((1056-start_address)>=length)
4ca: 20 e2 ldi r18, 0x20 ; 32
4cc: 34 e0 ldi r19, 0x04 ; 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -