📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000028e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000014 00800060 0000028e 00000322 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000002 00800074 00800074 00000336 2**0
ALLOC
3 .noinit 00000000 00800076 00800076 00000336 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000336 2**0
CONTENTS
5 .stab 00000528 00000000 00000000 00000338 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000589 00000000 00000000 00000860 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 45 00 jmp 0x8a
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 fd 00 jmp 0x1fa
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: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: ee e8 ldi r30, 0x8E ; 142
68: f2 e0 ldi r31, 0x02 ; 2
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: a4 37 cpi r26, 0x74 ; 116
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a4 e7 ldi r26, 0x74 ; 116
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a6 37 cpi r26, 0x76 ; 118
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 2f 01 jmp 0x25e
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <keyboard>:
uint8_t keyboard(void)
{
static uint8_t scancode=0xF7,tempnum=16,lastnum=16,currentnum=16,times=0;
switch(scancode)
8e: 80 91 70 00 lds r24, 0x0070
92: 99 27 eor r25, r25
94: 8b 3f cpi r24, 0xFB ; 251
96: 91 05 cpc r25, r1
98: 69 f0 breq .+26 ; 0xb4
9a: 8c 3f cpi r24, 0xFC ; 252
9c: 91 05 cpc r25, r1
9e: 24 f4 brge .+8 ; 0xa8
a0: 87 3f cpi r24, 0xF7 ; 247
a2: 91 05 cpc r25, r1
a4: 29 f0 breq .+10 ; 0xb0
a6: 0a c0 rjmp .+20 ; 0xbc
a8: 8d 3f cpi r24, 0xFD ; 253
aa: 91 05 cpc r25, r1
ac: 29 f0 breq .+10 ; 0xb8
ae: 06 c0 rjmp .+12 ; 0xbc
{
case 0xF7:scancode=0xFB;break;
b0: 8b ef ldi r24, 0xFB ; 251
b2: 05 c0 rjmp .+10 ; 0xbe
case 0xFB:scancode=0xFD;break;
b4: 8d ef ldi r24, 0xFD ; 253
b6: 03 c0 rjmp .+6 ; 0xbe
case 0xFD:scancode=0xFE;break;
b8: 8e ef ldi r24, 0xFE ; 254
ba: 01 c0 rjmp .+2 ; 0xbe
case 0xFE:scancode=0xF7;break;
default:scancode=0xF7;break;
bc: 87 ef ldi r24, 0xF7 ; 247
be: 80 93 70 00 sts 0x0070, r24
}
KEYPORT=scancode;
c2: 80 91 70 00 lds r24, 0x0070
c6: 85 bb out 0x15, r24 ; 21
switch(KEYPIN)
c8: 83 b3 in r24, 0x13 ; 19
ca: 99 27 eor r25, r25
cc: 8e 3b cpi r24, 0xBE ; 190
ce: 91 05 cpc r25, r1
d0: 09 f4 brne .+2 ; 0xd4
d2: 6b c0 rjmp .+214 ; 0x1aa
d4: 8f 3b cpi r24, 0xBF ; 191
d6: 91 05 cpc r25, r1
d8: 34 f5 brge .+76 ; 0x126
da: 8e 37 cpi r24, 0x7E ; 126
dc: 91 05 cpc r25, r1
de: 09 f4 brne .+2 ; 0xe2
e0: 66 c0 rjmp .+204 ; 0x1ae
e2: 8f 37 cpi r24, 0x7F ; 127
e4: 91 05 cpc r25, r1
e6: 8c f4 brge .+34 ; 0x10a
e8: 8b 37 cpi r24, 0x7B ; 123
ea: 91 05 cpc r25, r1
ec: 09 f4 brne .+2 ; 0xf0
ee: 4f c0 rjmp .+158 ; 0x18e
f0: 8c 37 cpi r24, 0x7C ; 124
f2: 91 05 cpc r25, r1
f4: 2c f4 brge .+10 ; 0x100
f6: 87 37 cpi r24, 0x77 ; 119
f8: 91 05 cpc r25, r1
fa: 09 f4 brne .+2 ; 0xfe
fc: 40 c0 rjmp .+128 ; 0x17e
fe: 59 c0 rjmp .+178 ; 0x1b2
100: 8d 37 cpi r24, 0x7D ; 125
102: 91 05 cpc r25, r1
104: 09 f4 brne .+2 ; 0x108
106: 4b c0 rjmp .+150 ; 0x19e
108: 54 c0 rjmp .+168 ; 0x1b2
10a: 8b 3b cpi r24, 0xBB ; 187
10c: 91 05 cpc r25, r1
10e: e9 f1 breq .+122 ; 0x18a
110: 8c 3b cpi r24, 0xBC ; 188
112: 91 05 cpc r25, r1
114: 24 f4 brge .+8 ; 0x11e
116: 87 3b cpi r24, 0xB7 ; 183
118: 91 05 cpc r25, r1
11a: 79 f1 breq .+94 ; 0x17a
11c: 4a c0 rjmp .+148 ; 0x1b2
11e: 8d 3b cpi r24, 0xBD ; 189
120: 91 05 cpc r25, r1
122: d9 f1 breq .+118 ; 0x19a
124: 46 c0 rjmp .+140 ; 0x1b2
126: 8e 3d cpi r24, 0xDE ; 222
128: 91 05 cpc r25, r1
12a: e9 f1 breq .+122 ; 0x1a6
12c: 8f 3d cpi r24, 0xDF ; 223
12e: 91 05 cpc r25, r1
130: 74 f4 brge .+28 ; 0x14e
132: 8b 3d cpi r24, 0xDB ; 219
134: 91 05 cpc r25, r1
136: 39 f1 breq .+78 ; 0x186
138: 8c 3d cpi r24, 0xDC ; 220
13a: 91 05 cpc r25, r1
13c: 24 f4 brge .+8 ; 0x146
13e: 87 3d cpi r24, 0xD7 ; 215
140: 91 05 cpc r25, r1
142: c9 f0 breq .+50 ; 0x176
144: 36 c0 rjmp .+108 ; 0x1b2
146: 8d 3d cpi r24, 0xDD ; 221
148: 91 05 cpc r25, r1
14a: 29 f1 breq .+74 ; 0x196
14c: 32 c0 rjmp .+100 ; 0x1b2
14e: 8b 3e cpi r24, 0xEB ; 235
150: 91 05 cpc r25, r1
152: b9 f0 breq .+46 ; 0x182
154: 8c 3e cpi r24, 0xEC ; 236
156: 91 05 cpc r25, r1
158: 24 f4 brge .+8 ; 0x162
15a: 87 3e cpi r24, 0xE7 ; 231
15c: 91 05 cpc r25, r1
15e: 41 f0 breq .+16 ; 0x170
160: 28 c0 rjmp .+80 ; 0x1b2
162: 8d 3e cpi r24, 0xED ; 237
164: 91 05 cpc r25, r1
166: a9 f0 breq .+42 ; 0x192
168: 8e 3e cpi r24, 0xEE ; 238
16a: 91 05 cpc r25, r1
16c: d1 f0 breq .+52 ; 0x1a2
16e: 21 c0 rjmp .+66 ; 0x1b2
{
case 0xE7:tempnum=0;times=0;break;
170: 10 92 71 00 sts 0x0071, r1
174: 28 c0 rjmp .+80 ; 0x1c6
case 0xD7:tempnum=1;times=0;break;
176: 81 e0 ldi r24, 0x01 ; 1
178: 24 c0 rjmp .+72 ; 0x1c2
case 0xB7:tempnum=2;times=0;break;
17a: 82 e0 ldi r24, 0x02 ; 2
17c: 22 c0 rjmp .+68 ; 0x1c2
case 0x77:tempnum=3;times=0;break;
17e: 83 e0 ldi r24, 0x03 ; 3
180: 20 c0 rjmp .+64 ; 0x1c2
case 0xEB:tempnum=4;times=0;break;
182: 84 e0 ldi r24, 0x04 ; 4
184: 1e c0 rjmp .+60 ; 0x1c2
case 0xDB:tempnum=5;times=0;break;
186: 85 e0 ldi r24, 0x05 ; 5
188: 1c c0 rjmp .+56 ; 0x1c2
case 0xBB:tempnum=6;times=0;break;
18a: 86 e0 ldi r24, 0x06 ; 6
18c: 1a c0 rjmp .+52 ; 0x1c2
case 0x7B:tempnum=7;times=0;break;
18e: 87 e0 ldi r24, 0x07 ; 7
190: 18 c0 rjmp .+48 ; 0x1c2
case 0xED:tempnum=8;times=0;break;
192: 88 e0 ldi r24, 0x08 ; 8
194: 16 c0 rjmp .+44 ; 0x1c2
case 0xDD:tempnum=9;times=0;break;
196: 89 e0 ldi r24, 0x09 ; 9
198: 14 c0 rjmp .+40 ; 0x1c2
case 0xBD:tempnum=10;times=0;break;
19a: 8a e0 ldi r24, 0x0A ; 10
19c: 12 c0 rjmp .+36 ; 0x1c2
case 0x7D:tempnum=11;times=0;break;
19e: 8b e0 ldi r24, 0x0B ; 11
1a0: 10 c0 rjmp .+32 ; 0x1c2
case 0xEE:tempnum=12;times=0;break;
1a2: 8c e0 ldi r24, 0x0C ; 12
1a4: 0e c0 rjmp .+28 ; 0x1c2
case 0xDE:tempnum=13;times=0;break;
1a6: 8d e0 ldi r24, 0x0D ; 13
1a8: 0c c0 rjmp .+24 ; 0x1c2
case 0xBE:tempnum=14;times=0;break;
1aa: 8e e0 ldi r24, 0x0E ; 14
1ac: 0a c0 rjmp .+20 ; 0x1c2
case 0x7E:tempnum=15;times=0;break;
1ae: 8f e0 ldi r24, 0x0F ; 15
1b0: 08 c0 rjmp .+16 ; 0x1c2
default:{
times++;
1b2: 80 91 74 00 lds r24, 0x0074
1b6: 8f 5f subi r24, 0xFF ; 255
1b8: 80 93 74 00 sts 0x0074, r24
if(times==4)
1bc: 84 30 cpi r24, 0x04 ; 4
1be: 29 f4 brne .+10 ; 0x1ca
{
tempnum=16;
1c0: 80 e1 ldi r24, 0x10 ; 16
1c2: 80 93 71 00 sts 0x0071, r24
times=0;
1c6: 10 92 74 00 sts 0x0074, r1
}
}break;
}
lastnum=currentnum;
1ca: 80 91 73 00 lds r24, 0x0073
1ce: 80 93 72 00 sts 0x0072, r24
currentnum=tempnum;
1d2: 90 91 71 00 lds r25, 0x0071
1d6: 90 93 73 00 sts 0x0073, r25
if(currentnum==lastnum)return(16);
1da: 98 17 cp r25, r24
1dc: 19 f4 brne .+6 ; 0x1e4
1de: 80 e1 ldi r24, 0x10 ; 16
1e0: 90 e0 ldi r25, 0x00 ; 0
1e2: 08 95 ret
else return(currentnum);
1e4: 89 2f mov r24, r25
1e6: 99 27 eor r25, r25
}
1e8: 08 95 ret
1ea: 08 95 ret
000001ec <Initi_Device>:
uint8_t ledcode[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C,0x58,0x5E,0x79,0x71};
//uint8_t ledaddr[6]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; //for PD port pd5=0,
void Initi_Device(void)
{
LED_ADD_DDR=0xFF;
1ec: 9f ef ldi r25, 0xFF ; 255
1ee: 91 bb out 0x11, r25 ; 17
LED_ADD_PORT=0xFE;
1f0: 8e ef ldi r24, 0xFE ; 254
1f2: 82 bb out 0x12, r24 ; 18
LED_DATA_DDR=0xFF;
1f4: 97 bb out 0x17, r25 ; 23
LED_DATA_PORT=0xFF;
1f6: 98 bb out 0x18, r25 ; 24
1f8: 08 95 ret
000001fa <__vector_8>:
}
SIGNAL(SIG_OVERFLOW1)
{
1fa: 1f 92 push r1
1fc: 0f 92 push r0
1fe: 0f b6 in r0, 0x3f ; 63
200: 0f 92 push r0
202: 11 24 eor r1, r1
204: 2f 93 push r18
206: 3f 93 push r19
208: 4f 93 push r20
20a: 5f 93 push r21
20c: 6f 93 push r22
20e: 7f 93 push r23
210: 8f 93 push r24
212: 9f 93 push r25
214: af 93 push r26
216: bf 93 push r27
218: ef 93 push r30
21a: ff 93 push r31
static uint8_t code_num=0;
code_num=keyboard();
21c: 0e 94 47 00 call 0x8e
220: 80 93 75 00 sts 0x0075, r24
if (code_num!=16)
224: 80 31 cpi r24, 0x10 ; 16
226: 31 f0 breq .+12 ; 0x234
LED_DATA_PORT=ledcode[code_num];
228: e8 2f mov r30, r24
22a: ff 27 eor r31, r31
22c: e0 5a subi r30, 0xA0 ; 160
22e: ff 4f sbci r31, 0xFF ; 255
230: 80 81 ld r24, Z
232: 88 bb out 0x18, r24 ; 24
TCNT1L=0xB2;
234: 82 eb ldi r24, 0xB2 ; 178
236: 8c bd out 0x2c, r24 ; 44
TCNT1H=0xFF;
238: 8f ef ldi r24, 0xFF ; 255
23a: 8d bd out 0x2d, r24 ; 45
23c: ff 91 pop r31
23e: ef 91 pop r30
240: bf 91 pop r27
242: af 91 pop r26
244: 9f 91 pop r25
246: 8f 91 pop r24
248: 7f 91 pop r23
24a: 6f 91 pop r22
24c: 5f 91 pop r21
24e: 4f 91 pop r20
250: 3f 91 pop r19
252: 2f 91 pop r18
254: 0f 90 pop r0
256: 0f be out 0x3f, r0 ; 63
258: 0f 90 pop r0
25a: 1f 90 pop r1
25c: 18 95 reti
0000025e <main>:
}
int main(void)
{
25e: cf e5 ldi r28, 0x5F ; 95
260: d4 e0 ldi r29, 0x04 ; 4
262: de bf out 0x3e, r29 ; 62
264: cd bf out 0x3d, r28 ; 61
Initi_Device();
266: 0e 94 f6 00 call 0x1ec
DDRC=0x0F;
26a: 8f e0 ldi r24, 0x0F ; 15
26c: 84 bb out 0x14, r24 ; 20
PORTC=0xFF;
26e: 9f ef ldi r25, 0xFF ; 255
270: 95 bb out 0x15, r25 ; 21
TCNT1L=0xB2;
272: 82 eb ldi r24, 0xB2 ; 178
274: 8c bd out 0x2c, r24 ; 44
TCNT1H=0xFF;
276: 9d bd out 0x2d, r25 ; 45
TCCR1A=0;
278: 1f bc out 0x2f, r1 ; 47
TCCR1B=5;
27a: 85 e0 ldi r24, 0x05 ; 5
27c: 8e bd out 0x2e, r24 ; 46
TIMSK=(1<<TOIE1);
27e: 84 e0 ldi r24, 0x04 ; 4
280: 89 bf out 0x39, r24 ; 57
LED_ADD_PORT=0xDF;
282: 8f ed ldi r24, 0xDF ; 223
284: 82 bb out 0x12, r24 ; 18
LED_DATA_PORT=0x3F;
286: 8f e3 ldi r24, 0x3F ; 63
288: 88 bb out 0x18, r24 ; 24
sei();
28a: 78 94 sei
for(;;)
28c: ff cf rjmp .-2 ; 0x28c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -