📄 ds1302.lst
字号:
460 /* #NOAPP */
461 00d0 892F mov r24,r25
462 00d2 9927 clr r25
463 /* epilogue: frame size=0 */
464 00d4 0895 ret
465 /* epilogue end (size=1) */
466 /* function ds1302_read size 81 (80) */
472 .Lscope1:
474 .global check_ds1302
476 check_ds1302:
106:ds1302.c **** uchar check_ds1302(void)
107:ds1302.c **** {
478 .LM93:
479 /* prologue: frame size=0 */
480 /* prologue end (size=0) */
108:ds1302.c **** ds1302_write(ds1302_control_reg,0x80);
482 .LM94:
483 00d6 60E8 ldi r22,lo8(-128)
484 00d8 8EE8 ldi r24,lo8(-114)
485 00da 92DF rcall ds1302_write
109:ds1302.c **** if(ds1302_read(ds1302_control_reg)==0x80) return 1;
487 .LM95:
488 00dc 8EE8 ldi r24,lo8(-114)
489 00de C5DF rcall ds1302_read
490 00e0 8038 cpi r24,lo8(-128)
491 00e2 19F4 brne .L35
493 .LM96:
494 00e4 81E0 ldi r24,lo8(1)
495 00e6 90E0 ldi r25,hi8(1)
496 00e8 0895 ret
497 .L35:
110:ds1302.c **** return 0;
499 .LM97:
500 00ea 80E0 ldi r24,lo8(0)
501 00ec 90E0 ldi r25,hi8(0)
111:ds1302.c **** }
503 .LM98:
504 00ee 0895 ret
505 /* epilogue: frame size=0 */
506 /* epilogue: noreturn */
507 /* epilogue end (size=0) */
508 /* function check_ds1302 size 13 (13) */
510 .Lscope2:
512 .global ds1302_read_time
514 ds1302_read_time:
112:ds1302.c **** void ds1302_read_time(void)
113:ds1302.c **** {
516 .LM99:
517 /* prologue: frame size=0 */
518 /* prologue end (size=0) */
114:ds1302.c **** year=ds1302_read(ds1302_year_reg); //年
520 .LM100:
521 00f0 8CE8 ldi r24,lo8(-116)
522 00f2 BBDF rcall ds1302_read
523 00f4 8093 0000 sts year,r24
115:ds1302.c **** month=ds1302_read(ds1302_month_reg);//月
525 .LM101:
526 00f8 88E8 ldi r24,lo8(-120)
527 00fa B7DF rcall ds1302_read
528 00fc 8093 0000 sts month,r24
116:ds1302.c **** day=ds1302_read(ds1302_date_reg); //日
530 .LM102:
531 0100 86E8 ldi r24,lo8(-122)
532 0102 B3DF rcall ds1302_read
533 0104 8093 0000 sts day,r24
117:ds1302.c **** week=ds1302_read(ds1302_day_reg); //周
535 .LM103:
536 0108 8AE8 ldi r24,lo8(-118)
537 010a AFDF rcall ds1302_read
538 010c 8093 0000 sts week,r24
118:ds1302.c **** hour=ds1302_read(ds1302_hr_reg); //时
540 .LM104:
541 0110 84E8 ldi r24,lo8(-124)
542 0112 ABDF rcall ds1302_read
543 0114 8093 0000 sts hour,r24
119:ds1302.c **** minute=ds1302_read(ds1302_min_reg); //分
545 .LM105:
546 0118 82E8 ldi r24,lo8(-126)
547 011a A7DF rcall ds1302_read
548 011c 8093 0000 sts minute,r24
120:ds1302.c **** second=ds1302_read(ds1302_sec_reg); //秒
550 .LM106:
551 0120 80E8 ldi r24,lo8(-128)
552 0122 A3DF rcall ds1302_read
553 0124 8093 0000 sts second,r24
554 /* epilogue: frame size=0 */
555 0128 0895 ret
556 /* epilogue end (size=1) */
557 /* function ds1302_read_time size 29 (28) */
559 .Lscope3:
561 .global ds1302_write_time
563 ds1302_write_time:
121:ds1302.c **** }
122:ds1302.c **** void ds1302_write_time(void)
123:ds1302.c **** {
565 .LM107:
566 /* prologue: frame size=0 */
567 /* prologue end (size=0) */
124:ds1302.c **** ds1302_write(ds1302_control_reg,0x00); //关闭写保护
569 .LM108:
570 012a 60E0 ldi r22,lo8(0)
571 012c 8EE8 ldi r24,lo8(-114)
572 012e 68DF rcall ds1302_write
125:ds1302.c **** ds1302_write(ds1302_sec_reg,0x80); //暂停
574 .LM109:
575 0130 60E8 ldi r22,lo8(-128)
576 0132 862F mov r24,r22
577 0134 65DF rcall ds1302_write
126:ds1302.c **** ds1302_write(ds1302_charger_reg,0xa9); //涓流充电
579 .LM110:
580 0136 69EA ldi r22,lo8(-87)
581 0138 80E9 ldi r24,lo8(-112)
582 013a 62DF rcall ds1302_write
127:ds1302.c **** ds1302_write(ds1302_year_reg,year); //年
584 .LM111:
585 013c 6091 0000 lds r22,year
586 0140 8CE8 ldi r24,lo8(-116)
587 0142 5EDF rcall ds1302_write
128:ds1302.c **** ds1302_write(ds1302_month_reg,month); //月
589 .LM112:
590 0144 6091 0000 lds r22,month
591 0148 88E8 ldi r24,lo8(-120)
592 014a 5ADF rcall ds1302_write
129:ds1302.c **** ds1302_write(ds1302_date_reg,day); //日
594 .LM113:
595 014c 6091 0000 lds r22,day
596 0150 86E8 ldi r24,lo8(-122)
597 0152 56DF rcall ds1302_write
130:ds1302.c **** ds1302_write(ds1302_day_reg,week); //周
599 .LM114:
600 0154 6091 0000 lds r22,week
601 0158 8AE8 ldi r24,lo8(-118)
602 015a 52DF rcall ds1302_write
131:ds1302.c **** ds1302_write(ds1302_hr_reg,hour); //时
604 .LM115:
605 015c 6091 0000 lds r22,hour
606 0160 84E8 ldi r24,lo8(-124)
607 0162 4EDF rcall ds1302_write
132:ds1302.c **** ds1302_write(ds1302_min_reg,minute); //分
609 .LM116:
610 0164 6091 0000 lds r22,minute
611 0168 82E8 ldi r24,lo8(-126)
612 016a 4ADF rcall ds1302_write
133:ds1302.c **** ds1302_write(ds1302_sec_reg,second); //秒
614 .LM117:
615 016c 6091 0000 lds r22,second
616 0170 80E8 ldi r24,lo8(-128)
617 0172 46DF rcall ds1302_write
134:ds1302.c **** ds1302_write(ds1302_control_reg,0x80); //打开写保护
619 .LM118:
620 0174 60E8 ldi r22,lo8(-128)
621 0176 8EE8 ldi r24,lo8(-114)
622 0178 43DF rcall ds1302_write
623 /* epilogue: frame size=0 */
624 017a 0895 ret
625 /* epilogue end (size=1) */
626 /* function ds1302_write_time size 41 (40) */
628 .Lscope4:
630 .global __vector_8
632 __vector_8:
135:ds1302.c **** }
136:ds1302.c **** SIGNAL (SIG_OVERFLOW1)
137:ds1302.c **** {
634 .LM119:
635 /* prologue: frame size=0 */
636 017c 1F92 push __zero_reg__
637 017e 0F92 push __tmp_reg__
638 0180 0FB6 in __tmp_reg__,__SREG__
639 0182 0F92 push __tmp_reg__
640 0184 1124 clr __zero_reg__
641 0186 2F93 push r18
642 0188 3F93 push r19
643 018a 8F93 push r24
644 018c 9F93 push r25
645 /* prologue end (size=9) */
138:ds1302.c **** TCNT1=t1_tcnt;
647 .LM120:
648 018e 8EEE ldi r24,lo8(-3602)
649 0190 91EF ldi r25,hi8(-3602)
650 0192 9DBD out (76)+1-0x20,r25
651 0194 8CBD out 76-0x20,r24
139:ds1302.c **** half_second++;
653 .LM121:
654 0196 2091 0000 lds r18,half_second
655 019a 2F5F subi r18,lo8(-(1))
656 019c 2093 0000 sts half_second,r18
140:ds1302.c **** flash_var^=flash_control;
658 .LM122:
659 01a0 8091 0000 lds r24,flash_var
660 01a4 9091 0000 lds r25,flash_control
661 01a8 8927 eor r24,r25
662 01aa 8093 0000 sts flash_var,r24
141:ds1302.c **** if(2==half_second)
664 .LM123:
665 01ae 2230 cpi r18,lo8(2)
666 01b0 09F0 breq .+2
667 01b2 48C0 rjmp .L38
142:ds1302.c **** {
143:ds1302.c **** half_second=0;
669 .LM124:
670 01b4 1092 0000 sts half_second,__zero_reg__
144:ds1302.c **** second++;
672 .LM125:
673 01b8 8091 0000 lds r24,second
674 01bc 8F5F subi r24,lo8(-(1))
675 01be 8093 0000 sts second,r24
145:ds1302.c **** second_flag=1;
677 .LM126:
678 01c2 81E0 ldi r24,lo8(1)
679 01c4 8093 0000 sts second_flag,r24
146:ds1302.c **** if(flag&(1<<buzzer_flag)) flash_buzzer();
681 .LM127:
682 01c8 3091 0000 lds r19,flag
683 01cc 31FF sbrs r19,1
684 01ce 05C0 rjmp .L40
685 01d0 85B3 in r24,53-0x20
686 01d2 90E1 ldi r25,lo8(16)
687 01d4 8927 eor r24,r25
688 01d6 85BB out 53-0x20,r24
689 01d8 01C0 rjmp .L41
690 .L40:
147:ds1302.c **** else set_buzzer();
692 .LM128:
693 01da AC9A sbi 53-0x20,4
694 .L41:
148:ds1302.c **** if((second&0x0f)>=0x0a)
696 .LM129:
697 01dc 2091 0000 lds r18,second
698 01e0 822F mov r24,r18
699 01e2 9927 clr r25
700 01e4 8F70 andi r24,lo8(15)
701 01e6 9070 andi r25,hi8(15)
702 01e8 0A97 sbiw r24,10
703 01ea 64F1 brlt .L38
149:ds1302.c **** {
150:ds1302.c **** second&=0xf0;
705 .LM130:
706 01ec 822F mov r24,r18
707 01ee 807F andi r24,lo8(-16)
151:ds1302.c **** second+=0x10;
709 .LM131:
710 01f0 805F subi r24,lo8(-(16))
711 01f2 8093 0000 sts second,r24
152:ds1302.c **** if((second&0xf0)>=0x60)
713 .LM132:
714 01f6 9927 clr r25
715 01f8 8036 cpi r24,96
716 01fa 9105 cpc r25,__zero_reg__
717 01fc 1CF1 brlt .L38
153:ds1302.c **** {
154:ds1302.c **** second=0;
719 .LM133:
720 01fe 1092 0000 sts second,__zero_reg__
155:ds1302.c **** minute++;
722 .LM134:
723 0202 2091 0000 lds r18,minute
724 0206 2F5F subi r18,lo8(-(1))
725 0208 2093 0000 sts minute,r18
156:ds1302.c **** flag&=~(1<<buzzer_flag);
727 .LM135:
728 020c 3D7F andi r19,lo8(-3)
729 020e 3093 0000 sts flag,r19
157:ds1302.c **** if((minute&0x0f)>=0x0a)
731 .LM136:
732 0212 822F mov r24,r18
733 0214 9927 clr r25
734 0216 8F70 andi r24,lo8(15)
735 0218 9070 andi r25,hi8(15)
736 021a 0A97 sbiw r24,10
737 021c 9CF0 brlt .L38
158:ds1302.c **** {
159:ds1302.c **** minute&=0xf0;
739 .LM137:
740 021e 822F mov r24,r18
741 0220 807F andi r24,lo8(-16)
160:ds1302.c **** minute+=0x10;
743 .LM138:
744 0222 805F subi r24,lo8(-(16))
745 0224 8093 0000 sts minute,r24
161:ds1302.c **** if((minute&0xf0)>=0x60)
747 .LM139:
748 0228 9927 clr r25
749 022a 8036 cpi r24,96
750 022c 9105 cpc r25,__zero_reg__
751 022e 54F0 brlt .L38
162:ds1302.c **** {
163:ds1302.c **** minute=0;
753 .LM140:
754 0230 1092 0000 sts minute,__zero_reg__
164:ds1302.c **** hour++;
756 .LM141:
757 0234 8091 0000 lds r24,hour
758 0238 8F5F subi r24,lo8(-(1))
759 023a 8093 0000 sts hour,r24
165:ds1302.c **** flag|=1<<hour_flag;
761 .LM142:
762 023e 3160 ori r19,lo8(1)
763 0240 3093 0000 sts flag,r19
764 .L38:
765 /* epilogue: frame size=0 */
766 0244 9F91 pop r25
767 0246 8F91 pop r24
768 0248 3F91 pop r19
769 024a 2F91 pop r18
770 024c 0F90 pop __tmp_reg__
771 024e 0FBE out __SREG__,__tmp_reg__
772 0250 0F90 pop __tmp_reg__
773 0252 1F90 pop __zero_reg__
774 0254 1895 reti
775 /* epilogue end (size=9) */
776 /* function __vector_8 size 111 (93) */
778 .Lscope5:
780 .global display_time
782 display_time:
166:ds1302.c **** }
167:ds1302.c **** }
168:ds1302.c **** }
169:ds1302.c **** }
170:ds1302.c **** }
171:ds1302.c **** }
172:ds1302.c **** void display_time(void)
173:ds1302.c **** {
784 .LM143:
785 /* prologue: frame size=0 */
786 /* prologue end (size=0) */
174:ds1302.c **** uchar temp=0;
175:ds1302.c ****
176:ds1302.c **** temp=(hour&0xf0)>>4;
788 .LM144:
789 0256 2091 0000 lds r18,hour
790 025a 822F mov r24,r18
791 025c 9927 clr r25
792 025e 54E0 ldi r21,4
793 0260 9695 1: lsr r25
794 0262 8795 ror r24
795 0264 5A95 dec r21
796 0266 E1F7 brne 1b
797 .LBB2:
177:ds1302.c **** display_buffer[0]=pgm_read_byte(display_code+temp);
799 .LM145:
800 0268 E82F mov r30,r24
801 026a FF27 clr r31
802 026c E050 subi r30,lo8(-(display_code))
803 026e F040 sbci r31,hi8(-(display_code))
804 /* #APP */
805 0270 8491 lpm r24, Z
806
807 /* #NOAPP */
808 .LBE2:
809 0272 8093 0000 sts display_buffer,r24
178:ds1302.c **** temp=hour&0x0f;
811 .LM146:
812 0276 2F70 andi r18,lo8(15)
813 .LBB3:
179:ds1302.c **** display_buffer[1]=pgm_read_byte(display_code+temp);
815 .LM147:
816 0278 E22F mov r30,r18
817 027a FF27 clr r31
818 027c E050 subi r30,lo8(-(display_code))
819 027e F040 sbci r31,hi8(-(display_code))
820 /* #APP */
821 0280 8491 lpm r24, Z
822
823 /* #NOAPP */
824 .LBE3:
825 0282 8093 0000 sts display_buffer+1,r24
180:ds1302.c ****
181:ds1302.c **** display_buffer[2]=0x40;//-
827 .LM148:
828 0286 30E4 ldi r19,lo8(64)
829 0288 3093 0000 sts display_buffer+2,r19
182:ds1302.c ****
183:ds1302.c **** temp=(minute&0xf0)>>4;
831 .LM149:
832 028c 2091 0000 lds r18,minute
833 0290 822F mov r24,r18
834 0292 9927 clr r25
835 0294 44E0 ldi r20,4
836 0296 9695 1: lsr r25
837 0298 8795 ror r24
838 029a 4A95 dec r20
839 029c E1F7 brne 1b
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -