📄 hyj.lss
字号:
color = buffer[count] ;
color<<=8 ;
2f8: f7 01 movw r30, r14
2fa: f0 81 ld r31, Z
2fc: fb a3 std Y+35, r31 ; 0x23
2fe: 1a a2 std Y+34, r1 ; 0x22
color |= byte1 ;
300: 88 a5 ldd r24, Y+40 ; 0x28
302: 08 2f mov r16, r24
304: 10 e0 ldi r17, 0x00 ; 0
306: ea a1 ldd r30, Y+34 ; 0x22
308: fb a1 ldd r31, Y+35 ; 0x23
30a: 33 c0 rjmp .+102 ; 0x372 <disp_image+0x1e0>
rgb ++ ;
}
else
{
if(color_byte==4) //32位颜色图
30c: f4 e0 ldi r31, 0x04 ; 4
30e: 8f 16 cp r8, r31
310: 99 f5 brne .+102 ; 0x378 <disp_image+0x1e6>
{
switch ( rgb )
312: 81 e0 ldi r24, 0x01 ; 1
314: 98 16 cp r9, r24
316: 69 f0 breq .+26 ; 0x332 <disp_image+0x1a0>
318: 98 16 cp r9, r24
31a: 38 f0 brcs .+14 ; 0x32a <disp_image+0x198>
31c: 92 e0 ldi r25, 0x02 ; 2
31e: 99 16 cp r9, r25
320: 61 f0 breq .+24 ; 0x33a <disp_image+0x1a8>
322: e3 e0 ldi r30, 0x03 ; 3
324: 9e 16 cp r9, r30
326: 39 f5 brne .+78 ; 0x376 <disp_image+0x1e4>
328: 0c c0 rjmp .+24 ; 0x342 <disp_image+0x1b0>
{
case 0 : byte1 = buffer[count] ;
32a: f7 01 movw r30, r14
32c: f0 81 ld r31, Z
32e: f8 a7 std Y+40, r31 ; 0x28
330: 22 c0 rjmp .+68 ; 0x376 <disp_image+0x1e4>
break ;
case 1 : byte2 = buffer[count] ;
332: f7 01 movw r30, r14
334: f0 81 ld r31, Z
336: ff a3 std Y+39, r31 ; 0x27
338: 1e c0 rjmp .+60 ; 0x376 <disp_image+0x1e4>
break ;
case 2 : byte3 = buffer[count] ;
33a: f7 01 movw r30, r14
33c: f0 81 ld r31, Z
33e: fe a3 std Y+38, r31 ; 0x26
340: 1a c0 rjmp .+52 ; 0x376 <disp_image+0x1e4>
break ;
case 3 : tmp_color = byte1 >> 3 ;
color |= tmp_color;
tmp_color = byte2 >>2 ;
342: 2f a1 ldd r18, Y+39 ; 0x27
344: 26 95 lsr r18
346: 26 95 lsr r18
348: 30 e0 ldi r19, 0x00 ; 0
case 2 : byte3 = buffer[count] ;
break ;
case 3 : tmp_color = byte1 >> 3 ;
color |= tmp_color;
34a: 88 a5 ldd r24, Y+40 ; 0x28
34c: 86 95 lsr r24
34e: 86 95 lsr r24
350: 86 95 lsr r24
352: 90 e0 ldi r25, 0x00 ; 0
354: 08 2b or r16, r24
356: 19 2b or r17, r25
tmp_color = byte2 >>2 ;
tmp_color <<= 5 ;
color |= tmp_color ;
358: 85 e0 ldi r24, 0x05 ; 5
35a: 22 0f add r18, r18
35c: 33 1f adc r19, r19
35e: 8a 95 dec r24
360: e1 f7 brne .-8 ; 0x35a <disp_image+0x1c8>
362: 02 2b or r16, r18
364: 13 2b or r17, r19
tmp_color = byte3 >>3 ;
tmp_color <<= 11 ;
color |= tmp_color ;
366: 8e a1 ldd r24, Y+38 ; 0x26
368: 88 7f andi r24, 0xF8 ; 248
36a: 8e a7 std Y+46, r24 ; 0x2e
36c: 1d a6 std Y+45, r1 ; 0x2d
36e: ed a5 ldd r30, Y+45 ; 0x2d
370: fe a5 ldd r31, Y+46 ; 0x2e
372: 0e 2b or r16, r30
374: 1f 2b or r17, r31
break ;
}
rgb ++ ;
376: 93 94 inc r9
}
count ++ ;
if(rgb == color_byte) //读取1像素数数据后显示
378: 98 14 cp r9, r8
37a: c9 f4 brne .+50 ; 0x3ae <disp_image+0x21c>
{
GUI_Point(x, y,color) ;
37c: a8 01 movw r20, r16
37e: 6c a1 ldd r22, Y+36 ; 0x24
380: 7d a1 ldd r23, Y+37 ; 0x25
382: 8a a5 ldd r24, Y+42 ; 0x2a
384: 0e 94 3d 06 call 0xc7a ; 0xc7a <GUI_Point>
color = 0x00 ;
x++ ;
388: fa a5 ldd r31, Y+42 ; 0x2a
38a: ff 5f subi r31, 0xFF ; 255
38c: fa a7 std Y+42, r31 ; 0x2a
if(x>=240)
38e: f0 3f cpi r31, 0xF0 ; 240
390: 58 f0 brcs .+22 ; 0x3a8 <disp_image+0x216>
{
y-- ;
392: 8c a1 ldd r24, Y+36 ; 0x24
394: 9d a1 ldd r25, Y+37 ; 0x25
396: 01 97 sbiw r24, 0x01 ; 1
398: 9d a3 std Y+37, r25 ; 0x25
39a: 8c a3 std Y+36, r24 ; 0x24
if( y<=0 )
39c: 89 2b or r24, r25
39e: 11 f0 breq .+4 ; 0x3a4 <disp_image+0x212>
3a0: 1a a6 std Y+42, r1 ; 0x2a
3a2: 02 c0 rjmp .+4 ; 0x3a8 <disp_image+0x216>
{
free(buffer) ;
3a4: c3 01 movw r24, r6
3a6: 4b c0 rjmp .+150 ; 0x43e <disp_image+0x2ac>
return ;
3a8: 99 24 eor r9, r9
3aa: 00 e0 ldi r16, 0x00 ; 0
3ac: 10 e0 ldi r17, 0x00 ; 0
}
}
count ++ ;
3ae: 08 94 sec
3b0: 41 1c adc r4, r1
3b2: 51 1c adc r5, r1
3b4: 08 94 sec
3b6: e1 1c adc r14, r1
3b8: f1 1c adc r15, r1
FAT_LoadPartCluster(p,i,buffer);//读一个扇区 //read a sector
if(i==0 && first==0) { count= buffer[0x0a] ; color_byte = buffer[0x1c] / 8 ; first = 1 ; }
else { count=0 ; }
while(count<512) //读取一簇512扇区 (SectorsPerClust 每簇扇区数)
3ba: 90 e0 ldi r25, 0x00 ; 0
3bc: 49 16 cp r4, r25
3be: 92 e0 ldi r25, 0x02 ; 2
3c0: 59 06 cpc r5, r25
3c2: 08 f4 brcc .+2 ; 0x3c6 <disp_image+0x234>
3c4: 67 cf rjmp .-306 ; 0x294 <disp_image+0x102>
buffer=malloc(512);
while(1)
{
i = 0 ;
for( ; i < SectorsPerClust ; i++ ) //簇
3c6: 08 94 sec
3c8: 21 1c adc r2, r1
3ca: 31 1c adc r3, r1
3cc: 80 91 86 00 lds r24, 0x0086
3d0: 90 91 87 00 lds r25, 0x0087
3d4: 28 16 cp r2, r24
3d6: 39 06 cpc r3, r25
3d8: 08 f4 brcc .+2 ; 0x3dc <disp_image+0x24a>
3da: 40 cf rjmp .-384 ; 0x25c <disp_image+0xca>
}
} // 读取完一簇数据
free(buffer) ;
3dc: c3 01 movw r24, r6
3de: 0e 94 ef 12 call 0x25de ; 0x25de <free>
p=FAT_NextCluster(p);//读下一簇数据 //read next cluster
3e2: c6 01 movw r24, r12
3e4: b5 01 movw r22, r10
3e6: 0e 94 40 0a call 0x1480 ; 0x1480 <FAT_NextCluster>
3ea: 5b 01 movw r10, r22
3ec: 6c 01 movw r12, r24
buffer=malloc(512);
3ee: 80 e0 ldi r24, 0x00 ; 0
3f0: 92 e0 ldi r25, 0x02 ; 2
3f2: 0e 94 45 12 call 0x248a ; 0x248a <malloc>
3f6: 9c 01 movw r18, r24
3f8: 3c 01 movw r6, r24
if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff))//如果无后续簇则结束, //no more cluster
3fa: ef ef ldi r30, 0xFF ; 255
3fc: ae 16 cp r10, r30
3fe: ef ef ldi r30, 0xFF ; 255
400: be 06 cpc r11, r30
402: ef ef ldi r30, 0xFF ; 255
404: ce 06 cpc r12, r30
406: ef e0 ldi r30, 0x0F ; 15
408: de 06 cpc r13, r30
40a: c1 f0 breq .+48 ; 0x43c <disp_image+0x2aa>
40c: f8 ef ldi r31, 0xF8 ; 248
40e: af 16 cp r10, r31
410: ff ef ldi r31, 0xFF ; 255
412: bf 06 cpc r11, r31
414: ff ef ldi r31, 0xFF ; 255
416: cf 06 cpc r12, r31
418: ff e0 ldi r31, 0x0F ; 15
41a: df 06 cpc r13, r31
41c: 79 f0 breq .+30 ; 0x43c <disp_image+0x2aa>
41e: 80 91 9f 00 lds r24, 0x009F
422: 88 23 and r24, r24
424: 09 f0 breq .+2 ; 0x428 <disp_image+0x296>
426: 17 cf rjmp .-466 ; 0x256 <disp_image+0xc4>
428: 8f ef ldi r24, 0xFF ; 255
42a: a8 16 cp r10, r24
42c: 8f ef ldi r24, 0xFF ; 255
42e: b8 06 cpc r11, r24
430: 80 e0 ldi r24, 0x00 ; 0
432: c8 06 cpc r12, r24
434: 80 e0 ldi r24, 0x00 ; 0
436: d8 06 cpc r13, r24
438: 09 f0 breq .+2 ; 0x43c <disp_image+0x2aa>
43a: 0d cf rjmp .-486 ; 0x256 <disp_image+0xc4>
{
free(buffer) ;
43c: c9 01 movw r24, r18
43e: 0e 94 ef 12 call 0x25de ; 0x25de <free>
}
free(buffer) ;
}
442: ae 96 adiw r28, 0x2e ; 46
444: 0f b6 in r0, 0x3f ; 63
446: f8 94 cli
448: de bf out 0x3e, r29 ; 62
44a: 0f be out 0x3f, r0 ; 63
44c: cd bf out 0x3d, r28 ; 61
44e: cf 91 pop r28
450: df 91 pop r29
452: 1f 91 pop r17
454: 0f 91 pop r16
456: ff 90 pop r15
458: ef 90 pop r14
45a: df 90 pop r13
45c: cf 90 pop r12
45e: bf 90 pop r11
460: af 90 pop r10
462: 9f 90 pop r9
464: 8f 90 pop r8
466: 7f 90 pop r7
468: 6f 90 pop r6
46a: 5f 90 pop r5
46c: 4f 90 pop r4
46e: 3f 90 pop r3
470: 2f 90 pop r2
472: 08 95 ret
00000474 <main>:
//主程序
int main(void)
{
474: ef 92 push r14
476: ff 92 push r15
478: 0f 93 push r16
47a: 1f 93 push r17
47c: cf 93 push r28
47e: df 93 push r29
unsigned char i, x,retry=0;
uint8 ok,er,r1 ;
uint32 capacity ;
unsigned int y ;
LCD_Init(); //LCD初始化
480: 0e 94 12 03 call 0x624 ; 0x624 <LCD_Init>
x = 0 ;
y = 0 ;
GUI_ClearSCR() ;
484: 0e 94 ee 07 call 0xfdc ; 0xfdc <GUI_ClearSCR>
488: c0 e0 ldi r28, 0x00 ; 0
48a: d0 e0 ldi r29, 0x00 ; 0
48c: ee 24 eor r14, r14
48e: ff 24 eor r15, r15
for(i=0 ; i<10 ;i++)
{
GUI_sprintf_nu(x,y,i,0x07E0,0x0000) ;
490: 00 e0 ldi r16, 0x00 ; 0
492: 10 e0 ldi r17, 0x00 ; 0
494: 20 ee ldi r18, 0xE0 ; 224
496: 37 e0 ldi r19, 0x07 ; 7
498: ae 01 movw r20, r28
49a: 60 e0 ldi r22, 0x00 ; 0
49c: 70 e0 ldi r23, 0x00 ; 0
49e: c7 01 movw r24, r14
4a0: 0e 94 0a 07 call 0xe14 ; 0xe14 <GUI_sprintf_nu>
4a4: 21 96 adiw r28, 0x01 ; 1
4a6: 8a e0 ldi r24, 0x0A ; 10
4a8: 90 e0 ldi r25, 0x00 ; 0
4aa: e8 0e add r14, r24
4ac: f9 1e adc r15, r25
unsigned int y ;
LCD_Init(); //LCD初始化
x = 0 ;
y = 0 ;
GUI_ClearSCR() ;
for(i=0 ; i<10 ;i++)
4ae: ca 30 cpi r28, 0x0A ; 10
4b0: d1 05 cpc r29, r1
4b2: 71 f7 brne .-36 ; 0x490 <main+0x1c>
}
ok = 0 ;
er = 0 ;
OSCCAL = 0x00;//最小RC振荡频率
4b4: 11 be out 0x31, r1 ; 49
delay_us(0xffff);
4b6: 8f ef ldi r24, 0xFF ; 255
4b8: 9f ef ldi r25, 0xFF ; 255
4ba: 0e 94 e8 02 call 0x5d0 ; 0x5d0 <delay_us>
MMC_SD_Init();//初始化spi口
4be: 0e 94 3a 08 call 0x1074 ; 0x1074 <MMC_SD_Init>
delay_us(0xffff);
4c2: 8f ef ldi r24, 0xFF ; 255
4c4: 9f ef ldi r25, 0xFF ; 255
4c6: 0e 94 e8 02 call 0x5d0 ; 0x5d0 <delay_us>
4ca: 10 e0 ldi r17, 0x00 ; 0
4cc: 22 c0 rjmp .+68 ; 0x512 <main+0x9e>
while(MMC_SD_Reset())//初始化SD卡 //sd card initialize
{
retry++;
4ce: 1f 5f subi r17, 0xFF ; 255
if(retry>20)
4d0: 15 31 cpi r17, 0x15 ; 21
4d2: f9 f4 brne .+62 ; 0x512 <main+0x9e>
{
while(1) //初始化失败显示
{
GUI_sprintf_chartobit(120,0,0x55,0xffff,0x0000) ;
4d4: 00 e0 ldi r16, 0x00 ; 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -