📄 2x8_key.lss
字号:
2X8_key.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000f2c 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 00000f2c 00000fc0 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000007 00800060 00800060 00000fc0 2**0
ALLOC
3 .noinit 00000000 00800067 00800067 00000fc0 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000fc0 2**0
CONTENTS
5 .stab 00001b84 00000000 00000000 00000fc0 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000aec 00000000 00000000 00002b44 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 5e 00 jmp 0xbc <__vector_9>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
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: ec e2 ldi r30, 0x2C ; 44
68: ff e0 ldi r31, 0x0F ; 15
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a0 e6 ldi r26, 0x60 ; 96
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a7 36 cpi r26, 0x67 ; 103
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 8b 00 jmp 0x116 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <Timer0_init>:
* Author:Ken
* Date:2007-08-15
*/
void Timer0_init(void)
{
8e: cf 93 push r28
90: df 93 push r29
92: cd b7 in r28, 0x3d ; 61
94: de b7 in r29, 0x3e ; 62
TCNT0 = 0x1A; //set count
96: 8a e1 ldi r24, 0x1A ; 26
98: 80 93 52 00 sts 0x0052, r24
OCR0 = 0xE6; //set compare
9c: 86 ee ldi r24, 0xE6 ; 230
9e: 80 93 5c 00 sts 0x005C, r24
TCCR0|= ((1<<CS02)|(1<<CS00)); //1024预分频 0x05
a2: 80 91 53 00 lds r24, 0x0053
a6: 85 60 ori r24, 0x05 ; 5
a8: 80 93 53 00 sts 0x0053, r24
TIMSK|= (1<<TOIE0); //允许TC0溢出中断
ac: 80 91 59 00 lds r24, 0x0059
b0: 81 60 ori r24, 0x01 ; 1
b2: 80 93 59 00 sts 0x0059, r24
b6: df 91 pop r29
b8: cf 91 pop r28
ba: 08 95 ret
000000bc <__vector_9>:
}
SIGNAL(SIG_OVERFLOW0)
{
bc: 1f 92 push r1
be: 0f 92 push r0
c0: 0f b6 in r0, 0x3f ; 63
c2: 0f 92 push r0
c4: 11 24 eor r1, r1
c6: 2f 93 push r18
c8: 3f 93 push r19
ca: 4f 93 push r20
cc: 5f 93 push r21
ce: 6f 93 push r22
d0: 7f 93 push r23
d2: 8f 93 push r24
d4: 9f 93 push r25
d6: af 93 push r26
d8: bf 93 push r27
da: ef 93 push r30
dc: ff 93 push r31
de: cf 93 push r28
e0: df 93 push r29
e2: cd b7 in r28, 0x3d ; 61
e4: de b7 in r29, 0x3e ; 62
TCNT0 = 0x1A; //set count
e6: 8a e1 ldi r24, 0x1A ; 26
e8: 80 93 52 00 sts 0x0052, r24
key();
ec: 0e 94 1e 01 call 0x23c <key>
f0: df 91 pop r29
f2: cf 91 pop r28
f4: ff 91 pop r31
f6: ef 91 pop r30
f8: bf 91 pop r27
fa: af 91 pop r26
fc: 9f 91 pop r25
fe: 8f 91 pop r24
100: 7f 91 pop r23
102: 6f 91 pop r22
104: 5f 91 pop r21
106: 4f 91 pop r20
108: 3f 91 pop r19
10a: 2f 91 pop r18
10c: 0f 90 pop r0
10e: 0f be out 0x3f, r0 ; 63
110: 0f 90 pop r0
112: 1f 90 pop r1
114: 18 95 reti
00000116 <main>:
}
int main(void)
{
116: c2 e5 ldi r28, 0x52 ; 82
118: d4 e0 ldi r29, 0x04 ; 4
11a: de bf out 0x3e, r29 ; 62
11c: cd bf out 0x3d, r28 ; 61
key_init();
11e: 0e 94 f2 00 call 0x1e4 <key_init>
Timer0_init();
122: 0e 94 47 00 call 0x8e <Timer0_init>
LCM1602Init();
126: 0e 94 69 01 call 0x2d2 <LCM1602Init>
sei();
12a: 78 94 sei
while(1)
{
unsigned char temp_key1;
temp_key1=key();
12c: 0e 94 1e 01 call 0x23c <key>
130: 89 83 std Y+1, r24 ; 0x01
The maximal possible delay is 262.14 ms / F_CPU in MHz.
*/
void
_delay_ms(double __ms)
{
132: 80 e0 ldi r24, 0x00 ; 0
134: 90 e0 ldi r25, 0x00 ; 0
136: a8 e4 ldi r26, 0x48 ; 72
138: b2 e4 ldi r27, 0x42 ; 66
13a: 8a 83 std Y+2, r24 ; 0x02
13c: 9b 83 std Y+3, r25 ; 0x03
13e: ac 83 std Y+4, r26 ; 0x04
140: bd 83 std Y+5, r27 ; 0x05
uint16_t __ticks;
double __tmp = ((F_CPU) / 4e3) * __ms;
142: 26 e6 ldi r18, 0x66 ; 102
144: 36 e6 ldi r19, 0x66 ; 102
146: 46 ee ldi r20, 0xE6 ; 230
148: 54 e4 ldi r21, 0x44 ; 68
14a: 6a 81 ldd r22, Y+2 ; 0x02
14c: 7b 81 ldd r23, Y+3 ; 0x03
14e: 8c 81 ldd r24, Y+4 ; 0x04
150: 9d 81 ldd r25, Y+5 ; 0x05
152: 0e 94 0e 07 call 0xe1c <__mulsf3>
156: dc 01 movw r26, r24
158: cb 01 movw r24, r22
15a: 88 87 std Y+8, r24 ; 0x08
15c: 99 87 std Y+9, r25 ; 0x09
15e: aa 87 std Y+10, r26 ; 0x0a
160: bb 87 std Y+11, r27 ; 0x0b
if (__tmp < 1.0)
162: 20 e0 ldi r18, 0x00 ; 0
164: 30 e0 ldi r19, 0x00 ; 0
166: 40 e8 ldi r20, 0x80 ; 128
168: 5f e3 ldi r21, 0x3F ; 63
16a: 68 85 ldd r22, Y+8 ; 0x08
16c: 79 85 ldd r23, Y+9 ; 0x09
16e: 8a 85 ldd r24, Y+10 ; 0x0a
170: 9b 85 ldd r25, Y+11 ; 0x0b
172: 0e 94 be 06 call 0xd7c <__eqsf2>
176: 88 23 and r24, r24
178: 0c f0 brlt .+2 ; 0x17c <main+0x66>
17a: 05 c0 rjmp .+10 ; 0x186 <main+0x70>
__ticks = 1;
17c: 81 e0 ldi r24, 0x01 ; 1
17e: 90 e0 ldi r25, 0x00 ; 0
180: 9f 83 std Y+7, r25 ; 0x07
182: 8e 83 std Y+6, r24 ; 0x06
184: 1a c0 rjmp .+52 ; 0x1ba <main+0xa4>
else if (__tmp > 65535)
186: 20 e0 ldi r18, 0x00 ; 0
188: 3f ef ldi r19, 0xFF ; 255
18a: 4f e7 ldi r20, 0x7F ; 127
18c: 57 e4 ldi r21, 0x47 ; 71
18e: 68 85 ldd r22, Y+8 ; 0x08
190: 79 85 ldd r23, Y+9 ; 0x09
192: 8a 85 ldd r24, Y+10 ; 0x0a
194: 9b 85 ldd r25, Y+11 ; 0x0b
196: 0e 94 c1 06 call 0xd82 <__gesf2>
19a: 18 16 cp r1, r24
19c: 0c f0 brlt .+2 ; 0x1a0 <main+0x8a>
19e: 03 c0 rjmp .+6 ; 0x1a6 <main+0x90>
__ticks = 0; /* i.e. 65536 */
1a0: 1f 82 std Y+7, r1 ; 0x07
1a2: 1e 82 std Y+6, r1 ; 0x06
1a4: 0a c0 rjmp .+20 ; 0x1ba <main+0xa4>
else
__ticks = (uint16_t)__tmp;
1a6: 68 85 ldd r22, Y+8 ; 0x08
1a8: 79 85 ldd r23, Y+9 ; 0x09
1aa: 8a 85 ldd r24, Y+10 ; 0x0a
1ac: 9b 85 ldd r25, Y+11 ; 0x0b
1ae: 0e 94 a3 06 call 0xd46 <__fixsfsi>
1b2: dc 01 movw r26, r24
1b4: cb 01 movw r24, r22
1b6: 9f 83 std Y+7, r25 ; 0x07
1b8: 8e 83 std Y+6, r24 ; 0x06
1ba: 8e 81 ldd r24, Y+6 ; 0x06
1bc: 9f 81 ldd r25, Y+7 ; 0x07
1be: 9d 87 std Y+13, r25 ; 0x0d
1c0: 8c 87 std Y+12, r24 ; 0x0c
1c2: 8c 85 ldd r24, Y+12 ; 0x0c
1c4: 9d 85 ldd r25, Y+13 ; 0x0d
1c6: 01 97 sbiw r24, 0x01 ; 1
1c8: f1 f7 brne .-4 ; 0x1c6 <main+0xb0>
1ca: 9d 87 std Y+13, r25 ; 0x0d
1cc: 8c 87 std Y+12, r24 ; 0x0c
_delay_ms(50);
if(temp_key1==key())
1ce: 0e 94 1e 01 call 0x23c <key>
1d2: 98 2f mov r25, r24
1d4: 89 81 ldd r24, Y+1 ; 0x01
1d6: 98 17 cp r25, r24
1d8: 09 f0 breq .+2 ; 0x1dc <main+0xc6>
1da: a8 cf rjmp .-176 ; 0x12c <main+0x16>
{
//LCM1602Write_String(0,0,temp_key1);
LCM1602Write_number(temp_key1);
1dc: 89 81 ldd r24, Y+1 ; 0x01
1de: 0e 94 d2 03 call 0x7a4 <LCM1602Write_number>
1e2: a4 cf rjmp .-184 ; 0x12c <main+0x16>
000001e4 <key_init>:
作者 :ken
日期 :2007-08-15
--------------------------------------------------------------*/
void key_init(void)
{
1e4: cf 93 push r28
1e6: df 93 push r29
1e8: cd b7 in r28, 0x3d ; 61
1ea: de b7 in r29, 0x3e ; 62
key_SEL_DDR|=((1<<key_SELA)|(1<<key_SELB)|(1<<key_SELC)); //设置为输出
1ec: 80 91 3a 00 lds r24, 0x003A
1f0: 80 6e ori r24, 0xE0 ; 224
1f2: 80 93 3a 00 sts 0x003A, r24
key_SEL_PORT&=~(1<<key_SELA);
1f6: 80 91 3b 00 lds r24, 0x003B
1fa: 8f 7d andi r24, 0xDF ; 223
1fc: 80 93 3b 00 sts 0x003B, r24
key_SEL_PORT&=~(1<<key_SELB);
200: 80 91 3b 00 lds r24, 0x003B
204: 8f 7b andi r24, 0xBF ; 191
206: 80 93 3b 00 sts 0x003B, r24
key_SEL_PORT&=~(1<<key_SELC);
20a: 9f e7 ldi r25, 0x7F ; 127
20c: 80 91 3b 00 lds r24, 0x003B
210: 89 23 and r24, r25
212: 80 93 3b 00 sts 0x003B, r24
key_PORT|=((1<<key_KIN0)|(1<<key_KIN1)); //设置内部上拉电阻
216: 80 91 35 00 lds r24, 0x0035
21a: 80 6c ori r24, 0xC0 ; 192
21c: 80 93 35 00 sts 0x0035, r24
key_DDR&=~(1<<key_KIN0); //设置为输入
220: 80 91 34 00 lds r24, 0x0034
224: 8f 7b andi r24, 0xBF ; 191
226: 80 93 34 00 sts 0x0034, r24
key_DDR&=~(1<<key_KIN1);
22a: 9f e7 ldi r25, 0x7F ; 127
22c: 80 91 34 00 lds r24, 0x0034
230: 89 23 and r24, r25
232: 80 93 34 00 sts 0x0034, r24
236: df 91 pop r29
238: cf 91 pop r28
23a: 08 95 ret
0000023c <key>:
}
/*-------------------------------------------------------------------
key :按键扫描函数
输入参数 :无
输出参数 :键码
作者 :ken
日期 :2007-08-15
---------------------------------------------------------------*/
unsigned char key(void)
{
23c: cf 93 push r28
23e: df 93 push r29
240: cd b7 in r28, 0x3d ; 61
242: de b7 in r29, 0x3e ; 62
244: 23 97 sbiw r28, 0x03 ; 3
246: 0f b6 in r0, 0x3f ; 63
248: f8 94 cli
24a: de bf out 0x3e, r29 ; 62
24c: 0f be out 0x3f, r0 ; 63
24e: cd bf out 0x3d, r28 ; 61
unsigned char row; //col表示行,row表示列
for(row=0;row<8;row++)
250: 19 82 std Y+1, r1 ; 0x01
252: 89 81 ldd r24, Y+1 ; 0x01
254: 88 30 cpi r24, 0x08 ; 8
256: 70 f5 brcc .+92 ; 0x2b4 <key+0x78>
{
key_SEL_PORT&=0x1f;
258: 80 91 3b 00 lds r24, 0x003B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -