📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000010de 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000001e 00800060 000010de 00001172 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000001a 0080007e 0080007e 00001190 2**0
ALLOC
3 .noinit 00000000 00800098 00800098 00001190 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00001190 2**0
CONTENTS
5 .stab 00000db0 00000000 00000000 00001190 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000901 00000000 00000000 00001f40 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 83 c0 rjmp .+262 ; 0x108
2: 9c c0 rjmp .+312 ; 0x13c
4: 9b c0 rjmp .+310 ; 0x13c
6: 9a c0 rjmp .+308 ; 0x13c
8: 99 c0 rjmp .+306 ; 0x13c
a: 98 c0 rjmp .+304 ; 0x13c
c: 97 c0 rjmp .+302 ; 0x13c
e: 96 c0 rjmp .+300 ; 0x13c
10: 95 c0 rjmp .+298 ; 0x13c
12: 94 c0 rjmp .+296 ; 0x13c
14: 93 c0 rjmp .+294 ; 0x13c
16: 92 c0 rjmp .+292 ; 0x13c
18: 91 c0 rjmp .+290 ; 0x13c
1a: 90 c0 rjmp .+288 ; 0x13c
1c: 8f c0 rjmp .+286 ; 0x13c
1e: 8e c0 rjmp .+284 ; 0x13c
20: 8d c0 rjmp .+282 ; 0x13c
22: 8c c0 rjmp .+280 ; 0x13c
24: 8b c0 rjmp .+278 ; 0x13c
00000026 <__ctors_end>:
26: ca e4 ldi r28, 0x4A ; 74
28: c8 eb ldi r28, 0xB8 ; 184
2a: c3 fc sbrc r12, 3
2c: c1 ee ldi r28, 0xE1 ; 225
2e: a3 ba out 0x13, r10 ; 19
30: 67 20 and r6, r7
32: 2d 20 and r2, r13
34: b4 f2 brlt .-84 ; 0xffffffe2
36: d3 a1 ldd r29, Z+35 ; 0x23
38: c8 d5 rcall .+2960 ; 0xbca
3a: c0 fa bst r12, 0
3c: 2f ca rjmp .-2978 ; 0xfffff49c
3e: b1 d6 rcall .+3426 ; 0xda2
40: d3 a3 std Z+35, r29 ; 0x23
42: ac 73 andi r26, 0x3C ; 60
44: 20 2d mov r18, r0
46: 20 c9 rjmp .-3520 ; 0xfffff288
48: e8 d6 rcall .+3536 ; 0xe1a
4a: c3 c8 rjmp .-3706 ; 0xfffff1d2
4c: d5 c0 rjmp .+426 ; 0x1f8
4e: fa 2f mov r31, r26
50: ca b1 in r28, 0x0a ; 10
52: d6 d3 rcall .+1964 ; 0x800
54: a3 ac ldd r10, Z+59 ; 0x3b
56: 68 20 and r6, r8
58: 2d 20 and r2, r13
5a: b0 ef ldi r27, 0xF0 ; 240
5c: d6 fa bst r13, 6
5e: d0 c5 rjmp .+2976 ; 0xc00
60: cf a2 std Y+39, r12 ; 0x27
62: 0a 00 .word 0x000a ; ????
00000064 <__c.1>:
64: b5 b1 c7 b0 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ba 25 ......../......%
74: 64 c4 ea 25 64 d4 c2 25 64 c8 d5 20 d0 c7 c6 da d..%d..%d.. ....
84: 25 64 20 20 25 64 3a 25 64 3a 25 64 0a 00 %d %d:%d:%d..
00000092 <__c.2>:
92: c7 eb b0 b4 20 3c c4 ea 20 d4 c2 20 c8 d5 20 d0 .... <.. .. .. .
a2: c7 c6 da 20 d0 a1 ca b1 20 b7 d6 20 c3 eb 3e 20 ... .... .. ..>
b2: b8 f1 ca bd ca e4 c8 eb a3 ba 0a 00 ............
000000be <__c.3>:
be: 0a c9 e8 d6 c3 cd ea b3 c9 21 0a 00 .........!..
000000ca <__c.4>:
ca: ca e4 c8 eb c3 fc c1 ee a3 ba 67 20 2d 20 b4 f2 ..........g - ..
da: d3 a1 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ac 73 20 2d ....../......s -
ea: 20 c9 e8 d6 c3 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ac ......../......
fa: 68 20 2d 20 b0 ef d6 fa d0 c5 cf a2 0a 00 h - ..........
00000108 <__init>:
108: 11 24 eor r1, r1
10a: 1f be out 0x3f, r1 ; 63
10c: cf e5 ldi r28, 0x5F ; 95
10e: d4 e0 ldi r29, 0x04 ; 4
110: de bf out 0x3e, r29 ; 62
112: cd bf out 0x3d, r28 ; 61
00000114 <__do_copy_data>:
114: 10 e0 ldi r17, 0x00 ; 0
116: a0 e6 ldi r26, 0x60 ; 96
118: b0 e0 ldi r27, 0x00 ; 0
11a: ee ed ldi r30, 0xDE ; 222
11c: f0 e1 ldi r31, 0x10 ; 16
11e: 02 c0 rjmp .+4 ; 0x124
00000120 <.do_copy_data_loop>:
120: 05 90 lpm r0, Z+
122: 0d 92 st X+, r0
00000124 <.do_copy_data_start>:
124: ae 37 cpi r26, 0x7E ; 126
126: b1 07 cpc r27, r17
128: d9 f7 brne .-10 ; 0x120
0000012a <__do_clear_bss>:
12a: 10 e0 ldi r17, 0x00 ; 0
12c: ae e7 ldi r26, 0x7E ; 126
12e: b0 e0 ldi r27, 0x00 ; 0
130: 01 c0 rjmp .+2 ; 0x134
00000132 <.do_clear_bss_loop>:
132: 1d 92 st X+, r1
00000134 <.do_clear_bss_start>:
134: a8 39 cpi r26, 0x98 ; 152
136: b1 07 cpc r27, r17
138: e1 f7 brne .-8 ; 0x132
13a: 55 c1 rjmp .+682 ; 0x3e6
0000013c <__bad_interrupt>:
13c: 61 cf rjmp .-318 ; 0x0
0000013e <DelayMs>:
uchar g_aTimeBuf[7];//时钟/日历缓冲区
uchar g_aTimeBin[7];//时钟/日历二进制格式缓冲区
void DelayMs(uint ms)
{
13e: ac 01 movw r20, r24
uint i;
for(i=0;i<ms;i++)
140: 20 e0 ldi r18, 0x00 ; 0
142: 30 e0 ldi r19, 0x00 ; 0
144: 28 17 cp r18, r24
146: 39 07 cpc r19, r25
148: 48 f4 brcc .+18 ; 0x15c
/* 16-bit count, 4 cycles/loop */
static inline void
_delay_loop_2(unsigned int __count)
{
14a: 88 ee ldi r24, 0xE8 ; 232
14c: 93 e0 ldi r25, 0x03 ; 3
asm volatile (
14e: 01 97 sbiw r24, 0x01 ; 1
150: f1 f7 brne .-4 ; 0x14e
152: 2f 5f subi r18, 0xFF ; 255
154: 3f 4f sbci r19, 0xFF ; 255
156: 24 17 cp r18, r20
158: 35 07 cpc r19, r21
15a: b8 f3 brcs .-18 ; 0x14a
_delay_loop_2(FREQ *250);
}
15c: 08 95 ret
0000015e <usart_putchar>:
/*******************标准I/O功能****************开始********/
//标准I/O输出函数
int usart_putchar(char c)
{
15e: cf 93 push r28
160: c8 2f mov r28, r24
if(c=='\n')
162: 8a 30 cpi r24, 0x0A ; 10
164: 11 f4 brne .+4 ; 0x16a
usart_putchar('\r');
166: 8d e0 ldi r24, 0x0D ; 13
168: fa df rcall .-12 ; 0x15e
loop_until_bit_is_set(UCSRA,UDRE);
16a: 5d 9b sbis 0x0b, 5 ; 11
16c: fe cf rjmp .-4 ; 0x16a
UDR=c;
16e: cc b9 out 0x0c, r28 ; 12
return 0;
}
170: 80 e0 ldi r24, 0x00 ; 0
172: 90 e0 ldi r25, 0x00 ; 0
174: cf 91 pop r28
176: 08 95 ret
00000178 <usart_getchar>:
//标准I/O输入函数
int usart_getchar(void)
{
loop_until_bit_is_set(UCSRA,RXC);
178: 5f 9b sbis 0x0b, 7 ; 11
17a: fe cf rjmp .-4 ; 0x178
return UDR;
17c: 8c b1 in r24, 0x0c ; 12
17e: 99 27 eor r25, r25
}
180: 08 95 ret
00000182 <IoInit>:
//初始化
void IoInit(void)
{
//串行口初始化
UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
182: 88 e1 ldi r24, 0x18 ; 24
184: 8a b9 out 0x0a, r24 ; 10
UBRRL=25; //9600 baud 6MHz:38 4MHz:25
186: 89 e1 ldi r24, 0x19 ; 25
188: 89 b9 out 0x09, r24 ; 9
//UART用于标准I/O输入输出
g_hFile=fdevopen(usart_putchar,usart_getchar,0);
18a: 40 e0 ldi r20, 0x00 ; 0
18c: 50 e0 ldi r21, 0x00 ; 0
18e: 6c eb ldi r22, 0xBC ; 188
190: 70 e0 ldi r23, 0x00 ; 0
192: 8f ea ldi r24, 0xAF ; 175
194: 90 e0 ldi r25, 0x00 ; 0
196: e6 d4 rcall .+2508 ; 0xb64
198: 90 93 91 00 sts 0x0091, r25
19c: 80 93 90 00 sts 0x0090, r24
}
1a0: 08 95 ret
000001a2 <twi_stop>:
/*******************标准I/O功能**************结束**********/
/*************主模式TWI操作部分*************开始**************/
//总线上起动停止条件
void twi_stop(void)
{
TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);
1a2: 84 e9 ldi r24, 0x94 ; 148
1a4: 86 bf out 0x36, r24 ; 54
}
1a6: 08 95 ret
000001a8 <twi_start>:
//总线上起动开始条件
uchar twi_start(void)
{
TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);
1a8: 84 ea ldi r24, 0xA4 ; 164
1aa: 86 bf out 0x36, r24 ; 54
while ((TWCR & _BV(TWINT)) == 0) ;
1ac: 06 b6 in r0, 0x36 ; 54
1ae: 07 fe sbrs r0, 7
1b0: fd cf rjmp .-6 ; 0x1ac
return TW_STATUS;
1b2: 81 b1 in r24, 0x01 ; 1
1b4: 99 27 eor r25, r25
1b6: 88 7f andi r24, 0xF8 ; 248
1b8: 90 70 andi r25, 0x00 ; 0
}
1ba: 08 95 ret
000001bc <twi_writebyte>:
//写一字节
uchar twi_writebyte(uchar c)
{
TWDR = c;
1bc: 83 b9 out 0x03, r24 ; 3
TWCR = _BV(TWINT) | _BV(TWEN);
1be: 84 e8 ldi r24, 0x84 ; 132
1c0: 86 bf out 0x36, r24 ; 54
while ((TWCR & _BV(TWINT)) == 0);
1c2: 06 b6 in r0, 0x36 ; 54
1c4: 07 fe sbrs r0, 7
1c6: fd cf rjmp .-6 ; 0x1c2
return TW_STATUS;
1c8: 81 b1 in r24, 0x01 ; 1
1ca: 99 27 eor r25, r25
1cc: 88 7f andi r24, 0xF8 ; 248
1ce: 90 70 andi r25, 0x00 ; 0
}
1d0: 08 95 ret
000001d2 <twi_readbyte>:
//读一字节 ack: true时发ACK,false时发NACK
uchar twi_readbyte(uchar *c ,uchar ack)
{
1d2: fc 01 movw r30, r24
uchar tmp=_BV(TWINT)|_BV(TWEN);
1d4: 94 e8 ldi r25, 0x84 ; 132
if(ack)
1d6: 61 11 cpse r22, r1
tmp|=_BV(TWEA);
1d8: 94 ec ldi r25, 0xC4 ; 196
TWCR=tmp;
1da: 96 bf out 0x36, r25 ; 54
while ((TWCR & _BV(TWINT)) == 0) ;
1dc: 06 b6 in r0, 0x36 ; 54
1de: 07 fe sbrs r0, 7
1e0: fd cf rjmp .-6 ; 0x1dc
*c=TWDR;
1e2: 83 b1 in r24, 0x03 ; 3
1e4: 80 83 st Z, r24
return TW_STATUS;
1e6: 81 b1 in r24, 0x01 ; 1
1e8: 99 27 eor r25, r25
1ea: 88 7f andi r24, 0xF8 ; 248
1ec: 90 70 andi r25, 0x00 ; 0
}
1ee: 08 95 ret
000001f0 <rtc_write>:
/*************主模式TWI操作部分*************结束**************/
/*************DS1307操作**************开始**************/
//对DS1307内存连续的写操作
uchar rtc_write(uchar addr,uchar *buf,uchar len)
{
1f0: 0f 93 push r16
1f2: 1f 93 push r17
1f4: cf 93 push r28
1f6: df 93 push r29
1f8: 18 2f mov r17, r24
1fa: eb 01 movw r28, r22
1fc: 04 2f mov r16, r20
uchar i;
twi_start();
1fe: d4 df rcall .-88 ; 0x1a8
twi_writebyte(DS1307_ADDR|TW_WRITE);
200: 80 ed ldi r24, 0xD0 ; 208
202: dc df rcall .-72 ; 0x1bc
twi_writebyte(addr);//write address
204: 81 2f mov r24, r17
206: da df rcall .-76 ; 0x1bc
for(i=0;i<len;i++)
208: 10 e0 ldi r17, 0x00 ; 0
20a: 10 17 cp r17, r16
20c: 40 f4 brcc .+16 ; 0x21e
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -