📄 main.lss
字号:
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 + -