📄 main.lss
字号:
if(8==display_count) display_count=0;
1cc: 88 30 cpi r24, 0x08 ; 8
1ce: 11 f4 brne .+4 ; 0x1d4 <__vector_9+0x62>
1d0: 50 93 79 00 sts 0x0079, r21
//送位选
for(i=0;i<8;i++)
{
if(data_bit&0x80) set_hc595_ser();
1d4: 47 ff sbrs r20, 7
1d6: 02 c0 rjmp .+4 ; 0x1dc <__vector_9+0x6a>
1d8: c2 9a sbi 0x18, 2 ; 24
1da: 01 c0 rjmp .+2 ; 0x1de <__vector_9+0x6c>
else clr_hc595_ser();
1dc: c2 98 cbi 0x18, 2 ; 24
clr_hc595_srclk();
1de: c1 98 cbi 0x18, 1 ; 24
set_hc595_srclk();
1e0: c1 9a sbi 0x18, 1 ; 24
data_bit<<=1;
1e2: 44 0f add r20, r20
1e4: 5f 5f subi r21, 0xFF ; 255
1e6: 58 30 cpi r21, 0x08 ; 8
1e8: a8 f3 brcs .-22 ; 0x1d4 <__vector_9+0x62>
1ea: 57 e0 ldi r21, 0x07 ; 7
}
//送段码
for(i=0;i<8;i++)
{
if(data_seg&0x80) set_hc595_ser();
1ec: e7 ff sbrs r30, 7
1ee: 02 c0 rjmp .+4 ; 0x1f4 <__vector_9+0x82>
1f0: c2 9a sbi 0x18, 2 ; 24
1f2: 01 c0 rjmp .+2 ; 0x1f6 <__vector_9+0x84>
else clr_hc595_ser();
1f4: c2 98 cbi 0x18, 2 ; 24
clr_hc595_srclk();
1f6: c1 98 cbi 0x18, 1 ; 24
set_hc595_srclk();
1f8: c1 9a sbi 0x18, 1 ; 24
data_seg<<=1;
1fa: ee 0f add r30, r30
1fc: 51 50 subi r21, 0x01 ; 1
1fe: 57 ff sbrs r21, 7
200: f5 cf rjmp .-22 ; 0x1ec <__vector_9+0x7a>
}
clr_hc595_srclk();
202: c1 98 cbi 0x18, 1 ; 24
clr_hc595_rclk();
204: c0 98 cbi 0x18, 0 ; 24
set_hc595_rclk();
206: c0 9a sbi 0x18, 0 ; 24
clr_hc595_rclk();
208: c0 98 cbi 0x18, 0 ; 24
TCNT0=t0_tcnt;//定时10ms
20a: 87 ef ldi r24, 0xF7 ; 247
20c: 82 bf out 0x32, r24 ; 50
20e: ff 91 pop r31
210: ef 91 pop r30
212: 9f 91 pop r25
214: 8f 91 pop r24
216: 6f 91 pop r22
218: 5f 91 pop r21
21a: 4f 91 pop r20
21c: 3f 91 pop r19
21e: 2f 91 pop r18
220: 0f 90 pop r0
222: 0f be out 0x3f, r0 ; 63
224: 0f 90 pop r0
226: 1f 90 pop r1
228: 18 95 reti
0000022a <ds1302_write>:
#include "main.h"
void ds1302_write(uchar reg,uchar data)
{
uchar i=0;
set_ds1302_io_ddr();
22a: a1 9a sbi 0x14, 1 ; 20
asm("nop");
22c: 00 00 nop
asm("nop");
22e: 00 00 nop
clr_ds1302_rst();
230: a8 98 cbi 0x15, 0 ; 21
asm("nop");
232: 00 00 nop
asm("nop");
234: 00 00 nop
clr_ds1302_sclk();
236: aa 98 cbi 0x15, 2 ; 21
asm("nop");
238: 00 00 nop
asm("nop");
23a: 00 00 nop
set_ds1302_rst();
23c: a8 9a sbi 0x15, 0 ; 21
asm("nop");
23e: 00 00 nop
asm("nop");
240: 00 00 nop
for(i=8;i>0;i--)
242: 98 e0 ldi r25, 0x08 ; 8
{
if(reg&0x01) set_ds1302_io();
244: 80 ff sbrs r24, 0
246: 02 c0 rjmp .+4 ; 0x24c <ds1302_write+0x22>
248: a9 9a sbi 0x15, 1 ; 21
24a: 01 c0 rjmp .+2 ; 0x24e <ds1302_write+0x24>
else clr_ds1302_io();
24c: a9 98 cbi 0x15, 1 ; 21
asm("nop");
24e: 00 00 nop
asm("nop");
250: 00 00 nop
set_ds1302_sclk();
252: aa 9a sbi 0x15, 2 ; 21
asm("nop");
254: 00 00 nop
asm("nop");
256: 00 00 nop
clr_ds1302_sclk();
258: aa 98 cbi 0x15, 2 ; 21
asm("nop");
25a: 00 00 nop
asm("nop");
25c: 00 00 nop
reg>>=1;
25e: 86 95 lsr r24
260: 91 50 subi r25, 0x01 ; 1
262: 81 f7 brne .-32 ; 0x244 <ds1302_write+0x1a>
}
for(i=8;i>0;i--)
264: 98 e0 ldi r25, 0x08 ; 8
{
if(data&0x01) set_ds1302_io();
266: 60 ff sbrs r22, 0
268: 02 c0 rjmp .+4 ; 0x26e <ds1302_write+0x44>
26a: a9 9a sbi 0x15, 1 ; 21
26c: 01 c0 rjmp .+2 ; 0x270 <ds1302_write+0x46>
else clr_ds1302_io();
26e: a9 98 cbi 0x15, 1 ; 21
asm("nop");
270: 00 00 nop
asm("nop");
272: 00 00 nop
set_ds1302_sclk();
274: aa 9a sbi 0x15, 2 ; 21
asm("nop");
276: 00 00 nop
asm("nop");
278: 00 00 nop
clr_ds1302_sclk();
27a: aa 98 cbi 0x15, 2 ; 21
asm("nop");
27c: 00 00 nop
asm("nop");
27e: 00 00 nop
data>>=1;
280: 66 95 lsr r22
282: 91 50 subi r25, 0x01 ; 1
284: 81 f7 brne .-32 ; 0x266 <ds1302_write+0x3c>
}
clr_ds1302_rst();
286: a8 98 cbi 0x15, 0 ; 21
asm("nop");
288: 00 00 nop
asm("nop");
28a: 00 00 nop
clr_ds1302_io_ddr();
28c: a1 98 cbi 0x14, 1 ; 20
asm("nop");
28e: 00 00 nop
asm("nop");
290: 00 00 nop
292: 08 95 ret
00000294 <ds1302_read>:
}
uchar ds1302_read(uchar reg)
{
uchar data=0;
294: 90 e0 ldi r25, 0x00 ; 0
uchar i=0;
reg+=1;//读标志
296: 8f 5f subi r24, 0xFF ; 255
set_ds1302_io_ddr();
298: a1 9a sbi 0x14, 1 ; 20
asm("nop");
29a: 00 00 nop
asm("nop");
29c: 00 00 nop
clr_ds1302_rst();
29e: a8 98 cbi 0x15, 0 ; 21
asm("nop");
2a0: 00 00 nop
asm("nop");
2a2: 00 00 nop
clr_ds1302_sclk();
2a4: aa 98 cbi 0x15, 2 ; 21
asm("nop");
2a6: 00 00 nop
asm("nop");
2a8: 00 00 nop
set_ds1302_rst();
2aa: a8 9a sbi 0x15, 0 ; 21
asm("nop");
2ac: 00 00 nop
asm("nop");
2ae: 00 00 nop
for(i=8;i>0;i--)
2b0: 28 e0 ldi r18, 0x08 ; 8
{
if(reg&0x01) set_ds1302_io();
2b2: 80 ff sbrs r24, 0
2b4: 02 c0 rjmp .+4 ; 0x2ba <ds1302_read+0x26>
2b6: a9 9a sbi 0x15, 1 ; 21
2b8: 01 c0 rjmp .+2 ; 0x2bc <ds1302_read+0x28>
else clr_ds1302_io();
2ba: a9 98 cbi 0x15, 1 ; 21
asm("nop");
2bc: 00 00 nop
asm("nop");
2be: 00 00 nop
set_ds1302_sclk();
2c0: aa 9a sbi 0x15, 2 ; 21
asm("nop");
2c2: 00 00 nop
asm("nop");
2c4: 00 00 nop
clr_ds1302_sclk();
2c6: aa 98 cbi 0x15, 2 ; 21
asm("nop");
2c8: 00 00 nop
asm("nop");
2ca: 00 00 nop
reg>>=1;
2cc: 86 95 lsr r24
2ce: 21 50 subi r18, 0x01 ; 1
2d0: 81 f7 brne .-32 ; 0x2b2 <ds1302_read+0x1e>
}
clr_ds1302_io_ddr();
2d2: a1 98 cbi 0x14, 1 ; 20
asm("nop");
2d4: 00 00 nop
asm("nop");
2d6: 00 00 nop
for(i=8;i>0;i--)
2d8: 28 e0 ldi r18, 0x08 ; 8
{
data>>=1;
2da: 96 95 lsr r25
if(in_ds1302_io()) data|=0x80;
2dc: 99 99 sbic 0x13, 1 ; 19
2de: 90 68 ori r25, 0x80 ; 128
asm("nop");
2e0: 00 00 nop
asm("nop");
2e2: 00 00 nop
set_ds1302_sclk();
2e4: aa 9a sbi 0x15, 2 ; 21
asm("nop");
2e6: 00 00 nop
asm("nop");
2e8: 00 00 nop
clr_ds1302_sclk();
2ea: aa 98 cbi 0x15, 2 ; 21
asm("nop");
2ec: 00 00 nop
asm("nop");
2ee: 00 00 nop
2f0: 21 50 subi r18, 0x01 ; 1
2f2: 99 f7 brne .-26 ; 0x2da <ds1302_read+0x46>
}
clr_ds1302_rst();
2f4: a8 98 cbi 0x15, 0 ; 21
asm("nop");
2f6: 00 00 nop
asm("nop");
2f8: 00 00 nop
return(data);
}
2fa: 89 2f mov r24, r25
2fc: 99 27 eor r25, r25
2fe: 08 95 ret
00000300 <check_ds1302>:
uchar check_ds1302(void)
{
ds1302_write(ds1302_control_reg,0x80);
300: 60 e8 ldi r22, 0x80 ; 128
302: 8e e8 ldi r24, 0x8E ; 142
304: 92 df rcall .-220 ; 0x22a <ds1302_write>
if(ds1302_read(ds1302_control_reg)==0x80) return 1;
306: 8e e8 ldi r24, 0x8E ; 142
308: c5 df rcall .-118 ; 0x294 <ds1302_read>
30a: 80 38 cpi r24, 0x80 ; 128
30c: 19 f4 brne .+6 ; 0x314 <check_ds1302+0x14>
30e: 81 e0 ldi r24, 0x01 ; 1
310: 90 e0 ldi r25, 0x00 ; 0
312: 08 95 ret
return 0;
314: 80 e0 ldi r24, 0x00 ; 0
316: 90 e0 ldi r25, 0x00 ; 0
}
318: 08 95 ret
0000031a <ds1302_read_time>:
void ds1302_read_time(void)
{
year=ds1302_read(ds1302_year_reg); //年
31a: 8c e8 ldi r24, 0x8C ; 140
31c: bb df rcall .-138 ; 0x294 <ds1302_read>
31e: 80 93 81 00 sts 0x0081, r24
month=ds1302_read(ds1302_month_reg);//月
322: 88 e8 ldi r24, 0x88 ; 136
324: b7 df rcall .-146 ; 0x294 <ds1302_read>
326: 80 93 80 00 sts 0x0080, r24
day=ds1302_read(ds1302_date_reg); //日
32a: 86 e8 ldi r24, 0x86 ; 134
32c: b3 df rcall .-154 ; 0x294 <ds1302_read>
32e: 80 93 7f 00 sts 0x007F, r24
week=ds1302_read(ds1302_day_reg); //周
332: 8a e8 ldi r24, 0x8A ; 138
334: af df rcall .-162 ; 0x294 <ds1302_read>
336: 80 93 7e 00 sts 0x007E, r24
hour=ds1302_read(ds1302_hr_reg); //时
33a: 84 e8 ldi r24, 0x84 ; 132
33c: ab df rcall .-170 ; 0x294 <ds1302_read>
33e: 80 93 7d 00 sts 0x007D, r24
minute=ds1302_read(ds1302_min_reg); //分
342: 82 e8 ldi r24, 0x82 ; 130
344: a7 df rcall .-178 ; 0x294 <ds1302_read>
346: 80 93 7c 00 sts 0x007C, r24
second=ds1302_read(ds1302_sec_reg); //秒
34a: 80 e8 ldi r24, 0x80 ; 128
34c: a3 df rcall .-186 ; 0x294 <ds1302_read>
34e: 80 93 7b 00 sts 0x007B, r24
352: 08 95 ret
00000354 <ds1302_write_time>:
}
void ds1302_write_time(void)
{
ds1302_write(ds1302_control_reg,0x00); //关闭写保护
354: 60 e0 ldi r22, 0x00 ; 0
356: 8e e8 ldi r24, 0x8E ; 142
358: 68 df rcall .-304 ; 0x22a <ds1302_write>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -