📄 smg.lss
字号:
smg.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001c6 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 000001c6 0000025a 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000008 00800060 00800060 0000025a 2**0
ALLOC
3 .noinit 00000000 00800068 00800068 0000025a 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 0000025a 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 0000025c 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000005c8 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 0000064c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000041 00000000 00000000 00000660 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 0000020f 00000000 00000000 000006a1 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000110 00000000 00000000 000008b0 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000176 00000000 00000000 000009c0 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000128 00000000 00000000 00000b36 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 32 00 jmp 0x64 <__init>
4: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
8: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
c: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
10: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
14: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
18: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
1c: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
20: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
24: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
28: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
2c: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
30: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
34: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
38: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
3c: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
40: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
44: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
48: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
4c: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
50: 0c 94 4d 00 jmp 0x9a <__bad_interrupt>
00000054 <SegCode>:
54: 3f 06 5b 4f 66 6d 7d 07 7f 6f 77 7c 39 5e 79 71 ?.[Ofm}..ow|9^yq
00000064 <__init>:
64: 11 24 eor r1, r1
66: 1f be out 0x3f, r1 ; 63
68: cf e5 ldi r28, 0x5F ; 95
6a: d4 e0 ldi r29, 0x04 ; 4
6c: de bf out 0x3e, r29 ; 62
6e: cd bf out 0x3d, r28 ; 61
00000070 <__do_copy_data>:
70: 10 e0 ldi r17, 0x00 ; 0
72: a0 e6 ldi r26, 0x60 ; 96
74: b0 e0 ldi r27, 0x00 ; 0
76: e6 ec ldi r30, 0xC6 ; 198
78: f1 e0 ldi r31, 0x01 ; 1
7a: 02 c0 rjmp .+4 ; 0x80 <.do_copy_data_start>
0000007c <.do_copy_data_loop>:
7c: 05 90 lpm r0, Z+
7e: 0d 92 st X+, r0
00000080 <.do_copy_data_start>:
80: a0 36 cpi r26, 0x60 ; 96
82: b1 07 cpc r27, r17
84: d9 f7 brne .-10 ; 0x7c <.do_copy_data_loop>
00000086 <__do_clear_bss>:
86: 10 e0 ldi r17, 0x00 ; 0
88: a0 e6 ldi r26, 0x60 ; 96
8a: b0 e0 ldi r27, 0x00 ; 0
8c: 01 c0 rjmp .+2 ; 0x90 <.do_clear_bss_start>
0000008e <.do_clear_bss_loop>:
8e: 1d 92 st X+, r1
00000090 <.do_clear_bss_start>:
90: a8 36 cpi r26, 0x68 ; 104
92: b1 07 cpc r27, r17
94: e1 f7 brne .-8 ; 0x8e <.do_clear_bss_loop>
96: 0c 94 80 00 jmp 0x100 <main>
0000009a <__bad_interrupt>:
9a: 0c 94 00 00 jmp 0x0 <__vectors>
0000009e <SmgScan>:
unsigned char DisBuffer[8];
void SmgScan(void)
{
9e: 0f 93 push r16
a0: 1f 93 push r17
a2: cf 93 push r28
a4: df 93 push r29
a6: 01 e0 ldi r16, 0x01 ; 1
a8: 10 e0 ldi r17, 0x00 ; 0
aa: a0 ea ldi r26, 0xA0 ; 160
ac: bf e0 ldi r27, 0x0F ; 15
ae: c0 e0 ldi r28, 0x00 ; 0
b0: d0 e0 ldi r29, 0x00 ; 0
b2: 60 e6 ldi r22, 0x60 ; 96
b4: 70 e0 ldi r23, 0x00 ; 0
b6: 20 e0 ldi r18, 0x00 ; 0
b8: 30 e0 ldi r19, 0x00 ; 0
ba: 47 e0 ldi r20, 0x07 ; 7
unsigned char i=0;
for(i=0;i<8;i++)
{
PORTB = pgm_read_byte(&SegCode[DisBuffer[i]]);/* Output the Segment code */
bc: fb 01 movw r30, r22
be: 81 91 ld r24, Z+
c0: bf 01 movw r22, r30
c2: e8 2f mov r30, r24
c4: ff 27 eor r31, r31
c6: ec 5a subi r30, 0xAC ; 172
c8: ff 4f sbci r31, 0xFF ; 255
ca: 84 91 lpm r24, Z
cc: 88 bb out 0x18, r24 ; 24
PORTA|= (1<<PA4); /* Disable the Latch pin to get the new data */
ce: dc 9a sbi 0x1b, 4 ; 27
PORTA&=~(1<<PA4); /* Enable the latch pin to keeping the data */
d0: dc 98 cbi 0x1b, 4 ; 27
PORTB = (1<<i); /* Select one 7-segment display */
d2: c8 01 movw r24, r16
d4: 02 2e mov r0, r18
d6: 02 c0 rjmp .+4 ; 0xdc <SmgScan+0x3e>
d8: 88 0f add r24, r24
da: 99 1f adc r25, r25
dc: 0a 94 dec r0
de: e2 f7 brpl .-8 ; 0xd8 <SmgScan+0x3a>
e0: 88 bb out 0x18, r24 ; 24
PORTA|= (1<<PA5); /* Disable the Latch pin to get the new data */
e2: dd 9a sbi 0x1b, 5 ; 27
PORTA&=~(1<<PA5); /* Enable the latch pin to keeping the data */
e4: dd 98 cbi 0x1b, 5 ; 27
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
e6: cd 01 movw r24, r26
e8: 01 97 sbiw r24, 0x01 ; 1
ea: f1 f7 brne .-4 ; 0xe8 <SmgScan+0x4a>
ec: 41 50 subi r20, 0x01 ; 1
ee: 2f 5f subi r18, 0xFF ; 255
f0: 3f 4f sbci r19, 0xFF ; 255
f2: 47 ff sbrs r20, 7
f4: e3 cf rjmp .-58 ; 0xbc <SmgScan+0x1e>
f6: df 91 pop r29
f8: cf 91 pop r28
fa: 1f 91 pop r17
fc: 0f 91 pop r16
fe: 08 95 ret
00000100 <main>:
_delay_ms(2); /* A short delay to make it lighten for a short time */
}
}
int main(void)
{
100: cf e5 ldi r28, 0x5F ; 95
102: d4 e0 ldi r29, 0x04 ; 4
104: de bf out 0x3e, r29 ; 62
106: cd bf out 0x3d, r28 ; 61
unsigned int Count=0;
108: c0 e0 ldi r28, 0x00 ; 0
10a: d0 e0 ldi r29, 0x00 ; 0
/* Set Smg LE pin as output , databus as output */
DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6);
10c: 8a b3 in r24, 0x1a ; 26
10e: 80 67 ori r24, 0x70 ; 112
110: 8a bb out 0x1a, r24 ; 26
DDRB = 0xFF;
112: 8f ef ldi r24, 0xFF ; 255
114: 87 bb out 0x17, r24 ; 23
/* Turn off the led */
PORTB = 0xFF;
116: 88 bb out 0x18, r24 ; 24
PORTA|= (1<<PA6);
118: de 9a sbi 0x1b, 6 ; 27
PORTA&=~(1<<PA6);
11a: de 98 cbi 0x1b, 6 ; 27
while(1)
{
Count++;
11c: 21 96 adiw r28, 0x01 ; 1
DisBuffer[0]=0;
11e: 10 92 60 00 sts 0x0060, r1
DisBuffer[1]=0;
122: 10 92 61 00 sts 0x0061, r1
DisBuffer[2]=0;
126: 10 92 62 00 sts 0x0062, r1
DisBuffer[3]=Count/10000%10;
12a: ce 01 movw r24, r28
12c: 60 e1 ldi r22, 0x10 ; 16
12e: 77 e2 ldi r23, 0x27 ; 39
130: 0e 94 cf 00 call 0x19e <__udivmodhi4>
134: cb 01 movw r24, r22
136: 6a e0 ldi r22, 0x0A ; 10
138: 70 e0 ldi r23, 0x00 ; 0
13a: 0e 94 cf 00 call 0x19e <__udivmodhi4>
13e: 80 93 63 00 sts 0x0063, r24
DisBuffer[4]=Count/1000%10;
142: ce 01 movw r24, r28
144: 68 ee ldi r22, 0xE8 ; 232
146: 73 e0 ldi r23, 0x03 ; 3
148: 0e 94 cf 00 call 0x19e <__udivmodhi4>
14c: cb 01 movw r24, r22
14e: 6a e0 ldi r22, 0x0A ; 10
150: 70 e0 ldi r23, 0x00 ; 0
152: 0e 94 cf 00 call 0x19e <__udivmodhi4>
156: 80 93 64 00 sts 0x0064, r24
DisBuffer[5]=Count/100%10;
15a: ce 01 movw r24, r28
15c: 64 e6 ldi r22, 0x64 ; 100
15e: 70 e0 ldi r23, 0x00 ; 0
160: 0e 94 cf 00 call 0x19e <__udivmodhi4>
164: cb 01 movw r24, r22
166: 6a e0 ldi r22, 0x0A ; 10
168: 70 e0 ldi r23, 0x00 ; 0
16a: 0e 94 cf 00 call 0x19e <__udivmodhi4>
16e: 80 93 65 00 sts 0x0065, r24
DisBuffer[6]=Count/10%10;
172: ce 01 movw r24, r28
174: 6a e0 ldi r22, 0x0A ; 10
176: 70 e0 ldi r23, 0x00 ; 0
178: 0e 94 cf 00 call 0x19e <__udivmodhi4>
17c: cb 01 movw r24, r22
17e: 6a e0 ldi r22, 0x0A ; 10
180: 70 e0 ldi r23, 0x00 ; 0
182: 0e 94 cf 00 call 0x19e <__udivmodhi4>
186: 80 93 66 00 sts 0x0066, r24
DisBuffer[7]=Count/1%10;
18a: ce 01 movw r24, r28
18c: 6a e0 ldi r22, 0x0A ; 10
18e: 70 e0 ldi r23, 0x00 ; 0
190: 0e 94 cf 00 call 0x19e <__udivmodhi4>
194: 80 93 67 00 sts 0x0067, r24
SmgScan();
198: 0e 94 4f 00 call 0x9e <SmgScan>
19c: bf cf rjmp .-130 ; 0x11c <main+0x1c>
0000019e <__udivmodhi4>:
19e: aa 1b sub r26, r26
1a0: bb 1b sub r27, r27
1a2: 51 e1 ldi r21, 0x11 ; 17
1a4: 07 c0 rjmp .+14 ; 0x1b4 <__udivmodhi4_ep>
000001a6 <__udivmodhi4_loop>:
1a6: aa 1f adc r26, r26
1a8: bb 1f adc r27, r27
1aa: a6 17 cp r26, r22
1ac: b7 07 cpc r27, r23
1ae: 10 f0 brcs .+4 ; 0x1b4 <__udivmodhi4_ep>
1b0: a6 1b sub r26, r22
1b2: b7 0b sbc r27, r23
000001b4 <__udivmodhi4_ep>:
1b4: 88 1f adc r24, r24
1b6: 99 1f adc r25, r25
1b8: 5a 95 dec r21
1ba: a9 f7 brne .-22 ; 0x1a6 <__udivmodhi4_loop>
1bc: 80 95 com r24
1be: 90 95 com r25
1c0: bc 01 movw r22, r24
1c2: cd 01 movw r24, r26
1c4: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -