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

📄 hyj.lss

📁 240*320 TFT屏用M16读取SD卡内BMP格式图片.和汉字显示程序(字库也是存在SD卡里
💻 LSS
📖 第 1 页 / 共 5 页
字号:

hyj.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00002714  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001a  00800060  00002714  00002788  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000036  0080007a  0000272e  000027a2  2**0
                  ALLOC
  3 .debug_aranges 000000c0  00000000  00000000  000027a2  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 0000046b  00000000  00000000  00002862  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   00002000  00000000  00000000  00002ccd  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 0000099b  00000000  00000000  00004ccd  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   00001d90  00000000  00000000  00005668  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000300  00000000  00000000  000073f8  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    000007bb  00000000  00000000  000076f8  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    000017e8  00000000  00000000  00007eb3  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 000001c0  00000000  00000000  0000969b  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 aa 00 	jmp	0x154	; 0x154 <__ctors_end>
       4:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
       8:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
       c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      10:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      14:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      18:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      1c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      20:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      24:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      28:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      2c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      30:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      34:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      38:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      3c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      40:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      44:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      48:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      4c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
      50:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>

00000054 <suzi>:
      54:	00 00 00 18 24 42 42 42 42 42 42 42 24 18 00 00     ....$BBBBBBB$...
      64:	00 00 00 10 70 10 10 10 10 10 10 10 10 7c 00 00     ....p........|..
      74:	00 00 00 3c 42 42 42 04 04 08 10 20 42 7e 00 00     ...<BBB.... B~..
      84:	00 00 00 3c 42 42 04 18 04 02 02 42 44 38 00 00     ...<BB.....BD8..
      94:	00 00 00 04 0c 14 24 24 44 44 7e 04 04 1e 00 00     ......$$DD~.....
      a4:	00 00 00 7e 40 40 40 58 64 02 02 42 44 38 00 00     ...~@@@Xd..BD8..
      b4:	00 00 00 1c 24 40 40 58 64 42 42 42 24 18 00 00     ....$@@XdBBB$...
      c4:	00 00 00 7e 44 44 08 08 10 10 10 10 10 10 00 00     ...~DD..........
      d4:	00 00 00 3c 42 42 42 24 18 24 42 42 42 3c 00 00     ...<BBB$.$BBB<..
      e4:	00 00 00 18 24 42 42 42 26 1a 02 02 24 38 00 00     ....$BBB&...$8..
      f4:	00 00 00 10 10 18 28 28 24 3c 44 42 42 e7 00 00     ......(($<DBB...
     104:	00 00 00 f8 44 44 44 78 44 42 42 42 44 f8 00 00     ....DDDxDBBBD...
     114:	00 00 00 3e 42 42 80 80 80 80 80 42 44 38 00 00     ...>BB.....BD8..
     124:	00 00 00 f8 44 42 42 42 42 42 42 42 44 f8 00 00     ....DBBBBBBBD...
     134:	00 00 00 fc 42 48 48 78 48 48 40 42 42 fc 00 00     ....BHHxHH@BB...
     144:	00 00 00 fc 42 48 48 78 48 48 40 40 40 e0 00 00     ....BHHxHH@@@...

00000154 <__ctors_end>:
     154:	11 24       	eor	r1, r1
     156:	1f be       	out	0x3f, r1	; 63
     158:	cf e5       	ldi	r28, 0x5F	; 95
     15a:	d4 e0       	ldi	r29, 0x04	; 4
     15c:	de bf       	out	0x3e, r29	; 62
     15e:	cd bf       	out	0x3d, r28	; 61

00000160 <__do_copy_data>:
     160:	10 e0       	ldi	r17, 0x00	; 0
     162:	a0 e6       	ldi	r26, 0x60	; 96
     164:	b0 e0       	ldi	r27, 0x00	; 0
     166:	e4 e1       	ldi	r30, 0x14	; 20
     168:	f7 e2       	ldi	r31, 0x27	; 39
     16a:	02 c0       	rjmp	.+4      	; 0x170 <.do_copy_data_start>

0000016c <.do_copy_data_loop>:
     16c:	05 90       	lpm	r0, Z+
     16e:	0d 92       	st	X+, r0

00000170 <.do_copy_data_start>:
     170:	aa 37       	cpi	r26, 0x7A	; 122
     172:	b1 07       	cpc	r27, r17
     174:	d9 f7       	brne	.-10     	; 0x16c <.do_copy_data_loop>

00000176 <__do_clear_bss>:
     176:	10 e0       	ldi	r17, 0x00	; 0
     178:	aa e7       	ldi	r26, 0x7A	; 122
     17a:	b0 e0       	ldi	r27, 0x00	; 0
     17c:	01 c0       	rjmp	.+2      	; 0x180 <.do_clear_bss_start>

0000017e <.do_clear_bss_loop>:
     17e:	1d 92       	st	X+, r1

00000180 <.do_clear_bss_start>:
     180:	a0 3b       	cpi	r26, 0xB0	; 176
     182:	b1 07       	cpc	r27, r17
     184:	e1 f7       	brne	.-8      	; 0x17e <.do_clear_bss_loop>
     186:	0e 94 3a 02 	call	0x474	; 0x474 <main>
     18a:	0c 94 88 13 	jmp	0x2710	; 0x2710 <_exit>

0000018e <__bad_interrupt>:
     18e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000192 <disp_image>:
extern uint16 SectorsPerClust;//每簇扇区数

extern uint8  FAT32_Enable;

void disp_image(void)
  {
     192:	2f 92       	push	r2
     194:	3f 92       	push	r3
     196:	4f 92       	push	r4
     198:	5f 92       	push	r5
     19a:	6f 92       	push	r6
     19c:	7f 92       	push	r7
     19e:	8f 92       	push	r8
     1a0:	9f 92       	push	r9
     1a2:	af 92       	push	r10
     1a4:	bf 92       	push	r11
     1a6:	cf 92       	push	r12
     1a8:	df 92       	push	r13
     1aa:	ef 92       	push	r14
     1ac:	ff 92       	push	r15
     1ae:	0f 93       	push	r16
     1b0:	1f 93       	push	r17
     1b2:	df 93       	push	r29
     1b4:	cf 93       	push	r28
     1b6:	cd b7       	in	r28, 0x3d	; 61
     1b8:	de b7       	in	r29, 0x3e	; 62
     1ba:	ae 97       	sbiw	r28, 0x2e	; 46
     1bc:	0f b6       	in	r0, 0x3f	; 63
     1be:	f8 94       	cli
     1c0:	de bf       	out	0x3e, r29	; 62
     1c2:	0f be       	out	0x3f, r0	; 63
     1c4:	cd bf       	out	0x3d, r28	; 61
    WORD count= 1 ,i =0   ;
	uint8 *buffer ;
	uint8 type ,x , rgb,first ,color_byte,byte1,byte2,byte3 ;
	uint16 y ,color,tmp_color ;
    uint32 p;				//簇指示值			//cluster
	type = 1 ;
     1c6:	81 e0       	ldi	r24, 0x01	; 1
     1c8:	89 83       	std	Y+1, r24	; 0x01

    struct direntry BMPInfo;	//要播放的mp3文件信息		//the mp3 file item whichi will be played
	
	
	
	if( image_all == 0 )    //读取总图片数
     1ca:	80 91 7c 00 	lds	r24, 0x007C
     1ce:	90 91 7d 00 	lds	r25, 0x007D
     1d2:	9e 01       	movw	r18, r28
     1d4:	2e 5f       	subi	r18, 0xFE	; 254
     1d6:	3f 4f       	sbci	r19, 0xFF	; 255
     1d8:	ae 01       	movw	r20, r28
     1da:	4f 5f       	subi	r20, 0xFF	; 255
     1dc:	5f 4f       	sbci	r21, 0xFF	; 255
     1de:	89 2b       	or	r24, r25
     1e0:	c9 f4       	brne	.+50     	; 0x214 <disp_image+0x82>
	  {
         image_count =  0 ;
     1e2:	10 92 7b 00 	sts	0x007B, r1
     1e6:	10 92 7a 00 	sts	0x007A, r1
	     byte1 = Search(&BMPInfo,&image_count,&type) ;
     1ea:	6a e7       	ldi	r22, 0x7A	; 122
     1ec:	70 e0       	ldi	r23, 0x00	; 0
     1ee:	c9 01       	movw	r24, r18
     1f0:	0e 94 92 0b 	call	0x1724	; 0x1724 <Search>
     1f4:	88 a7       	std	Y+40, r24	; 0x28
		 image_all = image_count ;		 
     1f6:	80 91 7a 00 	lds	r24, 0x007A
     1fa:	90 91 7b 00 	lds	r25, 0x007B
     1fe:	90 93 7d 00 	sts	0x007D, r25
     202:	80 93 7c 00 	sts	0x007C, r24
		 image_count = 1 ;
     206:	81 e0       	ldi	r24, 0x01	; 1
     208:	90 e0       	ldi	r25, 0x00	; 0
     20a:	90 93 7b 00 	sts	0x007B, r25
     20e:	80 93 7a 00 	sts	0x007A, r24
     212:	06 c0       	rjmp	.+12     	; 0x220 <disp_image+0x8e>
		 GUI_sprintf_chartohex(60,300,image_all,0xffff,0x0000) ;
		 */
	  }
	else  
      {		
          byte1 = Search(&BMPInfo,&image_count,&type) ;
     214:	6a e7       	ldi	r22, 0x7A	; 122
     216:	70 e0       	ldi	r23, 0x00	; 0
     218:	c9 01       	movw	r24, r18
     21a:	0e 94 92 0b 	call	0x1724	; 0x1724 <Search>
     21e:	88 a7       	std	Y+40, r24	; 0x28
      }	
	 
	 
	 
	p = BMPInfo.deStartCluster+(((uint32)BMPInfo.deHighClust)<<16);//读文件首簇	//the first cluster of the file
     220:	8e 89       	ldd	r24, Y+22	; 0x16
     222:	9f 89       	ldd	r25, Y+23	; 0x17
     224:	a0 e0       	ldi	r26, 0x00	; 0
     226:	b0 e0       	ldi	r27, 0x00	; 0
     228:	6c 01       	movw	r12, r24
     22a:	bb 24       	eor	r11, r11
     22c:	aa 24       	eor	r10, r10
     22e:	8c 8d       	ldd	r24, Y+28	; 0x1c
     230:	9d 8d       	ldd	r25, Y+29	; 0x1d
     232:	a0 e0       	ldi	r26, 0x00	; 0
     234:	b0 e0       	ldi	r27, 0x00	; 0
     236:	a8 0e       	add	r10, r24
     238:	b9 1e       	adc	r11, r25
     23a:	ca 1e       	adc	r12, r26
     23c:	db 1e       	adc	r13, r27
	x = 0 ;
	y = 319 ;
	rgb = 0 ;
	count = 0 ;
	first = 0 ;
	buffer=malloc(512);	
     23e:	80 e0       	ldi	r24, 0x00	; 0
     240:	92 e0       	ldi	r25, 0x02	; 2
     242:	0e 94 45 12 	call	0x248a	; 0x248a <malloc>
     246:	3c 01       	movw	r6, r24
     248:	1a a6       	std	Y+42, r1	; 0x2a
     24a:	99 24       	eor	r9, r9
     24c:	19 a6       	std	Y+41, r1	; 0x29
     24e:	8f e3       	ldi	r24, 0x3F	; 63
     250:	91 e0       	ldi	r25, 0x01	; 1
     252:	9d a3       	std	Y+37, r25	; 0x25
     254:	8c a3       	std	Y+36, r24	; 0x24
     256:	22 24       	eor	r2, r2
     258:	33 24       	eor	r3, r3
     25a:	b8 c0       	rjmp	.+368    	; 0x3cc <disp_image+0x23a>
		i = 0 ;
	
	    for( ; i < SectorsPerClust ; i++ )      //簇
	     {
	 
	        FAT_LoadPartCluster(p,i,buffer);//读一个扇区	//read a sector
     25c:	93 01       	movw	r18, r6
     25e:	a1 01       	movw	r20, r2
     260:	c6 01       	movw	r24, r12
     262:	b5 01       	movw	r22, r10
     264:	0e 94 0b 0a 	call	0x1416	; 0x1416 <FAT_LoadPartCluster>
	   
	        if(i==0 && first==0) { count= buffer[0x0a] ; color_byte = buffer[0x1c] / 8  ;  first = 1 ; } 
     268:	21 14       	cp	r2, r1
     26a:	31 04       	cpc	r3, r1
     26c:	71 f4       	brne	.+28     	; 0x28a <disp_image+0xf8>
     26e:	99 a5       	ldd	r25, Y+41	; 0x29
     270:	99 23       	and	r25, r25
     272:	59 f4       	brne	.+22     	; 0x28a <disp_image+0xf8>
     274:	f3 01       	movw	r30, r6
     276:	82 85       	ldd	r24, Z+10	; 0x0a
     278:	48 2e       	mov	r4, r24
     27a:	55 24       	eor	r5, r5
     27c:	84 8c       	ldd	r8, Z+28	; 0x1c
     27e:	86 94       	lsr	r8
     280:	86 94       	lsr	r8
     282:	86 94       	lsr	r8
     284:	f1 e0       	ldi	r31, 0x01	; 1
     286:	f9 a7       	std	Y+41, r31	; 0x29
     288:	02 c0       	rjmp	.+4      	; 0x28e <disp_image+0xfc>
     28a:	44 24       	eor	r4, r4
     28c:	55 24       	eor	r5, r5
     28e:	73 01       	movw	r14, r6
     290:	e4 0c       	add	r14, r4
     292:	f5 1c       	adc	r15, r5
	        else { count=0 ; }
	   
	        while(count<512)  //读取一簇512扇区 (SectorsPerClust 每簇扇区数)
	          {
		   
		        if(color_byte == 3)   //24位颜色图
     294:	83 e0       	ldi	r24, 0x03	; 3
     296:	88 16       	cp	r8, r24
     298:	31 f5       	brne	.+76     	; 0x2e6 <disp_image+0x154>
		          {
                      switch ( rgb ) 
     29a:	91 e0       	ldi	r25, 0x01	; 1
     29c:	99 16       	cp	r9, r25
     29e:	71 f0       	breq	.+28     	; 0x2bc <disp_image+0x12a>
     2a0:	99 16       	cp	r9, r25
     2a2:	28 f0       	brcs	.+10     	; 0x2ae <disp_image+0x11c>
     2a4:	e2 e0       	ldi	r30, 0x02	; 2
     2a6:	9e 16       	cp	r9, r30
     2a8:	09 f0       	breq	.+2      	; 0x2ac <disp_image+0x11a>
     2aa:	65 c0       	rjmp	.+202    	; 0x376 <disp_image+0x1e4>
     2ac:	12 c0       	rjmp	.+36     	; 0x2d2 <disp_image+0x140>
                        {
			               case 0 : tmp_color = buffer[count]>>3 ;
			                        color |= tmp_color;
     2ae:	f7 01       	movw	r30, r14
     2b0:	80 81       	ld	r24, Z
     2b2:	86 95       	lsr	r24
     2b4:	86 95       	lsr	r24
     2b6:	86 95       	lsr	r24
     2b8:	90 e0       	ldi	r25, 0x00	; 0
     2ba:	12 c0       	rjmp	.+36     	; 0x2e0 <disp_image+0x14e>
					                break ;
					  
			               case 1 : tmp_color = buffer[count]>>2 ;
     2bc:	f7 01       	movw	r30, r14
     2be:	80 81       	ld	r24, Z
     2c0:	86 95       	lsr	r24
     2c2:	86 95       	lsr	r24
     2c4:	90 e0       	ldi	r25, 0x00	; 0
			                        tmp_color <<= 5 ;
			                        color |= tmp_color ;
     2c6:	25 e0       	ldi	r18, 0x05	; 5
     2c8:	88 0f       	add	r24, r24
     2ca:	99 1f       	adc	r25, r25
     2cc:	2a 95       	dec	r18
     2ce:	e1 f7       	brne	.-8      	; 0x2c8 <disp_image+0x136>
     2d0:	07 c0       	rjmp	.+14     	; 0x2e0 <disp_image+0x14e>
					                break ;
					   
       			           case 2 : tmp_color = buffer[count]>>3 ;
     2d2:	f7 01       	movw	r30, r14
     2d4:	80 81       	ld	r24, Z
			                        tmp_color <<= 11 ;
			                        color |= tmp_color ;
     2d6:	88 7f       	andi	r24, 0xF8	; 248
     2d8:	8c a7       	std	Y+44, r24	; 0x2c
     2da:	1b a6       	std	Y+43, r1	; 0x2b
     2dc:	8b a5       	ldd	r24, Y+43	; 0x2b
     2de:	9c a5       	ldd	r25, Y+44	; 0x2c
     2e0:	08 2b       	or	r16, r24
     2e2:	19 2b       	or	r17, r25
     2e4:	48 c0       	rjmp	.+144    	; 0x376 <disp_image+0x1e4>
			
                      rgb ++ ;
			      }
		        else
		          {
			          if(color_byte==2)  //16位颜色图
     2e6:	92 e0       	ldi	r25, 0x02	; 2
     2e8:	89 16       	cp	r8, r25
     2ea:	81 f4       	brne	.+32     	; 0x30c <disp_image+0x17a>
				        {
				          switch ( rgb )
     2ec:	99 20       	and	r9, r9
     2ee:	e9 f0       	breq	.+58     	; 0x32a <disp_image+0x198>
     2f0:	e1 e0       	ldi	r30, 0x01	; 1
     2f2:	9e 16       	cp	r9, r30
     2f4:	09 f0       	breq	.+2      	; 0x2f8 <disp_image+0x166>
     2f6:	3f c0       	rjmp	.+126    	; 0x376 <disp_image+0x1e4>
					          case 0 : byte1 = buffer[count] ;
								       break ; 
								   
						      case 1 :    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -