📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001aba 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000008 00800060 00001aba 00001b4e 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000001b 00800068 00800068 00001b56 2**0
ALLOC
3 .noinit 00000000 00800083 00800083 00001b56 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00001b56 2**0
CONTENTS
5 .stab 000036b4 00000000 00000000 00001b58 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000c3d 00000000 00000000 0000520c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 17 c0 rjmp .+46 ; 0x30
2: 30 c0 rjmp .+96 ; 0x64
4: 2f c0 rjmp .+94 ; 0x64
6: 2e c0 rjmp .+92 ; 0x64
8: 2d c0 rjmp .+90 ; 0x64
a: 2c c0 rjmp .+88 ; 0x64
c: 2b c0 rjmp .+86 ; 0x64
e: 2a c0 rjmp .+84 ; 0x64
10: bf c1 rjmp .+894 ; 0x390
12: a3 c0 rjmp .+326 ; 0x15a
14: 27 c0 rjmp .+78 ; 0x64
16: 26 c0 rjmp .+76 ; 0x64
18: 25 c0 rjmp .+74 ; 0x64
1a: 24 c0 rjmp .+72 ; 0x64
1c: 23 c0 rjmp .+70 ; 0x64
1e: 22 c0 rjmp .+68 ; 0x64
20: 21 c0 rjmp .+66 ; 0x64
22: 20 c0 rjmp .+64 ; 0x64
24: 1f c0 rjmp .+62 ; 0x64
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 eb ldi r30, 0xBA ; 186
44: fa e1 ldi r31, 0x1A ; 26
46: 02 c0 rjmp .+4 ; 0x4c
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
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
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
62: 01 c0 rjmp .+2 ; 0x66
00000064 <__bad_interrupt>:
64: cd cf rjmp .-102 ; 0x0
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: 71 dc rcall .-1822 ; 0xfffff998
ds1302_read_time();
b6: 26 d1 rcall .+588 ; 0x304
timer0_hour=eeprom_read_byte((uchar *)(timer0_address+0));
b8: 80 e1 ldi r24, 0x10 ; 16
ba: 90 e0 ldi r25, 0x00 ; 0
bc: df dc rcall .-1602 ; 0xfffffa7c
be: 80 93 75 00 sts 0x0075, r24
timer0_minute=eeprom_read_byte((uchar *)(timer0_address+1));
c2: 81 e1 ldi r24, 0x11 ; 17
c4: 90 e0 ldi r25, 0x00 ; 0
c6: da dc rcall .-1612 ; 0xfffffa7c
c8: 80 93 74 00 sts 0x0074, r24
timer1_hour=eeprom_read_byte((uchar *)(timer1_address+0));
cc: 82 e1 ldi r24, 0x12 ; 18
ce: 90 e0 ldi r25, 0x00 ; 0
d0: d5 dc rcall .-1622 ; 0xfffffa7c
d2: 80 93 73 00 sts 0x0073, r24
timer1_minute=eeprom_read_byte((uchar *)(timer1_address+1));
d6: 83 e1 ldi r24, 0x13 ; 19
d8: 90 e0 ldi r25, 0x00 ; 0
da: d0 dc rcall .-1632 ; 0xfffffa7c
dc: 80 93 72 00 sts 0x0072, r24
timer2_hour=eeprom_read_byte((uchar *)(timer2_address+0));
e0: 84 e1 ldi r24, 0x14 ; 20
e2: 90 e0 ldi r25, 0x00 ; 0
e4: cb dc rcall .-1642 ; 0xfffffa7c
e6: 80 93 71 00 sts 0x0071, r24
timer2_minute=eeprom_read_byte((uchar *)(timer2_address+1));
ea: 85 e1 ldi r24, 0x15 ; 21
ec: 90 e0 ldi r25, 0x00 ; 0
ee: c6 dc rcall .-1652 ; 0xfffffa7c
f0: 80 93 70 00 sts 0x0070, r24
timer3_hour=eeprom_read_byte((uchar *)(timer3_address+0));
f4: 86 e1 ldi r24, 0x16 ; 22
f6: 90 e0 ldi r25, 0x00 ; 0
f8: c1 dc rcall .-1662 ; 0xfffffa7c
fa: 80 93 6f 00 sts 0x006F, r24
timer3_minute=eeprom_read_byte((uchar *)(timer3_address+1));
fe: 87 e1 ldi r24, 0x17 ; 23
100: 90 e0 ldi r25, 0x00 ; 0
102: bc dc rcall .-1672 ; 0xfffffa7c
104: 80 93 6e 00 sts 0x006E, r24
timer4_hour=eeprom_read_byte((uchar *)(timer4_address+0));
108: 88 e1 ldi r24, 0x18 ; 24
10a: 90 e0 ldi r25, 0x00 ; 0
10c: b7 dc rcall .-1682 ; 0xfffffa7c
10e: 80 93 6d 00 sts 0x006D, r24
timer4_minute=eeprom_read_byte((uchar *)(timer4_address+1));
112: 89 e1 ldi r24, 0x19 ; 25
114: 90 e0 ldi r25, 0x00 ; 0
116: b2 dc rcall .-1692 ; 0xfffffa7c
118: 80 93 6c 00 sts 0x006C, r24
timer5_hour=eeprom_read_byte((uchar *)(timer5_address+0));
11c: 8a e1 ldi r24, 0x1A ; 26
11e: 90 e0 ldi r25, 0x00 ; 0
120: ad dc rcall .-1702 ; 0xfffffa7c
122: 80 93 6b 00 sts 0x006B, r24
timer5_minute=eeprom_read_byte((uchar *)(timer5_address+1));
126: 8b e1 ldi r24, 0x1B ; 27
128: 90 e0 ldi r25, 0x00 ; 0
12a: a8 dc rcall .-1712 ; 0xfffffa7c
12c: 80 93 6a 00 sts 0x006A, r24
asm("sei");
130: 78 94 sei
while(1)
{
flash_control=0;
132: 10 92 77 00 sts 0x0077, r1
key_scan();
136: 81 d3 rcall .+1794 ; 0x83a
if(second_flag)
138: 80 91 82 00 lds r24, 0x0082
13c: 88 23 and r24, r24
13e: 19 f0 breq .+6 ; 0x146
{
second_flag=0;
140: 10 92 82 00 sts 0x0082, r1
read_temperature();
144: 34 dc rcall .-1944 ; 0xfffff9ae
}
if(flag&(1<<hour_flag))
146: 80 91 78 00 lds r24, 0x0078
14a: 80 ff sbrs r24, 0
14c: 04 c0 rjmp .+8 ; 0x156
{
flag&=~(1<<hour_flag);
14e: 8e 7f andi r24, 0xFE ; 254
150: 80 93 78 00 sts 0x0078, r24
ds1302_read_time();
154: d7 d0 rcall .+430 ; 0x304
}
check_timer();
156: 7f d2 rcall .+1278 ; 0x656
158: ec cf rjmp .-40 ; 0x132
0000015a <__vector_9>:
e d dp c g s4
msb=p,lsb=a.顺序为pgfedcba
*/
SIGNAL (SIG_OVERFLOW0)
{
15a: 1f 92 push r1
15c: 0f 92 push r0
15e: 0f b6 in r0, 0x3f ; 63
160: 0f 92 push r0
162: 11 24 eor r1, r1
164: 2f 93 push r18
166: 3f 93 push r19
168: 4f 93 push r20
16a: 5f 93 push r21
16c: 6f 93 push r22
16e: 8f 93 push r24
170: 9f 93 push r25
172: ef 93 push r30
174: ff 93 push r31
uchar i=0;
176: 50 e0 ldi r21, 0x00 ; 0
uchar data_seg=display_buffer[display_count];
178: 60 91 79 00 lds r22, 0x0079
17c: 26 2f mov r18, r22
17e: 33 27 eor r19, r19
180: f9 01 movw r30, r18
182: e0 5a subi r30, 0xA0 ; 160
184: ff 4f sbci r31, 0xFF ; 255
186: e0 81 ld r30, Z
uchar data_bit=~(1<<display_count);
188: 81 e0 ldi r24, 0x01 ; 1
18a: 90 e0 ldi r25, 0x00 ; 0
18c: 02 c0 rjmp .+4 ; 0x192
18e: 88 0f add r24, r24
190: 99 1f adc r25, r25
192: 2a 95 dec r18
194: e2 f7 brpl .-8 ; 0x18e
196: 48 2f mov r20, r24
198: 40 95 com r20
if((1<<display_count)==flash_control) data_bit|=flash_var;
19a: 20 91 77 00 lds r18, 0x0077
19e: 33 27 eor r19, r19
1a0: 82 17 cp r24, r18
1a2: 93 07 cpc r25, r19
1a4: 19 f4 brne .+6 ; 0x1ac
1a6: 80 91 76 00 lds r24, 0x0076
1aa: 48 2b or r20, r24
display_count++;
1ac: 86 2f mov r24, r22
1ae: 8f 5f subi r24, 0xFF ; 255
1b0: 80 93 79 00 sts 0x0079, r24
if(8==display_count) display_count=0;
1b4: 88 30 cpi r24, 0x08 ; 8
1b6: 11 f4 brne .+4 ; 0x1bc
1b8: 50 93 79 00 sts 0x0079, r21
//送位选
for(i=0;i<8;i++)
{
if(data_bit&0x80) set_hc595_ser();
1bc: 47 ff sbrs r20, 7
1be: 02 c0 rjmp .+4 ; 0x1c4
1c0: c2 9a sbi 0x18, 2 ; 24
1c2: 01 c0 rjmp .+2 ; 0x1c6
else clr_hc595_ser();
1c4: c2 98 cbi 0x18, 2 ; 24
clr_hc595_srclk();
1c6: c1 98 cbi 0x18, 1 ; 24
set_hc595_srclk();
1c8: c1 9a sbi 0x18, 1 ; 24
data_bit<<=1;
1ca: 44 0f add r20, r20
1cc: 5f 5f subi r21, 0xFF ; 255
1ce: 58 30 cpi r21, 0x08 ; 8
1d0: a8 f3 brcs .-22 ; 0x1bc
1d2: 57 e0 ldi r21, 0x07 ; 7
}
//送段码
for(i=0;i<8;i++)
{
if(data_seg&0x80) set_hc595_ser();
1d4: e7 ff sbrs r30, 7
1d6: 02 c0 rjmp .+4 ; 0x1dc
1d8: c2 9a sbi 0x18, 2 ; 24
1da: 01 c0 rjmp .+2 ; 0x1de
else clr_hc595_ser();
1dc: c2 98 cbi 0x18, 2 ; 24
clr_hc595_srclk();
1de: c1 98 cbi 0x18, 1 ; 24
set_hc595_srclk();
1e0: c1 9a sbi 0x18, 1 ; 24
data_seg<<=1;
1e2: ee 0f add r30, r30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -