📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000003a 00800100 00000dc4 00000e58 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000dc4 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000071 0080013a 0080013a 00000e92 2**0
ALLOC
3 .noinit 00000000 008001ab 008001ab 00000e92 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000e92 2**0
CONTENTS
5 .stab 00000f84 00000000 00000000 00000e94 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 0000093b 00000000 00000000 00001e18 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 38 00 jmp 0x70
4: 0c 94 53 00 jmp 0xa6
8: 0c 94 53 00 jmp 0xa6
c: 0c 94 53 00 jmp 0xa6
10: 0c 94 53 00 jmp 0xa6
14: 0c 94 53 00 jmp 0xa6
18: 0c 94 53 00 jmp 0xa6
1c: 0c 94 53 00 jmp 0xa6
20: 0c 94 53 00 jmp 0xa6
24: 0c 94 53 00 jmp 0xa6
28: 0c 94 53 00 jmp 0xa6
2c: 0c 94 53 00 jmp 0xa6
30: 0c 94 53 00 jmp 0xa6
34: 0c 94 53 00 jmp 0xa6
38: 0c 94 53 00 jmp 0xa6
3c: 0c 94 53 00 jmp 0xa6
40: 0c 94 53 00 jmp 0xa6
44: 0c 94 53 00 jmp 0xa6
48: 0c 94 53 00 jmp 0xa6
4c: 0c 94 53 00 jmp 0xa6
50: 0c 94 53 00 jmp 0xa6
54: 0c 94 53 00 jmp 0xa6
58: 0c 94 53 00 jmp 0xa6
5c: 0c 94 e4 01 jmp 0x3c8
60: 0c 94 53 00 jmp 0xa6
64: 0c 94 53 00 jmp 0xa6
68: 0c 94 53 00 jmp 0xa6
6c: 0c 94 53 00 jmp 0xa6
00000070 <__ctors_end>:
70: 11 24 eor r1, r1
72: 1f be out 0x3f, r1 ; 63
74: cf ef ldi r28, 0xFF ; 255
76: d4 e0 ldi r29, 0x04 ; 4
78: de bf out 0x3e, r29 ; 62
7a: cd bf out 0x3d, r28 ; 61
0000007c <__do_copy_data>:
7c: 11 e0 ldi r17, 0x01 ; 1
7e: a0 e0 ldi r26, 0x00 ; 0
80: b1 e0 ldi r27, 0x01 ; 1
82: e4 ec ldi r30, 0xC4 ; 196
84: fd e0 ldi r31, 0x0D ; 13
86: 02 c0 rjmp .+4 ; 0x8c
00000088 <.do_copy_data_loop>:
88: 05 90 lpm r0, Z+
8a: 0d 92 st X+, r0
0000008c <.do_copy_data_start>:
8c: aa 33 cpi r26, 0x3A ; 58
8e: b1 07 cpc r27, r17
90: d9 f7 brne .-10 ; 0x88
00000092 <__do_clear_bss>:
92: 11 e0 ldi r17, 0x01 ; 1
94: aa e3 ldi r26, 0x3A ; 58
96: b1 e0 ldi r27, 0x01 ; 1
98: 01 c0 rjmp .+2 ; 0x9c
0000009a <.do_clear_bss_loop>:
9a: 1d 92 st X+, r1
0000009c <.do_clear_bss_start>:
9c: ab 3a cpi r26, 0xAB ; 171
9e: b1 07 cpc r27, r17
a0: e1 f7 brne .-8 ; 0x9a
a2: 0c 94 55 00 jmp 0xaa
000000a6 <__bad_interrupt>:
a6: 0c 94 00 00 jmp 0x0
000000aa <main>:
#include "uart.h"
#include "ds1302.h"
int main(void)
{
aa: c8 ef ldi r28, 0xF8 ; 248
ac: d4 e0 ldi r29, 0x04 ; 4
ae: de bf out 0x3e, r29 ; 62
b0: cd bf out 0x3d, r28 ; 61
unsigned int i;
unsigned char year, month, day, week;
unsigned char hour, min, sec;
InitIO();
b2: 0e 94 2e 02 call 0x45c
DS1302_Init();
b6: 0e 94 e4 00 call 0x1c8
sei();
ba: 78 94 sei
while(1)
{
//DS1302_Set_Date(5, 1, 6, 4);
DS1302_Get_Date(&year, &month, &day, &week);
bc: 9e 01 movw r18, r28
be: 2f 5f subi r18, 0xFF ; 255
c0: 3f 4f sbci r19, 0xFF ; 255
c2: ae 01 movw r20, r28
c4: 4e 5f subi r20, 0xFE ; 254
c6: 5f 4f sbci r21, 0xFF ; 255
c8: be 01 movw r22, r28
ca: 6d 5f subi r22, 0xFD ; 253
cc: 7f 4f sbci r23, 0xFF ; 255
ce: ce 01 movw r24, r28
d0: 04 96 adiw r24, 0x04 ; 4
d2: 0e 94 7a 01 call 0x2f4
DS1302_Get_Time(&hour, &min, &sec);
d6: ae 01 movw r20, r28
d8: 4b 5f subi r20, 0xFB ; 251
da: 5f 4f sbci r21, 0xFF ; 255
dc: be 01 movw r22, r28
de: 6a 5f subi r22, 0xFA ; 250
e0: 7f 4f sbci r23, 0xFF ; 255
e2: ce 01 movw r24, r28
e4: 07 96 adiw r24, 0x07 ; 7
e6: 0e 94 2a 01 call 0x254
printf("Date: %d-%02d-%02d Week: %d Time: %02d:%02d:%02d\r\n", 2000 + year, month, day, week, hour, min, sec);
ea: 8d 81 ldd r24, Y+5 ; 0x05
ec: 99 27 eor r25, r25
ee: 9f 93 push r25
f0: 8f 93 push r24
f2: 8e 81 ldd r24, Y+6 ; 0x06
f4: 99 27 eor r25, r25
f6: 9f 93 push r25
f8: 8f 93 push r24
fa: 8f 81 ldd r24, Y+7 ; 0x07
fc: 99 27 eor r25, r25
fe: 9f 93 push r25
100: 8f 93 push r24
102: 89 81 ldd r24, Y+1 ; 0x01
104: 99 27 eor r25, r25
106: 9f 93 push r25
108: 8f 93 push r24
10a: 8a 81 ldd r24, Y+2 ; 0x02
10c: 99 27 eor r25, r25
10e: 9f 93 push r25
110: 8f 93 push r24
112: 8b 81 ldd r24, Y+3 ; 0x03
114: 99 27 eor r25, r25
116: 9f 93 push r25
118: 8f 93 push r24
11a: 8c 81 ldd r24, Y+4 ; 0x04
11c: 99 27 eor r25, r25
11e: 80 53 subi r24, 0x30 ; 48
120: 98 4f sbci r25, 0xF8 ; 248
122: 9f 93 push r25
124: 8f 93 push r24
126: 80 e0 ldi r24, 0x00 ; 0
128: 91 e0 ldi r25, 0x01 ; 1
12a: 9f 93 push r25
12c: 8f 93 push r24
12e: 0e 94 8a 02 call 0x514
//printf("%d-%02d-%02d %d %02d:%02d:%02d\r\n", 2000 + year, month, day, week, hour, min, sec);
for(i = 0; i < 5000; i++)
132: 8d b7 in r24, 0x3d ; 61
134: 9e b7 in r25, 0x3e ; 62
136: 40 96 adiw r24, 0x10 ; 16
138: 0f b6 in r0, 0x3f ; 63
13a: f8 94 cli
13c: 9e bf out 0x3e, r25 ; 62
13e: 0f be out 0x3f, r0 ; 63
140: 8d bf out 0x3d, r24 ; 61
142: 27 e8 ldi r18, 0x87 ; 135
144: 33 e1 ldi r19, 0x13 ; 19
/* 8-bit count, 3 cycles/loop */
static __inline__ void
_delay_loop_1(uint8_t __count)
{
146: 8f ef ldi r24, 0xFF ; 255
asm volatile (
148: 8a 95 dec r24
14a: f1 f7 brne .-4 ; 0x148
14c: 21 50 subi r18, 0x01 ; 1
14e: 30 40 sbci r19, 0x00 ; 0
150: 37 ff sbrs r19, 7
152: f9 cf rjmp .-14 ; 0x146
154: b3 cf rjmp .-154 ; 0xbc
00000156 <bcd2bin>:
};
#endif
unsigned char bcd2bin(unsigned char n)
{
156: 48 2f mov r20, r24
#ifdef BCD_USE_TABLE
return pgm_read_byte(bcd2bin_data + n);
#else
unsigned char x = (n & 0xF0) >> 4;
158: 28 2f mov r18, r24
15a: 33 27 eor r19, r19
15c: c9 01 movw r24, r18
15e: 64 e0 ldi r22, 0x04 ; 4
160: 96 95 lsr r25
162: 87 95 ror r24
164: 6a 95 dec r22
166: e1 f7 brne .-8 ; 0x160
if (x > 9 || (n & 0x0F) > 9)
168: 8a 30 cpi r24, 0x0A ; 10
16a: 28 f4 brcc .+10 ; 0x176
16c: 2f 70 andi r18, 0x0F ; 15
16e: 30 70 andi r19, 0x00 ; 0
170: 2a 30 cpi r18, 0x0A ; 10
172: 31 05 cpc r19, r1
174: 1c f0 brlt .+6 ; 0x17c
{
return 0;
176: 80 e0 ldi r24, 0x00 ; 0
178: 90 e0 ldi r25, 0x00 ; 0
17a: 08 95 ret
}
else
{
return (x << 3) + (x << 1) + (n & 0x0F);
17c: 99 27 eor r25, r25
17e: 9c 01 movw r18, r24
180: 22 0f add r18, r18
182: 33 1f adc r19, r19
184: 33 e0 ldi r19, 0x03 ; 3
186: 88 0f add r24, r24
188: 99 1f adc r25, r25
18a: 3a 95 dec r19
18c: e1 f7 brne .-8 ; 0x186
18e: 82 0f add r24, r18
190: 4f 70 andi r20, 0x0F ; 15
192: 84 0f add r24, r20
194: 99 27 eor r25, r25
}
#endif
}
196: 08 95 ret
198: 08 95 ret
0000019a <bin2bcd>:
unsigned char bin2bcd(unsigned char n)
{
19a: 28 2f mov r18, r24
#ifdef BCD_USE_TABLE
return pgm_read_byte(bin2bcd_data + n);
#else
unsigned char result = 0;
19c: 80 e0 ldi r24, 0x00 ; 0
if (n > 99) return 0;
19e: 24 36 cpi r18, 0x64 ; 100
1a0: 18 f0 brcs .+6 ; 0x1a8
1a2: 80 e0 ldi r24, 0x00 ; 0
1a4: 90 e0 ldi r25, 0x00 ; 0
1a6: 08 95 ret
while(n > 10)
{
++result;
n -= 10;
1a8: 2b 30 cpi r18, 0x0B ; 11
1aa: 18 f0 brcs .+6 ; 0x1b2
1ac: 8f 5f subi r24, 0xFF ; 255
1ae: 2a 50 subi r18, 0x0A ; 10
1b0: fb cf rjmp .-10 ; 0x1a8
}
return (result << 4) | n;
1b2: 99 27 eor r25, r25
1b4: 74 e0 ldi r23, 0x04 ; 4
1b6: 88 0f add r24, r24
1b8: 99 1f adc r25, r25
1ba: 7a 95 dec r23
1bc: e1 f7 brne .-8 ; 0x1b6
1be: 28 2b or r18, r24
1c0: 82 2f mov r24, r18
1c2: 99 27 eor r25, r25
#endif
}
1c4: 08 95 ret
1c6: 08 95 ret
000001c8 <DS1302_Init>:
#include "ds1302.h"
void DS1302_Init(void)
{
sbi(DS1302_DDR, DS1302_SCLK);
1c8: 8b 9a sbi 0x11, 3 ; 17
sbi(DS1302_DDR, DS1302_IO);
1ca: 8c 9a sbi 0x11, 4 ; 17
sbi(DS1302_DDR, DS1302_RST);
1cc: 8d 9a sbi 0x11, 5 ; 17
1ce: 08 95 ret
000001d0 <_DS1302_RD_Byte>:
}
// 高 12 个机器周期 低 10 个机器周期
unsigned char _DS1302_RD_Byte(void)
{
unsigned char i, result = 0;
1d0: 90 e0 ldi r25, 0x00 ; 0
1d2: 27 e0 ldi r18, 0x07 ; 7
for(i = 0; i < 8; i++)
{
result >>= 1;
1d4: 96 95 lsr r25
if (bit_is_set(DS1302_PIN, DS1302_IO))
1d6: 84 9b sbis 0x10, 4 ; 16
1d8: 03 c0 rjmp .+6 ; 0x1e0
{
result |= 0x80;
1da: 90 68 ori r25, 0x80 ; 128
/* 8-bit count, 3 cycles/loop */
static __inline__ void
_delay_loop_1(uint8_t __count)
{
1dc: 81 e0 ldi r24, 0x01 ; 1
1de: 01 c0 rjmp .+2 ; 0x1e2
1e0: 82 e0 ldi r24, 0x02 ; 2
asm volatile (
1e2: 8a 95 dec r24
1e4: f1 f7 brne .-4 ; 0x1e2
_delay_loop_1(1);
}
else
{
_delay_loop_1(2);
}
sbi(DS1302_PORT, DS1302_SCLK);
1e6: 93 9a sbi 0x12, 3 ; 18
/* 8-bit count, 3 cycles/loop */
static __inline__ void
_delay_loop_1(uint8_t __count)
{
1e8: 84 e0 ldi r24, 0x04 ; 4
asm volatile (
1ea: 8a 95 dec r24
1ec: f1 f7 brne .-4 ; 0x1ea
_delay_loop_1(4);
cbi(DS1302_PORT, DS1302_SCLK);
1ee: 93 98 cbi 0x12, 3 ; 18
1f0: 21 50 subi r18, 0x01 ; 1
1f2: 27 ff sbrs r18, 7
1f4: ef cf rjmp .-34 ; 0x1d4
}
return (result);
}
1f6: 89 2f mov r24, r25
1f8: 99 27 eor r25, r25
1fa: 08 95 ret
000001fc <_DS1302_WR_Byte>:
// 高 12 个机器周期 低 10 个机器周期
void _DS1302_WR_Byte(unsigned char c)
{
1fc: 98 2f mov r25, r24
1fe: 27 e0 ldi r18, 0x07 ; 7
unsigned char i;
for(i = 0; i < 8; i++)
{
if (c & 0x01)
200: 90 ff sbrs r25, 0
202: 02 c0 rjmp .+4 ; 0x208
{
sbi(DS1302_PORT, DS1302_IO);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -