📄 main.lss
字号:
clr_ds1302_sclk();
1f2: 80 91 35 00 lds r24, 0x0035
1f6: 8f 7e andi r24, 0xEF ; 239
1f8: 80 93 35 00 sts 0x0035, r24
delay_nus(500);
1fc: 84 ef ldi r24, 0xF4 ; 244
1fe: 91 e0 ldi r25, 0x01 ; 1
200: 35 df rcall .-406 ; 0x6c
if((data&0x01)==0x01)
202: 8a 81 ldd r24, Y+2 ; 0x02
204: 99 27 eor r25, r25
206: 81 70 andi r24, 0x01 ; 1
208: 90 70 andi r25, 0x00 ; 0
20a: 00 97 sbiw r24, 0x00 ; 0
20c: 31 f0 breq .+12 ; 0x21a
set_ds1302_io();
20e: 80 91 35 00 lds r24, 0x0035
212: 80 62 ori r24, 0x20 ; 32
214: 80 93 35 00 sts 0x0035, r24
218: 05 c0 rjmp .+10 ; 0x224
else
clr_ds1302_io();
21a: 80 91 35 00 lds r24, 0x0035
21e: 8f 7d andi r24, 0xDF ; 223
220: 80 93 35 00 sts 0x0035, r24
set_ds1302_sclk(); /*时钟*/
224: 80 91 35 00 lds r24, 0x0035
228: 80 61 ori r24, 0x10 ; 16
22a: 80 93 35 00 sts 0x0035, r24
data>>=1;
22e: 8a 81 ldd r24, Y+2 ; 0x02
230: 86 95 lsr r24
232: 8a 83 std Y+2, r24 ; 0x02
234: 8b 81 ldd r24, Y+3 ; 0x03
236: 81 50 subi r24, 0x01 ; 1
238: 8b 83 std Y+3, r24 ; 0x03
23a: d8 cf rjmp .-80 ; 0x1ec
}
clr_ds1302_rst(); /*置0,结束本次数据传送,I/O引脚变为高阻态*/
23c: 80 91 35 00 lds r24, 0x0035
240: 87 7f andi r24, 0xF7 ; 247
242: 80 93 35 00 sts 0x0035, r24
clr_ds1302_io_ddr(); /*设为输入*/
246: 80 91 34 00 lds r24, 0x0034
24a: 8f 7d andi r24, 0xDF ; 223
24c: 80 93 34 00 sts 0x0034, r24
250: 23 96 adiw r28, 0x03 ; 3
252: 0f b6 in r0, 0x3f ; 63
254: f8 94 cli
256: de bf out 0x3e, r29 ; 62
258: 0f be out 0x3f, r0 ; 63
25a: cd bf out 0x3d, r28 ; 61
25c: df 91 pop r29
25e: cf 91 pop r28
260: 08 95 ret
00000262 <ds1302_read>:
}
/******************************************************************/
uchar ds1302_read(uchar reg)
{
262: cf 93 push r28
264: df 93 push r29
266: cd b7 in r28, 0x3d ; 61
268: de b7 in r29, 0x3e ; 62
26a: 23 97 sbiw r28, 0x03 ; 3
26c: 0f b6 in r0, 0x3f ; 63
26e: f8 94 cli
270: de bf out 0x3e, r29 ; 62
272: 0f be out 0x3f, r0 ; 63
274: cd bf out 0x3d, r28 ; 61
276: 89 83 std Y+1, r24 ; 0x01
uchar data=0;
278: 1a 82 std Y+2, r1 ; 0x02
char i=0;
27a: 1b 82 std Y+3, r1 ; 0x03
reg+=1; //读标志
27c: 89 81 ldd r24, Y+1 ; 0x01
27e: 8f 5f subi r24, 0xFF ; 255
280: 89 83 std Y+1, r24 ; 0x01
set_ds1302_rst_ddr();
282: 80 91 34 00 lds r24, 0x0034
286: 88 60 ori r24, 0x08 ; 8
288: 80 93 34 00 sts 0x0034, r24
set_ds1302_sclk_ddr();
28c: 80 91 34 00 lds r24, 0x0034
290: 80 61 ori r24, 0x10 ; 16
292: 80 93 34 00 sts 0x0034, r24
set_ds1302_io_ddr(); /*设为输出*/
296: 80 91 34 00 lds r24, 0x0034
29a: 80 62 ori r24, 0x20 ; 32
29c: 80 93 34 00 sts 0x0034, r24
clr_ds1302_rst();
2a0: 80 91 35 00 lds r24, 0x0035
2a4: 87 7f andi r24, 0xF7 ; 247
2a6: 80 93 35 00 sts 0x0035, r24
clr_ds1302_sclk();
2aa: 80 91 35 00 lds r24, 0x0035
2ae: 8f 7e andi r24, 0xEF ; 239
2b0: 80 93 35 00 sts 0x0035, r24
set_ds1302_rst();
2b4: 80 91 35 00 lds r24, 0x0035
2b8: 88 60 ori r24, 0x08 ; 8
2ba: 80 93 35 00 sts 0x0035, r24
for(i=8;i>0;i--)
2be: 88 e0 ldi r24, 0x08 ; 8
2c0: 8b 83 std Y+3, r24 ; 0x03
2c2: 8b 81 ldd r24, Y+3 ; 0x03
2c4: 88 23 and r24, r24
2c6: 11 f1 breq .+68 ; 0x30c
{
clr_ds1302_sclk();
2c8: 80 91 35 00 lds r24, 0x0035
2cc: 8f 7e andi r24, 0xEF ; 239
2ce: 80 93 35 00 sts 0x0035, r24
if((reg&0x01)==0x01)
2d2: 89 81 ldd r24, Y+1 ; 0x01
2d4: 99 27 eor r25, r25
2d6: 81 70 andi r24, 0x01 ; 1
2d8: 90 70 andi r25, 0x00 ; 0
2da: 00 97 sbiw r24, 0x00 ; 0
2dc: 31 f0 breq .+12 ; 0x2ea
set_ds1302_io();
2de: 80 91 35 00 lds r24, 0x0035
2e2: 80 62 ori r24, 0x20 ; 32
2e4: 80 93 35 00 sts 0x0035, r24
2e8: 05 c0 rjmp .+10 ; 0x2f4
else
clr_ds1302_io();
2ea: 80 91 35 00 lds r24, 0x0035
2ee: 8f 7d andi r24, 0xDF ; 223
2f0: 80 93 35 00 sts 0x0035, r24
set_ds1302_sclk();
2f4: 80 91 35 00 lds r24, 0x0035
2f8: 80 61 ori r24, 0x10 ; 16
2fa: 80 93 35 00 sts 0x0035, r24
reg>>=1;
2fe: 89 81 ldd r24, Y+1 ; 0x01
300: 86 95 lsr r24
302: 89 83 std Y+1, r24 ; 0x01
304: 8b 81 ldd r24, Y+3 ; 0x03
306: 81 50 subi r24, 0x01 ; 1
308: 8b 83 std Y+3, r24 ; 0x03
30a: db cf rjmp .-74 ; 0x2c2
}
clr_ds1302_io_ddr(); //PA1 in
30c: 80 91 34 00 lds r24, 0x0034
310: 8f 7d andi r24, 0xDF ; 223
312: 80 93 34 00 sts 0x0034, r24
for(i=8;i>0;i--)
316: 88 e0 ldi r24, 0x08 ; 8
318: 8b 83 std Y+3, r24 ; 0x03
31a: 8b 81 ldd r24, Y+3 ; 0x03
31c: 88 23 and r24, r24
31e: 39 f1 breq .+78 ; 0x36e
{
if((PINC&0X20)==0X20)
320: 80 91 33 00 lds r24, 0x0033
324: 99 27 eor r25, r25
326: 96 95 lsr r25
328: 87 95 ror r24
32a: 92 95 swap r25
32c: 82 95 swap r24
32e: 8f 70 andi r24, 0x0F ; 15
330: 89 27 eor r24, r25
332: 9f 70 andi r25, 0x0F ; 15
334: 89 27 eor r24, r25
336: 81 70 andi r24, 0x01 ; 1
338: 90 70 andi r25, 0x00 ; 0
33a: 00 97 sbiw r24, 0x00 ; 0
33c: 21 f0 breq .+8 ; 0x346
data|=0x80;
33e: 8a 81 ldd r24, Y+2 ; 0x02
340: 80 68 ori r24, 0x80 ; 128
342: 8a 83 std Y+2, r24 ; 0x02
344: 03 c0 rjmp .+6 ; 0x34c
else
data&=0x7f;
346: 8a 81 ldd r24, Y+2 ; 0x02
348: 8f 77 andi r24, 0x7F ; 127
34a: 8a 83 std Y+2, r24 ; 0x02
set_ds1302_sclk();
34c: 80 91 35 00 lds r24, 0x0035
350: 80 61 ori r24, 0x10 ; 16
352: 80 93 35 00 sts 0x0035, r24
clr_ds1302_sclk();
356: 80 91 35 00 lds r24, 0x0035
35a: 8f 7e andi r24, 0xEF ; 239
35c: 80 93 35 00 sts 0x0035, r24
data>>=1;
360: 8a 81 ldd r24, Y+2 ; 0x02
362: 86 95 lsr r24
364: 8a 83 std Y+2, r24 ; 0x02
366: 8b 81 ldd r24, Y+3 ; 0x03
368: 81 50 subi r24, 0x01 ; 1
36a: 8b 83 std Y+3, r24 ; 0x03
36c: d6 cf rjmp .-84 ; 0x31a
}
clr_ds1302_rst();
36e: 80 91 35 00 lds r24, 0x0035
372: 87 7f andi r24, 0xF7 ; 247
374: 80 93 35 00 sts 0x0035, r24
return(data);
378: 8a 81 ldd r24, Y+2 ; 0x02
37a: 99 27 eor r25, r25
37c: 23 96 adiw r28, 0x03 ; 3
37e: 0f b6 in r0, 0x3f ; 63
380: f8 94 cli
382: de bf out 0x3e, r29 ; 62
384: 0f be out 0x3f, r0 ; 63
386: cd bf out 0x3d, r28 ; 61
388: df 91 pop r29
38a: cf 91 pop r28
38c: 08 95 ret
0000038e <check_ds1302>:
}
/******************************************************************/
uchar check_ds1302(void)
{
38e: cf 93 push r28
390: df 93 push r29
392: cd b7 in r28, 0x3d ; 61
394: de b7 in r29, 0x3e ; 62
396: 22 97 sbiw r28, 0x02 ; 2
398: 0f b6 in r0, 0x3f ; 63
39a: f8 94 cli
39c: de bf out 0x3e, r29 ; 62
39e: 0f be out 0x3f, r0 ; 63
3a0: cd bf out 0x3d, r28 ; 61
ds1302_write(ds1302_control_reg,0x80);
3a2: 60 e8 ldi r22, 0x80 ; 128
3a4: 8e e8 ldi r24, 0x8E ; 142
3a6: ce de rcall .-612 ; 0x144
if(ds1302_read(ds1302_control_reg)==0x80) return 1;
3a8: 8e e8 ldi r24, 0x8E ; 142
3aa: 5b df rcall .-330 ; 0x262
3ac: 80 38 cpi r24, 0x80 ; 128
3ae: 29 f4 brne .+10 ; 0x3ba
3b0: 81 e0 ldi r24, 0x01 ; 1
3b2: 90 e0 ldi r25, 0x00 ; 0
3b4: 89 83 std Y+1, r24 ; 0x01
3b6: 9a 83 std Y+2, r25 ; 0x02
3b8: 02 c0 rjmp .+4 ; 0x3be
else return 0;
3ba: 19 82 std Y+1, r1 ; 0x01
3bc: 1a 82 std Y+2, r1 ; 0x02
}
3be: 89 81 ldd r24, Y+1 ; 0x01
3c0: 9a 81 ldd r25, Y+2 ; 0x02
3c2: 22 96 adiw r28, 0x02 ; 2
3c4: 0f b6 in r0, 0x3f ; 63
3c6: f8 94 cli
3c8: de bf out 0x3e, r29 ; 62
3ca: 0f be out 0x3f, r0 ; 63
3cc: cd bf out 0x3d, r28 ; 61
3ce: df 91 pop r29
3d0: cf 91 pop r28
3d2: 08 95 ret
000003d4 <ds1302_read_time>:
void ds1302_read_time(void)
{
3d4: cf 93 push r28
3d6: df 93 push r29
3d8: cd b7 in r28, 0x3d ; 61
3da: de b7 in r29, 0x3e ; 62
year=ds1302_read(ds1302_year_reg); //年
3dc: 8c e8 ldi r24, 0x8C ; 140
3de: 41 df rcall .-382 ; 0x262
3e0: 80 93 60 00 sts 0x0060, r24
month=ds1302_read(ds1302_month_reg); //月
3e4: 88 e8 ldi r24, 0x88 ; 136
3e6: 3d df rcall .-390 ; 0x262
3e8: 80 93 61 00 sts 0x0061, r24
day=ds1302_read(ds1302_date_reg); //日
3ec: 86 e8 ldi r24, 0x86 ; 134
3ee: 39 df rcall .-398 ; 0x262
3f0: 80 93 62 00 sts 0x0062, r24
week=ds1302_read(ds1302_day_reg); //周
3f4: 8a e8 ldi r24, 0x8A ; 138
3f6: 35 df rcall .-406 ; 0x262
3f8: 80 93 63 00 sts 0x0063, r24
hour=ds1302_read(ds1302_hr_reg); //时
3fc: 84 e8 ldi r24, 0x84 ; 132
3fe: 31 df rcall .-414 ; 0x262
400: 80 93 64 00 sts 0x0064, r24
minute=ds1302_read(ds1302_min_reg); //分
404: 82 e8 ldi r24, 0x82 ; 130
406: 2d df rcall .-422 ; 0x262
408: 80 93 65 00 sts 0x0065, r24
second=ds1302_read(ds1302_sec_reg); //秒
40c: 80 e8 ldi r24, 0x80 ; 128
40e: 29 df rcall .-430 ; 0x262
410: 80 93 74 00 sts 0x0074, r24
414: df 91 pop r29
416: cf 91 pop r28
418: 08 95 ret
0000041a <ds1302_write_time>:
}
/******************************************************************/
void ds1302_write_time(void)
{
41a: cf 93 push r28
41c: df 93 push r29
41e: cd b7 in r28, 0x3d ; 61
420: de b7 in r29, 0x3e ; 62
ds1302_write(ds1302_control_reg,0x00); //关闭写保护
422: 60 e0 ldi r22, 0x00 ; 0
424: 8e e8 ldi r24, 0x8E ; 142
426: 8e de rcall .-740 ; 0x144
ds1302_write(ds1302_sec_reg,0x80); //暂停
428: 60 e8 ldi r22, 0x80 ; 128
42a: 80 e8 ldi r24, 0x80 ; 128
42c: 8b de rcall .-746 ; 0x144
delay_nms(10);
42e: 8a e0 ldi r24, 0x0A ; 10
430: 90 e0 ldi r25, 0x00 ; 0
432: 5e de rcall .-836 ; 0xf0
//ds1302_write(ds1302_charger_reg,0xa9); //涓流充电
ds1302_write(ds1302_year_reg,year); //年
434: 60 91 60 00 lds r22, 0x0060
438: 8c e8 ldi r24, 0x8C ; 140
43a: 84 de rcall .-760 ; 0x144
ds1302_write(ds1302_month_reg,month); //月
43c: 60 91 61 00 lds r22, 0x0061
440: 88 e8 ldi r24, 0x88 ; 136
442: 80 de rcall .-768 ; 0x144
ds1302_write(ds1302_date_reg,day); //日
444: 60 91 62 00 lds r22, 0x0062
448: 86 e8 ldi r24, 0x86 ; 134
44a: 7c de rcall .-776 ; 0x144
ds1302_write(ds1302_day_reg,week); //周
44c: 60 91 63 00 lds r22, 0x0063
450: 8a e8 ldi r24, 0x8A ; 138
452: 78 de rcall .-784 ; 0x144
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -