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

📄 main.lss

📁 单片机的液晶显示程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000004d8  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000180  00800060  000004d8  0000056c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000f  008001e0  008001e0  000006ec  2**0
                  ALLOC
  3 .noinit       00000000  008001ef  008001ef  000006ec  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000006ec  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000006ec  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000135  00000000  00000000  00000700  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   000005b7  00000000  00000000  00000835  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000001b4  00000000  00000000  00000dec  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   000004a7  00000000  00000000  00000fa0  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000184  00000000  00000000  00001447  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54
   4:	0c 94 3f 02 	jmp	0x47e
   8:	0c 94 45 00 	jmp	0x8a
   c:	0c 94 45 00 	jmp	0x8a
  10:	0c 94 45 00 	jmp	0x8a
  14:	0c 94 45 00 	jmp	0x8a
  18:	0c 94 45 00 	jmp	0x8a
  1c:	0c 94 45 00 	jmp	0x8a
  20:	0c 94 45 00 	jmp	0x8a
  24:	0c 94 45 00 	jmp	0x8a
  28:	0c 94 45 00 	jmp	0x8a
  2c:	0c 94 45 00 	jmp	0x8a
  30:	0c 94 45 00 	jmp	0x8a
  34:	0c 94 45 00 	jmp	0x8a
  38:	0c 94 45 00 	jmp	0x8a
  3c:	0c 94 45 00 	jmp	0x8a
  40:	0c 94 45 00 	jmp	0x8a
  44:	0c 94 45 00 	jmp	0x8a
  48:	0c 94 45 00 	jmp	0x8a
  4c:	0c 94 45 00 	jmp	0x8a
  50:	0c 94 45 00 	jmp	0x8a

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	11 e0       	ldi	r17, 0x01	; 1
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e8 ed       	ldi	r30, 0xD8	; 216
  68:	f4 e0       	ldi	r31, 0x04	; 4
  6a:	02 c0       	rjmp	.+4      	; 0x70

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

00000070 <.do_copy_data_start>:
  70:	a0 3e       	cpi	r26, 0xE0	; 224
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	11 e0       	ldi	r17, 0x01	; 1
  78:	a0 ee       	ldi	r26, 0xE0	; 224
  7a:	b1 e0       	ldi	r27, 0x01	; 1
  7c:	01 c0       	rjmp	.+2      	; 0x80

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	af 3e       	cpi	r26, 0xEF	; 239
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 d8 01 	jmp	0x3b0

0000008a <__bad_interrupt>:
  8a:	0c 94 00 00 	jmp	0x0

0000008e <glcdn_WriteData>:
int x=0;


void glcdn_WriteData(unsigned char myData)
{
  8e:	98 2f       	mov	r25, r24
	csl;   
  90:	91 98       	cbi	0x12, 1	; 18
	sclkl; 
  92:	c7 98       	cbi	0x18, 7	; 24
	sdatah;
  94:	c5 9a       	sbi	0x18, 5	; 24
	sclkh; 
  96:	c7 9a       	sbi	0x18, 7	; 24
	sclkl;
  98:	c7 98       	cbi	0x18, 7	; 24
	SPCR = 0x50; 
  9a:	80 e5       	ldi	r24, 0x50	; 80
  9c:	8d b9       	out	0x0d, r24	; 13
	SPDR = myData;
  9e:	9f b9       	out	0x0f, r25	; 15
	while(!(SPSR & 0x80));
  a0:	77 9b       	sbis	0x0e, 7	; 14
  a2:	fe cf       	rjmp	.-4      	; 0xa0
	csh;
  a4:	91 9a       	sbi	0x12, 1	; 18
	SPCR = 0x00;
  a6:	1d b8       	out	0x0d, r1	; 13
  a8:	08 95       	ret

000000aa <glcdn_WriteCommand>:
}

void glcdn_WriteCommand(unsigned char myData)
{
  aa:	98 2f       	mov	r25, r24
	csl;
  ac:	91 98       	cbi	0x12, 1	; 18
	sclkl;
  ae:	c7 98       	cbi	0x18, 7	; 24
	sdatal;
  b0:	c5 98       	cbi	0x18, 5	; 24
	sclkh;
  b2:	c7 9a       	sbi	0x18, 7	; 24
	sclkl;
  b4:	c7 98       	cbi	0x18, 7	; 24
	SPCR = 0x50;
  b6:	80 e5       	ldi	r24, 0x50	; 80
  b8:	8d b9       	out	0x0d, r24	; 13
	SPDR = myData;
  ba:	9f b9       	out	0x0f, r25	; 15
	while(!(SPSR & 0x80));
  bc:	77 9b       	sbis	0x0e, 7	; 14
  be:	fe cf       	rjmp	.-4      	; 0xbc
	csh;
  c0:	91 9a       	sbi	0x12, 1	; 18
	SPCR = 0x00;	
  c2:	1d b8       	out	0x0d, r1	; 13
  c4:	08 95       	ret

000000c6 <glcdn_SetPageArea>:
}


void glcdn_SetPageArea(char x1, char x2, char y1, char y2)
{
  c6:	ef 92       	push	r14
  c8:	ff 92       	push	r15
  ca:	0f 93       	push	r16
  cc:	1f 93       	push	r17
  ce:	18 2f       	mov	r17, r24
  d0:	06 2f       	mov	r16, r22
  d2:	f4 2e       	mov	r15, r20
  d4:	e2 2e       	mov	r14, r18
	glcdn_WriteCommand(ADDRX);
  d6:	85 e7       	ldi	r24, 0x75	; 117
  d8:	0e 94 55 00 	call	0xaa
	glcdn_WriteData(x1+1);
  dc:	81 2f       	mov	r24, r17
  de:	8f 5f       	subi	r24, 0xFF	; 255
  e0:	0e 94 47 00 	call	0x8e
	glcdn_WriteData(x2+1);
  e4:	80 2f       	mov	r24, r16
  e6:	8f 5f       	subi	r24, 0xFF	; 255
  e8:	0e 94 47 00 	call	0x8e
	glcdn_WriteCommand(ADDRY);
  ec:	85 e1       	ldi	r24, 0x15	; 21
  ee:	0e 94 55 00 	call	0xaa
	glcdn_WriteData(y1+1);
  f2:	8f 2d       	mov	r24, r15
  f4:	8f 5f       	subi	r24, 0xFF	; 255
  f6:	0e 94 47 00 	call	0x8e
	glcdn_WriteData(y2+1);
  fa:	8e 2d       	mov	r24, r14
  fc:	8f 5f       	subi	r24, 0xFF	; 255
  fe:	0e 94 47 00 	call	0x8e
 102:	1f 91       	pop	r17
 104:	0f 91       	pop	r16
 106:	ff 90       	pop	r15
 108:	ef 90       	pop	r14
 10a:	08 95       	ret

0000010c <write>:
}


void write()
{
 10c:	cf 93       	push	r28
 10e:	df 93       	push	r29
 110:	c7 e0       	ldi	r28, 0x07	; 7
 112:	d0 e0       	ldi	r29, 0x00	; 0
	int g;
	for(g=0;g<8;g++)
	 {
	 if(a&0x80)
 114:	80 91 ed 01 	lds	r24, 0x01ED
 118:	90 91 ee 01 	lds	r25, 0x01EE
 11c:	87 ff       	sbrs	r24, 7
 11e:	07 c0       	rjmp	.+14     	; 0x12e
	 {
	  glcdn_WriteData(colora);
 120:	80 91 ec 01 	lds	r24, 0x01EC
 124:	0e 94 47 00 	call	0x8e
	  glcdn_WriteData(colora);
 128:	80 91 ec 01 	lds	r24, 0x01EC
 12c:	06 c0       	rjmp	.+12     	; 0x13a
	  }
	 else
	 {
	  glcdn_WriteData(colorb);
 12e:	80 91 e7 01 	lds	r24, 0x01E7
 132:	0e 94 47 00 	call	0x8e
	  glcdn_WriteData(colorb);
 136:	80 91 e7 01 	lds	r24, 0x01E7
 13a:	0e 94 47 00 	call	0x8e
	 }
	  a<<=1;
 13e:	80 91 ed 01 	lds	r24, 0x01ED
 142:	90 91 ee 01 	lds	r25, 0x01EE
 146:	88 0f       	add	r24, r24
 148:	99 1f       	adc	r25, r25
 14a:	90 93 ee 01 	sts	0x01EE, r25
 14e:	80 93 ed 01 	sts	0x01ED, r24
 152:	21 97       	sbiw	r28, 0x01	; 1
 154:	d7 ff       	sbrs	r29, 7
 156:	de cf       	rjmp	.-68     	; 0x114
 158:	df 91       	pop	r29
 15a:	cf 91       	pop	r28
 15c:	08 95       	ret

0000015e <glcdDoFillRect>:
	 } 
}

void glcdDoFillRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) 
{
 15e:	b4 2f       	mov	r27, r20

    if ((x1 > glcd_Clip.X2) | (x2 < glcd_Clip.X1) | (y1 > glcd_Clip.Y2) | (y2 < glcd_Clip.Y1)) {return;}
 160:	e0 e0       	ldi	r30, 0x00	; 0
 162:	f0 e0       	ldi	r31, 0x00	; 0
 164:	a0 91 ea 01 	lds	r26, 0x01EA
 168:	a8 17       	cp	r26, r24
 16a:	10 f4       	brcc	.+4      	; 0x170
 16c:	e1 e0       	ldi	r30, 0x01	; 1
 16e:	f0 e0       	ldi	r31, 0x00	; 0
 170:	40 e0       	ldi	r20, 0x00	; 0
 172:	50 e0       	ldi	r21, 0x00	; 0
 174:	30 91 e8 01 	lds	r19, 0x01E8
 178:	b3 17       	cp	r27, r19
 17a:	10 f4       	brcc	.+4      	; 0x180
 17c:	41 e0       	ldi	r20, 0x01	; 1
 17e:	50 e0       	ldi	r21, 0x00	; 0
 180:	4e 2b       	or	r20, r30
 182:	5f 2b       	or	r21, r31
 184:	e0 e0       	ldi	r30, 0x00	; 0
 186:	f0 e0       	ldi	r31, 0x00	; 0
 188:	70 91 eb 01 	lds	r23, 0x01EB
 18c:	76 17       	cp	r23, r22
 18e:	10 f4       	brcc	.+4      	; 0x194
 190:	e1 e0       	ldi	r30, 0x01	; 1
 192:	f0 e0       	ldi	r31, 0x00	; 0
 194:	4e 2b       	or	r20, r30
 196:	5f 2b       	or	r21, r31
 198:	e0 e0       	ldi	r30, 0x00	; 0
 19a:	f0 e0       	ldi	r31, 0x00	; 0
 19c:	90 91 e9 01 	lds	r25, 0x01E9
 1a0:	29 17       	cp	r18, r25
 1a2:	10 f4       	brcc	.+4      	; 0x1a8
 1a4:	e1 e0       	ldi	r30, 0x01	; 1
 1a6:	f0 e0       	ldi	r31, 0x00	; 0
 1a8:	4e 2b       	or	r20, r30
 1aa:	5f 2b       	or	r21, r31
 1ac:	45 2b       	or	r20, r21
 1ae:	99 f4       	brne	.+38     	; 0x1d6
    if (x1 < glcd_Clip.X1) {x1 = glcd_Clip.X1;}
 1b0:	83 17       	cp	r24, r19
 1b2:	08 f4       	brcc	.+2      	; 0x1b6
 1b4:	83 2f       	mov	r24, r19
    if (y1 < glcd_Clip.Y1) {y1 = glcd_Clip.Y1;}
 1b6:	69 17       	cp	r22, r25
 1b8:	08 f4       	brcc	.+2      	; 0x1bc
 1ba:	69 2f       	mov	r22, r25
    if (x2 > glcd_Clip.X2) {x2 = glcd_Clip.X2;}
 1bc:	ab 17       	cp	r26, r27
 1be:	08 f4       	brcc	.+2      	; 0x1c2
 1c0:	ba 2f       	mov	r27, r26
    if (y2 > glcd_Clip.Y2) {y2 = glcd_Clip.Y2;}
 1c2:	72 17       	cp	r23, r18
 1c4:	08 f4       	brcc	.+2      	; 0x1c8
 1c6:	27 2f       	mov	r18, r23
     
    glcdn_SetPageArea(x1,x2,y1,y2);
 1c8:	46 2f       	mov	r20, r22
 1ca:	6b 2f       	mov	r22, r27
 1cc:	0e 94 63 00 	call	0xc6
    glcdn_WriteCommand(MEMWRITE);
 1d0:	8c e5       	ldi	r24, 0x5C	; 92
 1d2:	0e 94 55 00 	call	0xaa
 1d6:	08 95       	ret
 1d8:	08 95       	ret

000001da <glcdRectangle>:
}

void glcdRectangle(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) 
{
 1da:	98 2f       	mov	r25, r24
    glcdDoCheckCoord(x1, x2);
 1dc:	48 17       	cp	r20, r24
 1de:	10 f4       	brcc	.+4      	; 0x1e4
 1e0:	94 2f       	mov	r25, r20
 1e2:	48 2f       	mov	r20, r24
    glcdDoCheckCoord(y1, y2);
 1e4:	26 17       	cp	r18, r22
 1e6:	18 f4       	brcc	.+6      	; 0x1ee
 1e8:	86 2f       	mov	r24, r22
 1ea:	62 2f       	mov	r22, r18
 1ec:	28 2f       	mov	r18, r24
    glcdDoFillRect(x1, y1, x2, y2);   
 1ee:	89 2f       	mov	r24, r25
 1f0:	0e 94 af 00 	call	0x15e
 1f4:	08 95       	ret

000001f6 <glcdn_ClearLcd>:
	
}

void glcdn_ClearLcd()
{
 1f6:	cf 93       	push	r28
 1f8:	df 93       	push	r29
 	 unsigned int i;
	glcdn_SetPageArea(0, GLCD_X_END, 0, GLCD_Y_END);
 1fa:	23 e8       	ldi	r18, 0x83	; 131
 1fc:	40 e0       	ldi	r20, 0x00	; 0
 1fe:	62 2f       	mov	r22, r18
 200:	84 2f       	mov	r24, r20
 202:	0e 94 63 00 	call	0xc6
	glcdn_WriteCommand(MEMWRITE);
 206:	8c e5       	ldi	r24, 0x5C	; 92
 208:	0e 94 55 00 	call	0xaa
 20c:	c8 e0       	ldi	r28, 0x08	; 8
 20e:	d3 e4       	ldi	r29, 0x43	; 67

	for(i=0; i<(GLCD_PIXELX*GLCD_PIXELY);i++)
	{
		glcdn_WriteData(Color1);
 210:	80 91 e6 01 	lds	r24, 0x01E6
 214:	0e 94 47 00 	call	0x8e
		glcdn_WriteData(Color2);
 218:	80 91 e5 01 	lds	r24, 0x01E5
 21c:	0e 94 47 00 	call	0x8e
 220:	21 97       	sbiw	r28, 0x01	; 1
 222:	d7 ff       	sbrs	r29, 7
 224:	f5 cf       	rjmp	.-22     	; 0x210
 226:	df 91       	pop	r29
 228:	cf 91       	pop	r28
 22a:	08 95       	ret

0000022c <init_lcd>:
	}

}


void init_lcd()
{
 22c:	cf 93       	push	r28
 22e:	df 93       	push	r29
	PORTB=0XF9;
 230:	89 ef       	ldi	r24, 0xF9	; 249
 232:	88 bb       	out	0x18, r24	; 24
	GLCD_SER_DDR = 0xA0;
 234:	80 ea       	ldi	r24, 0xA0	; 160
 236:	87 bb       	out	0x17, r24	; 23
	PORTD=0x0F;
 238:	8f e0       	ldi	r24, 0x0F	; 15
 23a:	82 bb       	out	0x12, r24	; 18
	DDRD=0x03;
 23c:	83 e0       	ldi	r24, 0x03	; 3
 23e:	81 bb       	out	0x11, r24	; 17
	PORTA=0XFF;
 240:	8f ef       	ldi	r24, 0xFF	; 255
 242:	8b bb       	out	0x1b, r24	; 27
	DDRA=0X00;
 244:	1a ba       	out	0x1a, r1	; 26
	DDRC=0X00;
 246:	14 ba       	out	0x14, r1	; 20
	PORTC=0XFF;
 248:	85 bb       	out	0x15, r24	; 21
    csh;
 24a:	91 9a       	sbi	0x12, 1	; 18
	asm("nop");
 24c:	00 00       	nop
	csl;
 24e:	91 98       	cbi	0x12, 1	; 18
	restl;
 250:	90 98       	cbi	0x12, 0	; 18
		__ticks = 1;
	else if (__tmp > 65535)
		__ticks = 0;	/* i.e. 65536 */
	else

⌨️ 快捷键说明

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