📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000140a 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000008 00800060 0000140a 0000149e 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000001b 00800068 00800068 000014a6 2**0
ALLOC
3 .noinit 00000000 00800083 00800083 000014a6 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000014a6 2**0
CONTENTS
5 .stab 0000426c 00000000 00000000 000014a8 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000e62 00000000 00000000 00005714 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 17 c0 rjmp .+46 ; 0x30 <__init>
2: 30 c0 rjmp .+96 ; 0x64 <__bad_interrupt>
4: 2f c0 rjmp .+94 ; 0x64 <__bad_interrupt>
6: 2e c0 rjmp .+92 ; 0x64 <__bad_interrupt>
8: 2d c0 rjmp .+90 ; 0x64 <__bad_interrupt>
a: 2c c0 rjmp .+88 ; 0x64 <__bad_interrupt>
c: 2b c0 rjmp .+86 ; 0x64 <__bad_interrupt>
e: 2a c0 rjmp .+84 ; 0x64 <__bad_interrupt>
10: ca c1 rjmp .+916 ; 0x3a6 <__vector_8>
12: af c0 rjmp .+350 ; 0x172 <__vector_9>
14: 27 c0 rjmp .+78 ; 0x64 <__bad_interrupt>
16: 26 c0 rjmp .+76 ; 0x64 <__bad_interrupt>
18: 25 c0 rjmp .+74 ; 0x64 <__bad_interrupt>
1a: 24 c0 rjmp .+72 ; 0x64 <__bad_interrupt>
1c: 23 c0 rjmp .+70 ; 0x64 <__bad_interrupt>
1e: 22 c0 rjmp .+68 ; 0x64 <__bad_interrupt>
20: 21 c0 rjmp .+66 ; 0x64 <__bad_interrupt>
22: 20 c0 rjmp .+64 ; 0x64 <__bad_interrupt>
24: 1f c0 rjmp .+62 ; 0x64 <__bad_interrupt>
00000026 <__ctors_end>:
26: 3f 06 cpc r3, r31
28: 5b 4f sbci r21, 0xFB ; 251
2a: 66 6d ori r22, 0xD6 ; 214
2c: 7d 07 cpc r23, r29
2e: 7f 6f ori r23, 0xFF ; 255
00000030 <__init>:
30: 11 24 eor r1, r1
32: 1f be out 0x3f, r1 ; 63
34: cf e5 ldi r28, 0x5F ; 95
36: d4 e0 ldi r29, 0x04 ; 4
38: de bf out 0x3e, r29 ; 62
3a: cd bf out 0x3d, r28 ; 61
0000003c <__do_copy_data>:
3c: 10 e0 ldi r17, 0x00 ; 0
3e: a0 e6 ldi r26, 0x60 ; 96
40: b0 e0 ldi r27, 0x00 ; 0
42: ea e0 ldi r30, 0x0A ; 10
44: f4 e1 ldi r31, 0x14 ; 20
46: 02 c0 rjmp .+4 ; 0x4c <.do_copy_data_start>
00000048 <.do_copy_data_loop>:
48: 05 90 lpm r0, Z+
4a: 0d 92 st X+, r0
0000004c <.do_copy_data_start>:
4c: a8 36 cpi r26, 0x68 ; 104
4e: b1 07 cpc r27, r17
50: d9 f7 brne .-10 ; 0x48 <.do_copy_data_loop>
00000052 <__do_clear_bss>:
52: 10 e0 ldi r17, 0x00 ; 0
54: a8 e6 ldi r26, 0x68 ; 104
56: b0 e0 ldi r27, 0x00 ; 0
58: 01 c0 rjmp .+2 ; 0x5c <.do_clear_bss_start>
0000005a <.do_clear_bss_loop>:
5a: 1d 92 st X+, r1
0000005c <.do_clear_bss_start>:
5c: a3 38 cpi r26, 0x83 ; 131
5e: b1 07 cpc r27, r17
60: e1 f7 brne .-8 ; 0x5a <.do_clear_bss_loop>
62: 01 c0 rjmp .+2 ; 0x66 <main>
00000064 <__bad_interrupt>:
64: cd cf rjmp .-102 ; 0x0 <__vectors>
00000066 <main>:
#define main_c
#include "main.h"
int main(void)
{
66: cf e5 ldi r28, 0x5F ; 95
68: d4 e0 ldi r29, 0x04 ; 4
6a: de bf out 0x3e, r29 ; 62
6c: cd bf out 0x3d, r28 ; 61
//IO初始化
clr_hc595_ser();
6e: c2 98 cbi 0x18, 2 ; 24
set_hc595_ser_ddr();
70: ba 9a sbi 0x17, 2 ; 23
clr_hc595_srclk();
72: c1 98 cbi 0x18, 1 ; 24
set_hc595_srclk_ddr();
74: b9 9a sbi 0x17, 1 ; 23
clr_hc595_rclk();
76: c0 98 cbi 0x18, 0 ; 24
set_hc595_rclk_ddr();
78: b8 9a sbi 0x17, 0 ; 23
set_buzzer();
7a: ac 9a sbi 0x15, 4 ; 21
set_buzzer_ddr();
7c: a4 9a sbi 0x14, 4 ; 20
clr_ds1302_rst();
7e: a8 98 cbi 0x15, 0 ; 21
set_ds1302_rst_ddr();
80: a0 9a sbi 0x14, 0 ; 20
clr_ds1302_io();
82: a9 98 cbi 0x15, 1 ; 21
clr_ds1302_io_ddr();
84: a1 98 cbi 0x14, 1 ; 20
clr_ds1302_sclk();
86: aa 98 cbi 0x15, 2 ; 21
set_ds1302_sclk_ddr();
88: a2 9a sbi 0x14, 2 ; 20
clr_ds18b20_dq();
8a: ad 98 cbi 0x15, 5 ; 21
set_ds18b20_dq_ddr();
8c: a5 9a sbi 0x14, 5 ; 20
set_key();
8e: 8f ef ldi r24, 0xFF ; 255
90: 82 bb out 0x12, r24 ; 18
clr_key_ddr();
92: 11 ba out 0x11, r1 ; 17
//定时器timer0初始化
TCNT0=t0_tcnt;//定时1ms
94: 87 ef ldi r24, 0xF7 ; 247
96: 82 bf out 0x32, r24 ; 50
TCCR0=(1<<CS02)|(1<<CS00);//1024分频,7372800/1024=7200
98: 25 e0 ldi r18, 0x05 ; 5
9a: 23 bf out 0x33, r18 ; 51
TIMSK|=1<<TOIE0;//允许t0溢出中断
9c: 89 b7 in r24, 0x39 ; 57
9e: 81 60 ori r24, 0x01 ; 1
a0: 89 bf out 0x39, r24 ; 57
//定时器timer1初始化
TCNT1=t1_tcnt;//定时500ms
a2: 8e ee ldi r24, 0xEE ; 238
a4: 91 ef ldi r25, 0xF1 ; 241
a6: 9d bd out 0x2d, r25 ; 45
a8: 8c bd out 0x2c, r24 ; 44
TCCR1A=0;
aa: 1f bc out 0x2f, r1 ; 47
TCCR1B=(1<<CS12)|(1<<CS10);//1024分频
ac: 2e bd out 0x2e, r18 ; 46
TIMSK|=1<<TOIE1;
ae: 89 b7 in r24, 0x39 ; 57
b0: 84 60 ori r24, 0x04 ; 4
b2: 89 bf out 0x39, r24 ; 57
convert_ds18b20();
b4: 18 d9 rcall .-3536 ; 0xfffff2e6 <__eeprom_end+0xff7ef2e6>
ds1302_read_time();
b6: 31 d1 rcall .+610 ; 0x31a <ds1302_read_time>
Read one byte from EEPROM address \c addr. */
uint8_t
eeprom_read_byte (const uint8_t *addr)
{
b8: a0 e1 ldi r26, 0x10 ; 16
ba: b0 e0 ldi r27, 0x00 ; 0
uint8_t result;
asm volatile
bc: 92 d9 rcall .-3292 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
be: 80 2d mov r24, r0
c0: 80 93 75 00 sts 0x0075, r24
c4: a1 e1 ldi r26, 0x11 ; 17
c6: b0 e0 ldi r27, 0x00 ; 0
c8: 8c d9 rcall .-3304 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
ca: 80 2d mov r24, r0
cc: 80 93 74 00 sts 0x0074, r24
d0: a2 e1 ldi r26, 0x12 ; 18
d2: b0 e0 ldi r27, 0x00 ; 0
d4: 86 d9 rcall .-3316 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
d6: 80 2d mov r24, r0
d8: 80 93 73 00 sts 0x0073, r24
dc: a3 e1 ldi r26, 0x13 ; 19
de: b0 e0 ldi r27, 0x00 ; 0
e0: 80 d9 rcall .-3328 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
e2: 80 2d mov r24, r0
e4: 80 93 72 00 sts 0x0072, r24
e8: a4 e1 ldi r26, 0x14 ; 20
ea: b0 e0 ldi r27, 0x00 ; 0
ec: 7a d9 rcall .-3340 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
ee: 80 2d mov r24, r0
f0: 80 93 71 00 sts 0x0071, r24
f4: a5 e1 ldi r26, 0x15 ; 21
f6: b0 e0 ldi r27, 0x00 ; 0
f8: 74 d9 rcall .-3352 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
fa: 80 2d mov r24, r0
fc: 80 93 70 00 sts 0x0070, r24
100: a6 e1 ldi r26, 0x16 ; 22
102: b0 e0 ldi r27, 0x00 ; 0
104: 6e d9 rcall .-3364 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
106: 80 2d mov r24, r0
108: 80 93 6f 00 sts 0x006F, r24
10c: a7 e1 ldi r26, 0x17 ; 23
10e: b0 e0 ldi r27, 0x00 ; 0
110: 68 d9 rcall .-3376 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
112: 80 2d mov r24, r0
114: 80 93 6e 00 sts 0x006E, r24
118: a8 e1 ldi r26, 0x18 ; 24
11a: b0 e0 ldi r27, 0x00 ; 0
11c: 62 d9 rcall .-3388 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
11e: 80 2d mov r24, r0
120: 80 93 6d 00 sts 0x006D, r24
124: a9 e1 ldi r26, 0x19 ; 25
126: b0 e0 ldi r27, 0x00 ; 0
128: 5c d9 rcall .-3400 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
12a: 80 2d mov r24, r0
12c: 80 93 6c 00 sts 0x006C, r24
130: aa e1 ldi r26, 0x1A ; 26
132: b0 e0 ldi r27, 0x00 ; 0
134: 56 d9 rcall .-3412 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
136: 80 2d mov r24, r0
138: 80 93 6b 00 sts 0x006B, r24
13c: ab e1 ldi r26, 0x1B ; 27
13e: b0 e0 ldi r27, 0x00 ; 0
140: 50 d9 rcall .-3424 ; 0xfffff3e2 <__eeprom_end+0xff7ef3e2>
142: 80 2d mov r24, r0
144: 80 93 6a 00 sts 0x006A, r24
timer0_hour=eeprom_read_byte((uchar *)(timer0_address+0));
timer0_minute=eeprom_read_byte((uchar *)(timer0_address+1));
timer1_hour=eeprom_read_byte((uchar *)(timer1_address+0));
timer1_minute=eeprom_read_byte((uchar *)(timer1_address+1));
timer2_hour=eeprom_read_byte((uchar *)(timer2_address+0));
timer2_minute=eeprom_read_byte((uchar *)(timer2_address+1));
timer3_hour=eeprom_read_byte((uchar *)(timer3_address+0));
timer3_minute=eeprom_read_byte((uchar *)(timer3_address+1));
timer4_hour=eeprom_read_byte((uchar *)(timer4_address+0));
timer4_minute=eeprom_read_byte((uchar *)(timer4_address+1));
timer5_hour=eeprom_read_byte((uchar *)(timer5_address+0));
timer5_minute=eeprom_read_byte((uchar *)(timer5_address+1));
asm("sei");
148: 78 94 sei
while(1)
{
flash_control=0;
14a: 10 92 77 00 sts 0x0077, r1
key_scan();
14e: 7f d3 rcall .+1790 ; 0x84e <key_scan>
if(second_flag)
150: 80 91 82 00 lds r24, 0x0082
154: 88 23 and r24, r24
156: 19 f0 breq .+6 ; 0x15e <main+0xf8>
{
second_flag=0;
158: 10 92 82 00 sts 0x0082, r1
read_temperature();
15c: cf d8 rcall .-3682 ; 0xfffff2fc <__eeprom_end+0xff7ef2fc>
}
if(flag&(1<<hour_flag))
15e: 80 91 78 00 lds r24, 0x0078
162: 80 ff sbrs r24, 0
164: 04 c0 rjmp .+8 ; 0x16e <main+0x108>
{
flag&=~(1<<hour_flag);
166: 8e 7f andi r24, 0xFE ; 254
168: 80 93 78 00 sts 0x0078, r24
ds1302_read_time();
16c: d6 d0 rcall .+428 ; 0x31a <ds1302_read_time>
}
check_timer();
16e: 7e d2 rcall .+1276 ; 0x66c <check_timer>
170: ec cf rjmp .-40 ; 0x14a <main+0xe4>
00000172 <__vector_9>:
e d dp c g s4
msb=p,lsb=a.顺序为pgfedcba
*/
SIGNAL (SIG_OVERFLOW0)
{
172: 1f 92 push r1
174: 0f 92 push r0
176: 0f b6 in r0, 0x3f ; 63
178: 0f 92 push r0
17a: 11 24 eor r1, r1
17c: 2f 93 push r18
17e: 3f 93 push r19
180: 4f 93 push r20
182: 5f 93 push r21
184: 6f 93 push r22
186: 8f 93 push r24
188: 9f 93 push r25
18a: ef 93 push r30
18c: ff 93 push r31
uchar i=0;
18e: 50 e0 ldi r21, 0x00 ; 0
uchar data_seg=display_buffer[display_count];
190: 60 91 79 00 lds r22, 0x0079
194: 26 2f mov r18, r22
196: 33 27 eor r19, r19
198: f9 01 movw r30, r18
19a: e0 5a subi r30, 0xA0 ; 160
19c: ff 4f sbci r31, 0xFF ; 255
19e: e0 81 ld r30, Z
uchar data_bit=~(1<<display_count);
1a0: 81 e0 ldi r24, 0x01 ; 1
1a2: 90 e0 ldi r25, 0x00 ; 0
1a4: 02 c0 rjmp .+4 ; 0x1aa <__vector_9+0x38>
1a6: 88 0f add r24, r24
1a8: 99 1f adc r25, r25
1aa: 2a 95 dec r18
1ac: e2 f7 brpl .-8 ; 0x1a6 <__vector_9+0x34>
1ae: 48 2f mov r20, r24
1b0: 40 95 com r20
if((1<<display_count)==flash_control) data_bit|=flash_var;
1b2: 20 91 77 00 lds r18, 0x0077
1b6: 33 27 eor r19, r19
1b8: 82 17 cp r24, r18
1ba: 93 07 cpc r25, r19
1bc: 19 f4 brne .+6 ; 0x1c4 <__vector_9+0x52>
1be: 80 91 76 00 lds r24, 0x0076
1c2: 48 2b or r20, r24
display_count++;
1c4: 86 2f mov r24, r22
1c6: 8f 5f subi r24, 0xFF ; 255
1c8: 80 93 79 00 sts 0x0079, r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -