📄 led.lss
字号:
led.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000322 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000002a 00800060 00000322 00000396 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .debug_aranges 00000020 00000000 00000000 000003c0 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000090 00000000 00000000 000003e0 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 000004f5 00000000 00000000 00000470 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 000001eb 00000000 00000000 00000965 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 000002c1 00000000 00000000 00000b50 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000050 00000000 00000000 00000e14 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 0000015d 00000000 00000000 00000e64 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 0000031a 00000000 00000000 00000fc1 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_ranges 00000020 00000000 00000000 000012db 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 1a c0 rjmp .+52 ; 0x36 <__ctors_end>
2: 34 c0 rjmp .+104 ; 0x6c <__bad_interrupt>
4: 33 c0 rjmp .+102 ; 0x6c <__bad_interrupt>
6: 32 c0 rjmp .+100 ; 0x6c <__bad_interrupt>
8: 31 c0 rjmp .+98 ; 0x6c <__bad_interrupt>
a: 30 c0 rjmp .+96 ; 0x6c <__bad_interrupt>
c: 2f c0 rjmp .+94 ; 0x6c <__bad_interrupt>
e: 2e c0 rjmp .+92 ; 0x6c <__bad_interrupt>
10: 2d c0 rjmp .+90 ; 0x6c <__bad_interrupt>
12: 2c c0 rjmp .+88 ; 0x6c <__bad_interrupt>
14: 2b c0 rjmp .+86 ; 0x6c <__bad_interrupt>
16: 2a c0 rjmp .+84 ; 0x6c <__bad_interrupt>
18: 29 c0 rjmp .+82 ; 0x6c <__bad_interrupt>
1a: 28 c0 rjmp .+80 ; 0x6c <__bad_interrupt>
1c: 27 c0 rjmp .+78 ; 0x6c <__bad_interrupt>
1e: 26 c0 rjmp .+76 ; 0x6c <__bad_interrupt>
20: 25 c0 rjmp .+74 ; 0x6c <__bad_interrupt>
22: 24 c0 rjmp .+72 ; 0x6c <__bad_interrupt>
24: 23 c0 rjmp .+70 ; 0x6c <__bad_interrupt>
00000026 <animation>:
26: 08 1c 2a 49 88 88 9c aa c9 88 88 9c aa c9 88 00 ..*I............
00000036 <__ctors_end>:
36: 11 24 eor r1, r1
38: 1f be out 0x3f, r1 ; 63
3a: cf e5 ldi r28, 0x5F ; 95
3c: d4 e0 ldi r29, 0x04 ; 4
3e: de bf out 0x3e, r29 ; 62
40: cd bf out 0x3d, r28 ; 61
00000042 <__do_copy_data>:
42: 10 e0 ldi r17, 0x00 ; 0
44: a0 e6 ldi r26, 0x60 ; 96
46: b0 e0 ldi r27, 0x00 ; 0
48: e2 e2 ldi r30, 0x22 ; 34
4a: f3 e0 ldi r31, 0x03 ; 3
4c: 02 c0 rjmp .+4 ; 0x52 <.do_copy_data_start>
0000004e <.do_copy_data_loop>:
4e: 05 90 lpm r0, Z+
50: 0d 92 st X+, r0
00000052 <.do_copy_data_start>:
52: aa 38 cpi r26, 0x8A ; 138
54: b1 07 cpc r27, r17
56: d9 f7 brne .-10 ; 0x4e <.do_copy_data_loop>
00000058 <__do_clear_bss>:
58: 10 e0 ldi r17, 0x00 ; 0
5a: aa e8 ldi r26, 0x8A ; 138
5c: b0 e0 ldi r27, 0x00 ; 0
5e: 01 c0 rjmp .+2 ; 0x62 <.do_clear_bss_start>
00000060 <.do_clear_bss_loop>:
60: 1d 92 st X+, r1
00000062 <.do_clear_bss_start>:
62: aa 38 cpi r26, 0x8A ; 138
64: b1 07 cpc r27, r17
66: e1 f7 brne .-8 ; 0x60 <.do_clear_bss_loop>
68: b2 d0 rcall .+356 ; 0x1ce <main>
6a: 59 c1 rjmp .+690 ; 0x31e <_exit>
0000006c <__bad_interrupt>:
6c: c9 cf rjmp .-110 ; 0x0 <__vectors>
0000006e <setPixel>:
}// end of ANIMATION mode
return 0;
}
// Set a pixel by the pin number (value can be HIGH or LOW)
void setPixel(uint8_t pin, uint8_t value){
6e: e8 2f mov r30, r24
70: f0 e0 ldi r31, 0x00 ; 0
72: df 01 movw r26, r30
74: a5 58 subi r26, 0x85 ; 133
76: bf 4f sbci r27, 0xFF ; 255
78: ac 91 ld r26, X
// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t bit = digitalPinToBitMask[pin];
uint8_t port = digitalPinToPort[pin];
7a: e4 59 subi r30, 0x94 ; 148
7c: ff 4f sbci r31, 0xFF ; 255
7e: 20 81 ld r18, Z
volatile uint8_t *out;
if (port == PB) {
80: 22 30 cpi r18, 0x02 ; 2
82: 19 f4 brne .+6 ; 0x8a <setPixel+0x1c>
84: e8 e3 ldi r30, 0x38 ; 56
86: f0 e0 ldi r31, 0x00 ; 0
88: 04 c0 rjmp .+8 ; 0x92 <setPixel+0x24>
out = &PORTB;
} else
if (port == PD) {
8a: 24 30 cpi r18, 0x04 ; 4
8c: 11 f4 brne .+4 ; 0x92 <setPixel+0x24>
8e: e2 e3 ldi r30, 0x32 ; 50
90: f0 e0 ldi r31, 0x00 ; 0
out = &PORTD;
}
if (val == LOW) *out &= ~bit;
92: 66 23 and r22, r22
94: 29 f4 brne .+10 ; 0xa0 <setPixel+0x32>
96: 80 81 ld r24, Z
98: 9a 2f mov r25, r26
9a: 90 95 com r25
9c: 89 23 and r24, r25
9e: 02 c0 rjmp .+4 ; 0xa4 <setPixel+0x36>
else *out |= bit;
a0: 80 81 ld r24, Z
a2: 8a 2b or r24, r26
a4: 80 83 st Z, r24
can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
a6: 88 ec ldi r24, 0xC8 ; 200
a8: 8a 95 dec r24
aa: f1 f7 brne .-4 ; 0xa8 <setPixel+0x3a>
{
uint8_t bit = digitalPinToBitMask[pin];
uint8_t port = digitalPinToPort[pin];
volatile uint8_t *out;
if (port == PB) {
ac: 22 30 cpi r18, 0x02 ; 2
ae: 19 f4 brne .+6 ; 0xb6 <setPixel+0x48>
b0: e8 e3 ldi r30, 0x38 ; 56
b2: f0 e0 ldi r31, 0x00 ; 0
b4: 07 c0 rjmp .+14 ; 0xc4 <setPixel+0x56>
out = &PORTB;
} else
if (port == PD) {
b6: 24 30 cpi r18, 0x04 ; 4
b8: 19 f4 brne .+6 ; 0xc0 <setPixel+0x52>
ba: e2 e3 ldi r30, 0x32 ; 50
bc: f0 e0 ldi r31, 0x00 ; 0
be: 02 c0 rjmp .+4 ; 0xc4 <setPixel+0x56>
c0: e0 e0 ldi r30, 0x00 ; 0
c2: f0 e0 ldi r31, 0x00 ; 0
out = &PORTD;
}
if (val == LOW) *out &= ~bit;
c4: 80 81 ld r24, Z
c6: a0 95 com r26
c8: 8a 23 and r24, r26
ca: 80 83 st Z, r24
// Set a pixel by the pin number (value can be HIGH or LOW)
void setPixel(uint8_t pin, uint8_t value){
digitalWrite(pin,value);
_delay_us(600);
digitalWrite(pin,LOW);
}
cc: 08 95 ret
000000ce <paint>:
// Refresh paint all the dotmatrix by scanning all rows and cols
// Use times for choose the speeds
void paint(uint8_t matrix[], uint8_t times){
ce: 7f 92 push r7
d0: 8f 92 push r8
d2: 9f 92 push r9
d4: af 92 push r10
d6: bf 92 push r11
d8: cf 92 push r12
da: df 92 push r13
dc: ef 92 push r14
de: ff 92 push r15
e0: 0f 93 push r16
e2: 1f 93 push r17
e4: cf 93 push r28
e6: df 93 push r29
e8: 5c 01 movw r10, r24
ea: 76 2e mov r7, r22
ec: cc 24 eor r12, r12
for (i=0;i<times;i++){
for (row=0;row<7;row++){
digitalWrite(rows[row],LOW);
for(col=0;col<5;col++){
setPixel(cols[col],matrix[col]&1<<row);
ee: 91 e0 ldi r25, 0x01 ; 1
f0: 89 2e mov r8, r25
f2: 91 2c mov r9, r1
f4: 55 c0 rjmp .+170 ; 0x1a0 <paint+0xd2>
// Refresh paint all the dotmatrix by scanning all rows and cols
// Use times for choose the speeds
void paint(uint8_t matrix[], uint8_t times){
uint8_t col,row, i;
for (i=0;i<times;i++){
f6: 90 2f mov r25, r16
}
// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t bit = digitalPinToBitMask[pin];
f8: d7 01 movw r26, r14
fa: ec 91 ld r30, X
fc: f0 e0 ldi r31, 0x00 ; 0
fe: df 01 movw r26, r30
100: a5 58 subi r26, 0x85 ; 133
102: bf 4f sbci r27, 0xFF ; 255
104: ac 91 ld r26, X
uint8_t port = digitalPinToPort[pin];
106: e4 59 subi r30, 0x94 ; 148
108: ff 4f sbci r31, 0xFF ; 255
10a: e0 81 ld r30, Z
volatile uint8_t *out;
if (port == PB) {
10c: e2 30 cpi r30, 0x02 ; 2
10e: 19 f4 brne .+6 ; 0x116 <paint+0x48>
110: e8 e3 ldi r30, 0x38 ; 56
112: f0 e0 ldi r31, 0x00 ; 0
114: 07 c0 rjmp .+14 ; 0x124 <paint+0x56>
out = &PORTB;
} else
if (port == PD) {
116: e4 30 cpi r30, 0x04 ; 4
118: 19 f4 brne .+6 ; 0x120 <paint+0x52>
11a: e2 e3 ldi r30, 0x32 ; 50
11c: f0 e0 ldi r31, 0x00 ; 0
11e: 02 c0 rjmp .+4 ; 0x124 <paint+0x56>
120: e0 e0 ldi r30, 0x00 ; 0
122: f0 e0 ldi r31, 0x00 ; 0
out = &PORTD;
}
if (val == LOW) *out &= ~bit;
124: 80 81 ld r24, Z
126: a0 95 com r26
128: 8a 23 and r24, r26
12a: 80 83 st Z, r24
for (i=0;i<times;i++){
for (row=0;row<7;row++){
digitalWrite(rows[row],LOW);
for(col=0;col<5;col++){
setPixel(cols[col],matrix[col]&1<<row);
12c: 94 01 movw r18, r8
12e: 02 c0 rjmp .+4 ; 0x134 <paint+0x66>
130: 22 0f add r18, r18
132: 33 1f adc r19, r19
134: 9a 95 dec r25
136: e2 f7 brpl .-8 ; 0x130 <paint+0x62>
138: d2 2e mov r13, r18
13a: c0 e0 ldi r28, 0x00 ; 0
13c: d0 e0 ldi r29, 0x00 ; 0
13e: f5 01 movw r30, r10
140: ec 0f add r30, r28
142: fd 1f adc r31, r29
144: 60 81 ld r22, Z
146: 6d 21 and r22, r13
148: fe 01 movw r30, r28
14a: e0 5a subi r30, 0xA0 ; 160
14c: ff 4f sbci r31, 0xFF ; 255
14e: 80 81 ld r24, Z
150: 8e df rcall .-228 ; 0x6e <setPixel>
152: 21 96 adiw r28, 0x01 ; 1
uint8_t col,row, i;
for (i=0;i<times;i++){
for (row=0;row<7;row++){
digitalWrite(rows[row],LOW);
for(col=0;col<5;col++){
154: c5 30 cpi r28, 0x05 ; 5
156: d1 05 cpc r29, r1
158: 91 f7 brne .-28 ; 0x13e <paint+0x70>
}
// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t bit = digitalPinToBitMask[pin];
15a: d7 01 movw r26, r14
15c: ec 91 ld r30, X
15e: f0 e0 ldi r31, 0x00 ; 0
160: df 01 movw r26, r30
162: a5 58 subi r26, 0x85 ; 133
164: bf 4f sbci r27, 0xFF ; 255
166: ac 91 ld r26, X
uint8_t port = digitalPinToPort[pin];
168: e4 59 subi r30, 0x94 ; 148
16a: ff 4f sbci r31, 0xFF ; 255
16c: e0 81 ld r30, Z
volatile uint8_t *out;
if (port == PB) {
16e: e2 30 cpi r30, 0x02 ; 2
170: 19 f4 brne .+6 ; 0x178 <paint+0xaa>
172: e8 e3 ldi r30, 0x38 ; 56
174: f0 e0 ldi r31, 0x00 ; 0
176: 07 c0 rjmp .+14 ; 0x186 <paint+0xb8>
out = &PORTB;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -