📄 rtc.lss
字号:
rtc.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000ad0 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000048 00800060 00000ad0 00000b64 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000c 008000a8 008000a8 00000bac 2**0
ALLOC
3 .noinit 00000000 008000b4 008000b4 00000bac 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000bac 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00000bac 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000f18 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000050 00000000 00000000 00000f9c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000168 00000000 00000000 00000fec 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000631 00000000 00000000 00001154 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000372 00000000 00000000 00001785 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 0000058f 00000000 00000000 00001af7 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000218 00000000 00000000 00002086 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e0 ed ldi r30, 0xD0 ; 208
68: fa e0 ldi r31, 0x0A ; 10
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a8 3a cpi r26, 0xA8 ; 168
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a8 ea ldi r26, 0xA8 ; 168
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a4 3b cpi r26, 0xB4 ; 180
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 47 00 jmp 0x8e <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <main>:
unsigned char Second;
int main(void)
{
8e: cf e5 ldi r28, 0x5F ; 95
90: d4 e0 ldi r29, 0x04 ; 4
92: de bf out 0x3e, r29 ; 62
94: cd bf out 0x3d, r28 ; 61
/* Set LED and Smg LE pin as output , databus as output */
DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6);
96: 8a b3 in r24, 0x1a ; 26
98: 80 67 ori r24, 0x70 ; 112
9a: 8a bb out 0x1a, r24 ; 26
DDRB = 0xFF;
9c: 8f ef ldi r24, 0xFF ; 255
9e: 87 bb out 0x17, r24 ; 23
/* Off the Smg display */
PORTA|= (1<<PA5);
a0: dd 9a sbi 0x1b, 5 ; 27
PORTB = 0x00;
a2: 18 ba out 0x18, r1 ; 24
PORTA&=~(1<<PA5);
a4: dd 98 cbi 0x1b, 5 ; 27
/* Off the LED display */
PORTA|= (1<<PA6);
a6: de 9a sbi 0x1b, 6 ; 27
PORTB = 0xFF;
a8: 88 bb out 0x18, r24 ; 24
PORTA&=~(1<<PA6);
aa: de 98 cbi 0x1b, 6 ; 27
DS1302_Config();
ac: 0e 94 b9 00 call 0x172 <DS1302_Config>
DS1302TimeInit();
b0: 0e 94 d9 00 call 0x1b2 <DS1302TimeInit>
UART_Config();
b4: 0e 94 dd 01 call 0x3ba <UART_Config>
printf("System reset ! \r\n");
b8: 80 e6 ldi r24, 0x60 ; 96
ba: 90 e0 ldi r25, 0x00 ; 0
bc: 0e 94 fb 01 call 0x3f6 <puts>
while(1)
{
Year =DS1302TimeRead(DS_YEAR );
c0: 8c e8 ldi r24, 0x8C ; 140
c2: 0e 94 14 01 call 0x228 <DS1302TimeRead>
c6: 80 93 ac 00 sts 0x00AC, r24
Month =DS1302TimeRead(DS_MONTH );
ca: 88 e8 ldi r24, 0x88 ; 136
cc: 0e 94 14 01 call 0x228 <DS1302TimeRead>
d0: 80 93 ad 00 sts 0x00AD, r24
Day =DS1302TimeRead(DS_DAY );
d4: 86 e8 ldi r24, 0x86 ; 134
d6: 0e 94 14 01 call 0x228 <DS1302TimeRead>
da: 80 93 ab 00 sts 0x00AB, r24
Hour =DS1302TimeRead(DS_HOUR );
de: 84 e8 ldi r24, 0x84 ; 132
e0: 0e 94 14 01 call 0x228 <DS1302TimeRead>
e4: 80 93 a9 00 sts 0x00A9, r24
Minute=DS1302TimeRead(DS_MINUTE);
e8: 82 e8 ldi r24, 0x82 ; 130
ea: 0e 94 14 01 call 0x228 <DS1302TimeRead>
ee: 80 93 aa 00 sts 0x00AA, r24
Second=DS1302TimeRead(DS_SECOND);
f2: 80 e8 ldi r24, 0x80 ; 128
f4: 0e 94 14 01 call 0x228 <DS1302TimeRead>
f8: 80 93 a8 00 sts 0x00A8, r24
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
fc: 80 e2 ldi r24, 0x20 ; 32
fe: 9e e4 ldi r25, 0x4E ; 78
100: 01 97 sbiw r24, 0x01 ; 1
102: f1 f7 brne .-4 ; 0x100 <main+0x72>
_delay_ms(10);
if(Second!=DS1302TimeRead(DS_SECOND))
104: 80 e8 ldi r24, 0x80 ; 128
106: 0e 94 14 01 call 0x228 <DS1302TimeRead>
10a: 90 91 a8 00 lds r25, 0x00A8
10e: 98 17 cp r25, r24
110: b9 f2 breq .-82 ; 0xc0 <main+0x32>
{
Second=DS1302TimeRead(DS_SECOND);
112: 80 e8 ldi r24, 0x80 ; 128
114: 0e 94 14 01 call 0x228 <DS1302TimeRead>
118: 80 93 a8 00 sts 0x00A8, r24
printf("20%02d-%02d-%02d %02d:%02d:%02d\r\n",Year,Month,Day,Hour,Minute,Second);
11c: 99 27 eor r25, r25
11e: 9f 93 push r25
120: 8f 93 push r24
122: 80 91 aa 00 lds r24, 0x00AA
126: 99 27 eor r25, r25
128: 9f 93 push r25
12a: 8f 93 push r24
12c: 80 91 a9 00 lds r24, 0x00A9
130: 99 27 eor r25, r25
132: 9f 93 push r25
134: 8f 93 push r24
136: 80 91 ab 00 lds r24, 0x00AB
13a: 99 27 eor r25, r25
13c: 9f 93 push r25
13e: 8f 93 push r24
140: 80 91 ad 00 lds r24, 0x00AD
144: 99 27 eor r25, r25
146: 9f 93 push r25
148: 8f 93 push r24
14a: 80 91 ac 00 lds r24, 0x00AC
14e: 99 27 eor r25, r25
150: 9f 93 push r25
152: 8f 93 push r24
154: 81 e7 ldi r24, 0x71 ; 113
156: 90 e0 ldi r25, 0x00 ; 0
158: 9f 93 push r25
15a: 8f 93 push r24
15c: 0e 94 e6 01 call 0x3cc <printf>
160: 8d b7 in r24, 0x3d ; 61
162: 9e b7 in r25, 0x3e ; 62
164: 0e 96 adiw r24, 0x0e ; 14
166: 0f b6 in r0, 0x3f ; 63
168: f8 94 cli
16a: 9e bf out 0x3e, r25 ; 62
16c: 0f be out 0x3f, r0 ; 63
16e: 8d bf out 0x3d, r24 ; 61
170: a7 cf rjmp .-178 ; 0xc0 <main+0x32>
00000172 <DS1302_Config>:
void DS1302_Config(void)//IO初始化
{
DDRA |= (1<<PA2);
172: d2 9a sbi 0x1a, 2 ; 26
DDRC |= (1<<PC7);
174: a7 9a sbi 0x14, 7 ; 20
DA_CS_SET();
176: da 9a sbi 0x1b, 2 ; 27
SPI_Init();
178: 0e 94 b1 01 call 0x362 <SPI_Init>
17c: 08 95 ret
0000017e <Write1302>:
}
void Write1302(unsigned char dat)
{
SPI_Write(dat);
17e: 0e 94 ba 01 call 0x374 <SPI_Write>
182: 08 95 ret
00000184 <Read1302>:
}
unsigned char Read1302(void)
{
unsigned dat=0;
dat=SPI_Read();
184: 0e 94 be 01 call 0x37c <SPI_Read>
return dat; //将读出的数据返回
}
188: 99 27 eor r25, r25
18a: 08 95 ret
0000018c <ReadSet1302>:
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RTC_ENABLE(); //CE=1 启动数据传输
18c: af 9a sbi 0x15, 7 ; 21
Write1302(Cmd); //写入命令字
18e: 0e 94 bf 00 call 0x17e <Write1302>
dat = Read1302(); //读出数据
192: 0e 94 c2 00 call 0x184 <Read1302>
RTC_DISABLE(); //CE=0 禁止数据传递
196: af 98 cbi 0x15, 7 ; 21
return dat; //将读出的数据返回
}
198: 99 27 eor r25, r25
19a: 08 95 ret
0000019c <WriteSet1302>:
void WriteSet1302(unsigned char Cmd,unsigned char dat)
{
19c: 1f 93 push r17
19e: 16 2f mov r17, r22
RTC_ENABLE();
1a0: af 9a sbi 0x15, 7 ; 21
Write1302(Cmd); //写入命令字
1a2: 0e 94 bf 00 call 0x17e <Write1302>
Write1302(dat); //写数据
1a6: 81 2f mov r24, r17
1a8: 0e 94 bf 00 call 0x17e <Write1302>
RTC_DISABLE();
1ac: af 98 cbi 0x15, 7 ; 21
1ae: 1f 91 pop r17
1b0: 08 95 ret
000001b2 <DS1302TimeInit>:
}
void DS1302TimeInit(void)
{
1b2: ef 92 push r14
1b4: ff 92 push r15
1b6: 1f 93 push r17
1b8: cf 93 push r28
1ba: df 93 push r29
1bc: cd b7 in r28, 0x3d ; 61
1be: de b7 in r29, 0x3e ; 62
1c0: 27 97 sbiw r28, 0x07 ; 7
1c2: 0f b6 in r0, 0x3f ; 63
1c4: f8 94 cli
1c6: de bf out 0x3e, r29 ; 62
1c8: 0f be out 0x3f, r0 ; 63
1ca: cd bf out 0x3d, r28 ; 61
/*==================秒 分 时 日 月 周 年=======================================*/
UCHAR inittime[7]={0x30,0x30,0x12,0x15,0x06,0x02,0x10}; //初始化设置为:10年06月15日星期2,12点30分30
1cc: 7e 01 movw r14, r28
1ce: 08 94 sec
1d0: e1 1c adc r14, r1
1d2: f1 1c adc r15, r1
1d4: 87 e0 ldi r24, 0x07 ; 7
1d6: e3 e9 ldi r30, 0x93 ; 147
1d8: f0 e0 ldi r31, 0x00 ; 0
1da: d7 01 movw r26, r14
1dc: 01 90 ld r0, Z+
1de: 0d 92 st X+, r0
1e0: 8a 95 dec r24
1e2: e1 f7 brne .-8 ; 0x1dc <DS1302TimeInit+0x2a>
UCHAR i=7;
WriteSet1302(0x8E,0x00);
1e4: 60 e0 ldi r22, 0x00 ; 0
1e6: 8e e8 ldi r24, 0x8E ; 142
1e8: 0e 94 ce 00 call 0x19c <WriteSet1302>
while(i--)
WriteSet1302(0x80+i*2,inittime[i]);
1ec: 16 e0 ldi r17, 0x06 ; 6
1ee: 81 2f mov r24, r17
1f0: 99 27 eor r25, r25
1f2: fc 01 movw r30, r24
1f4: ee 0d add r30, r14
1f6: ff 1d adc r31, r15
1f8: 88 0f add r24, r24
1fa: 99 1f adc r25, r25
1fc: 60 81 ld r22, Z
1fe: 80 58 subi r24, 0x80 ; 128
200: 0e 94 ce 00 call 0x19c <WriteSet1302>
204: 11 50 subi r17, 0x01 ; 1
206: 98 f7 brcc .-26 ; 0x1ee <DS1302TimeInit+0x3c>
WriteSet1302(0x8E,0x80);
208: 60 e8 ldi r22, 0x80 ; 128
20a: 8e e8 ldi r24, 0x8E ; 142
20c: 0e 94 ce 00 call 0x19c <WriteSet1302>
210: 27 96 adiw r28, 0x07 ; 7
212: 0f b6 in r0, 0x3f ; 63
214: f8 94 cli
216: de bf out 0x3e, r29 ; 62
218: 0f be out 0x3f, r0 ; 63
21a: cd bf out 0x3d, r28 ; 61
21c: df 91 pop r29
21e: cf 91 pop r28
220: 1f 91 pop r17
222: ff 90 pop r15
224: ef 90 pop r14
226: 08 95 ret
00000228 <DS1302TimeRead>:
}
unsigned char DS1302TimeRead(unsigned char TimeReg)
{
unsigned char Time,ReadValue;
ReadValue = ReadSet1302(TimeReg+1); //从寄存器读数据
228: 8f 5f subi r24, 0xFF ; 255
22a: 0e 94 c6 00 call 0x18c <ReadSet1302>
Time =((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读出数据转化
22e: 28 2f mov r18, r24
230: 33 27 eor r19, r19
232: 20 77 andi r18, 0x70 ; 112
234: 30 70 andi r19, 0x00 ; 0
236: 44 e0 ldi r20, 0x04 ; 4
238: 35 95 asr r19
23a: 27 95 ror r18
23c: 4a 95 dec r20
23e: e1 f7 brne .-8 ; 0x238 <DS1302TimeRead+0x10>
240: a9 01 movw r20, r18
242: 93 e0 ldi r25, 0x03 ; 3
244: 44 0f add r20, r20
246: 55 1f adc r21, r21
248: 9a 95 dec r25
24a: e1 f7 brne .-8 ; 0x244 <DS1302TimeRead+0x1c>
24c: 42 0f add r20, r18
24e: 53 1f adc r21, r19
250: 42 0f add r20, r18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -