📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000082e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000010 00800060 0000082e 000008c2 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000013 00800070 00800070 000008d2 2**0
ALLOC
3 .noinit 00000000 00800083 00800083 000008d2 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000008d2 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000008d2 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 000000fb 00000000 00000000 000008e6 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000359 00000000 00000000 000009e1 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 0000013a 00000000 00000000 00000d3a 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000568 00000000 00000000 00000e74 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 0000014b 00000000 00000000 000013dc 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26
2: 2b c0 rjmp .+86 ; 0x5a
4: c5 c1 rjmp .+906 ; 0x390
6: 29 c0 rjmp .+82 ; 0x5a
8: 28 c0 rjmp .+80 ; 0x5a
a: 27 c0 rjmp .+78 ; 0x5a
c: 26 c0 rjmp .+76 ; 0x5a
e: 25 c0 rjmp .+74 ; 0x5a
10: 24 c0 rjmp .+72 ; 0x5a
12: 23 c0 rjmp .+70 ; 0x5a
14: 22 c0 rjmp .+68 ; 0x5a
16: 21 c0 rjmp .+66 ; 0x5a
18: 20 c0 rjmp .+64 ; 0x5a
1a: 1f c0 rjmp .+62 ; 0x5a
1c: 1e c0 rjmp .+60 ; 0x5a
1e: 1d c0 rjmp .+58 ; 0x5a
20: 1c c0 rjmp .+56 ; 0x5a
22: 1b c0 rjmp .+54 ; 0x5a
24: 1a c0 rjmp .+52 ; 0x5a
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: ee e2 ldi r30, 0x2E ; 46
3a: f8 e0 ldi r31, 0x08 ; 8
3c: 02 c0 rjmp .+4 ; 0x42
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: a0 37 cpi r26, 0x70 ; 112
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e7 ldi r26, 0x70 ; 112
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: a3 38 cpi r26, 0x83 ; 131
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50
58: 37 c1 rjmp .+622 ; 0x2c8
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0
0000005c <out_byte>:
void out_byte(char addr,char data)//向DS1302写一个数
{
unsigned char i,temp;
DDRD|=(1<<rst);
5c: 88 9a sbi 0x11, 0 ; 17
DDRD|=(1<<clk);
5e: 89 9a sbi 0x11, 1 ; 17
DDRD|=(1<<dat);
60: 8a 9a sbi 0x11, 2 ; 17
PORTD&=~(1<<rst);
62: 90 98 cbi 0x12, 0 ; 18
PORTD&=~(1<<clk);
64: 91 98 cbi 0x12, 1 ; 18
PORTD|=(1<<rst);
66: 90 9a sbi 0x12, 0 ; 18
68: e8 2f mov r30, r24
6a: ff 27 eor r31, r31
6c: 20 e0 ldi r18, 0x00 ; 0
6e: 30 e0 ldi r19, 0x00 ; 0
70: 47 e0 ldi r20, 0x07 ; 7
for (i=0;i<8;i++) //发送读命令
{
temp=addr;
if((temp&(1<<i))!=0)
72: cf 01 movw r24, r30
74: 02 2e mov r0, r18
76: 02 c0 rjmp .+4 ; 0x7c
78: 95 95 asr r25
7a: 87 95 ror r24
7c: 0a 94 dec r0
7e: e2 f7 brpl .-8 ; 0x78
80: 80 ff sbrs r24, 0
82: 02 c0 rjmp .+4 ; 0x88
PORTD|=(1<<dat);
84: 92 9a sbi 0x12, 2 ; 18
86: 01 c0 rjmp .+2 ; 0x8a
else
PORTD&=~(1<<dat);
88: 92 98 cbi 0x12, 2 ; 18
PORTD|=(1<<clk);
8a: 91 9a sbi 0x12, 1 ; 18
PORTD&=~(1<<clk);
8c: 91 98 cbi 0x12, 1 ; 18
8e: 41 50 subi r20, 0x01 ; 1
90: 2f 5f subi r18, 0xFF ; 255
92: 3f 4f sbci r19, 0xFF ; 255
94: 47 ff sbrs r20, 7
96: ed cf rjmp .-38 ; 0x72
98: 77 27 eor r23, r23
9a: 20 e0 ldi r18, 0x00 ; 0
9c: 30 e0 ldi r19, 0x00 ; 0
9e: 47 e0 ldi r20, 0x07 ; 7
}
for (i=0;i<8;i++) //发送数据
{
temp=data;
if((temp&(1<<i))!=0)
a0: cb 01 movw r24, r22
a2: 02 2e mov r0, r18
a4: 02 c0 rjmp .+4 ; 0xaa
a6: 95 95 asr r25
a8: 87 95 ror r24
aa: 0a 94 dec r0
ac: e2 f7 brpl .-8 ; 0xa6
ae: 80 ff sbrs r24, 0
b0: 02 c0 rjmp .+4 ; 0xb6
PORTD|=(1<<dat);
b2: 92 9a sbi 0x12, 2 ; 18
b4: 01 c0 rjmp .+2 ; 0xb8
else
PORTD&=~(1<<dat);
b6: 92 98 cbi 0x12, 2 ; 18
PORTD|=(1<<clk);
b8: 91 9a sbi 0x12, 1 ; 18
PORTD&=~(1<<clk);
ba: 91 98 cbi 0x12, 1 ; 18
bc: 41 50 subi r20, 0x01 ; 1
be: 2f 5f subi r18, 0xFF ; 255
c0: 3f 4f sbci r19, 0xFF ; 255
c2: 47 ff sbrs r20, 7
c4: ed cf rjmp .-38 ; 0xa0
}
PORTD&=~(1<<rst);
c6: 90 98 cbi 0x12, 0 ; 18
c8: 08 95 ret
000000ca <write_ds1302>:
}
void write_ds1302(char addr,char data)//修改DS1302的一个字节
{
ca: 0f 93 push r16
cc: 1f 93 push r17
ce: 08 2f mov r16, r24
d0: 16 2f mov r17, r22
out_byte(0x8e,0x00);
d2: 60 e0 ldi r22, 0x00 ; 0
d4: 8e e8 ldi r24, 0x8E ; 142
d6: c2 df rcall .-124 ; 0x5c
out_byte(addr,data);
d8: 61 2f mov r22, r17
da: 80 2f mov r24, r16
dc: bf df rcall .-130 ; 0x5c
out_byte(0x8f,0x80);
de: 60 e8 ldi r22, 0x80 ; 128
e0: 8f e8 ldi r24, 0x8F ; 143
e2: bc df rcall .-136 ; 0x5c
e4: 1f 91 pop r17
e6: 0f 91 pop r16
e8: 08 95 ret
000000ea <in_byte>:
}
char in_byte(char addr) //从ds1302读入一个字节
{
unsigned char i,temp,temp1;
DDRD|=(1<<rst);
ea: 88 9a sbi 0x11, 0 ; 17
DDRD|=(1<<clk);
ec: 89 9a sbi 0x11, 1 ; 17
DDRD|=(1<<dat);
ee: 8a 9a sbi 0x11, 2 ; 17
PORTD&=~(1<<rst);
f0: 90 98 cbi 0x12, 0 ; 18
PORTD&=~(1<<clk);
f2: 91 98 cbi 0x12, 1 ; 18
PORTD|=(1<<rst);
f4: 90 9a sbi 0x12, 0 ; 18
f6: 68 2f mov r22, r24
f8: 77 27 eor r23, r23
fa: 20 e0 ldi r18, 0x00 ; 0
fc: 30 e0 ldi r19, 0x00 ; 0
fe: 47 e0 ldi r20, 0x07 ; 7
for (i=0;i<8;i++) //发送读命令
{
temp=addr;
if((temp&(1<<i))!=0)
100: cb 01 movw r24, r22
102: 02 2e mov r0, r18
104: 02 c0 rjmp .+4 ; 0x10a
106: 95 95 asr r25
108: 87 95 ror r24
10a: 0a 94 dec r0
10c: e2 f7 brpl .-8 ; 0x106
10e: 80 ff sbrs r24, 0
110: 02 c0 rjmp .+4 ; 0x116
PORTD|=(1<<dat);
112: 92 9a sbi 0x12, 2 ; 18
114: 01 c0 rjmp .+2 ; 0x118
else
PORTD&=~(1<<dat);
116: 92 98 cbi 0x12, 2 ; 18
PORTD|=(1<<clk);
118: 91 9a sbi 0x12, 1 ; 18
PORTD&=~(1<<clk);
11a: 91 98 cbi 0x12, 1 ; 18
11c: 41 50 subi r20, 0x01 ; 1
11e: 2f 5f subi r18, 0xFF ; 255
120: 3f 4f sbci r19, 0xFF ; 255
122: 47 ff sbrs r20, 7
124: ed cf rjmp .-38 ; 0x100
}
DDRD&=~(1<<dat);
126: 8a 98 cbi 0x11, 2 ; 17
temp=0; //准备接收数据
128: 50 e0 ldi r21, 0x00 ; 0
12a: 20 e0 ldi r18, 0x00 ; 0
12c: 30 e0 ldi r19, 0x00 ; 0
12e: 47 e0 ldi r20, 0x07 ; 7
for (i=0;i<8;i++) //接收一个字节数据
{
temp1=PIND;
130: 80 b3 in r24, 0x10 ; 16
PORTD|=(1<<clk);
132: 91 9a sbi 0x12, 1 ; 18
temp1=(temp1>>2)&0x01;
134: 86 95 lsr r24
136: 86 95 lsr r24
138: 81 70 andi r24, 0x01 ; 1
temp|=(temp1<<i);
13a: 99 27 eor r25, r25
13c: 02 2e mov r0, r18
13e: 02 c0 rjmp .+4 ; 0x144
140: 88 0f add r24, r24
142: 99 1f adc r25, r25
144: 0a 94 dec r0
146: e2 f7 brpl .-8 ; 0x140
148: 58 2b or r21, r24
PORTD&=~(1<<clk);
14a: 91 98 cbi 0x12, 1 ; 18
14c: 41 50 subi r20, 0x01 ; 1
14e: 2f 5f subi r18, 0xFF ; 255
150: 3f 4f sbci r19, 0xFF ; 255
152: 47 ff sbrs r20, 7
154: ed cf rjmp .-38 ; 0x130
}
PORTD&=~(1<<rst);
156: 90 98 cbi 0x12, 0 ; 18
return(temp);
}
158: 85 2f mov r24, r21
15a: 99 27 eor r25, r25
15c: 08 95 ret
0000015e <bcd_change>:
void bcd_change(void) //三字节BCD码转换为六位led显示值
{
dsp[0]=led[bcd_dsp[0]>>4];
15e: 90 91 7a 00 lds r25, 0x007A
162: 89 2f mov r24, r25
164: 82 95 swap r24
166: 8f 70 andi r24, 0x0F ; 15
168: 26 e6 ldi r18, 0x66 ; 102
16a: 30 e0 ldi r19, 0x00 ; 0
16c: f9 01 movw r30, r18
16e: e8 0f add r30, r24
170: f1 1d adc r31, r1
172: 80 81 ld r24, Z
174: 80 93 74 00 sts 0x0074, r24
dsp[1]=led[bcd_dsp[0]&0x0f];
178: e9 2f mov r30, r25
17a: ff 27 eor r31, r31
17c: ef 70 andi r30, 0x0F ; 15
17e: f0 70 andi r31, 0x00 ; 0
180: e2 0f add r30, r18
182: f3 1f adc r31, r19
184: 80 81 ld r24, Z
186: 80 93 75 00 sts 0x0075, r24
dsp[2]=led[bcd_dsp[1]>>4];
18a: 90 91 7b 00 lds r25, 0x007B
18e: 89 2f mov r24, r25
190: 82 95 swap r24
192: 8f 70 andi r24, 0x0F ; 15
194: f9 01 movw r30, r18
196: e8 0f add r30, r24
198: f1 1d adc r31, r1
19a: 80 81 ld r24, Z
19c: 80 93 76 00 sts 0x0076, r24
dsp[3]=led[bcd_dsp[1]&0x0f];
1a0: e9 2f mov r30, r25
1a2: ff 27 eor r31, r31
1a4: ef 70 andi r30, 0x0F ; 15
1a6: f0 70 andi r31, 0x00 ; 0
1a8: e2 0f add r30, r18
1aa: f3 1f adc r31, r19
1ac: 80 81 ld r24, Z
1ae: 80 93 77 00 sts 0x0077, r24
dsp[4]=led[bcd_dsp[2]>>4];
1b2: 90 91 7c 00 lds r25, 0x007C
1b6: 89 2f mov r24, r25
1b8: 82 95 swap r24
1ba: 8f 70 andi r24, 0x0F ; 15
1bc: f9 01 movw r30, r18
1be: e8 0f add r30, r24
1c0: f1 1d adc r31, r1
1c2: 80 81 ld r24, Z
1c4: 80 93 78 00 sts 0x0078, r24
dsp[5]=led[bcd_dsp[2]&0x0f];
1c8: e9 2f mov r30, r25
1ca: ff 27 eor r31, r31
1cc: ef 70 andi r30, 0x0F ; 15
1ce: f0 70 andi r31, 0x00 ; 0
1d0: e2 0f add r30, r18
1d2: f3 1f adc r31, r19
1d4: 80 81 ld r24, Z
1d6: 80 93 79 00 sts 0x0079, r24
1da: 08 95 ret
000001dc <reflash>:
}
/*********************刷新数码管*********/
void reflash(void)
{
char i,j,mark;
DDRB=0xff;
1dc: 8f ef ldi r24, 0xFF ; 255
1de: 87 bb out 0x17, r24 ; 23
DDRC=0xff;
1e0: 84 bb out 0x14, r24 ; 20
mark=0;
1e2: 70 e0 ldi r23, 0x00 ; 0
for(i=0;i<=5;i++)
1e4: 97 2f mov r25, r23
1e6: e4 e7 ldi r30, 0x74 ; 116
1e8: f0 e0 ldi r31, 0x00 ; 0
{
if(dsp[i]!=0xc0)
1ea: 81 91 ld r24, Z+
1ec: 80 3c cpi r24, 0xC0 ; 192
1ee: 11 f0 breq .+4 ; 0x1f4
{
mark=i;
1f0: 79 2f mov r23, r25
break;
1f2: 03 c0 rjmp .+6 ; 0x1fa
1f4: 9f 5f subi r25, 0xFF ; 255
1f6: 96 30 cpi r25, 0x06 ; 6
1f8: c0 f3 brcs .-16 ; 0x1ea
}
}
if(i==5)
1fa: 95 30 cpi r25, 0x05 ; 5
1fc: 09 f4 brne .+2 ; 0x200
mark=6;
1fe: 76 e0 ldi r23, 0x06 ; 6
if(dsp_state==0) //修改数据时,在修改的位上显示一个点
200: 80 91 82 00 lds r24, 0x0082
204: 88 23 and r24, r24
206: 99 f4 brne .+38 ; 0x22e
208: e4 e7 ldi r30, 0x74 ; 116
20a: f0 e0 ldi r31, 0x00 ; 0
20c: 95 e0 ldi r25, 0x05 ; 5
{
for(i=0;i<=5;i++)
dsp[i]|=0x80;
20e: 80 81 ld r24, Z
210: 80 68 ori r24, 0x80 ; 128
212: 81 93 st Z+, r24
214: 91 50 subi r25, 0x01 ; 1
216: 97 ff sbrs r25, 7
218: fa cf rjmp .-12 ; 0x20e
dsp[modify_bit]&=0x7f;
21a: 80 91 72 00 lds r24, 0x0072
21e: e8 2f mov r30, r24
220: ff 27 eor r31, r31
222: ec 58 subi r30, 0x8C ; 140
224: ff 4f sbci r31, 0xFF ; 255
226: 80 81 ld r24, Z
228: 8f 77 andi r24, 0x7F ; 127
22a: 80 83 st Z, r24
22c: 2f c0 rjmp .+94 ; 0x28c
}
if(dsp_state==1) //显示时间时,在时分秒之间显示一个闪烁的点
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -