📄 main.lst
字号:
613 .LM78:
614 /* epilogue: frame size=0 */
615 0180 0895 ret
616 /* epilogue end (size=1) */
617 /* function RtcReadRAM size 4 (3) */
623 .global RtcWriteRAM
625 RtcWriteRAM:
175:main.c **** //写DS1307用户RAM
176:main.c **** uchar RtcWriteRAM(uchar addr,uchar *buf,uchar len)
177:main.c **** {
627 .LM79:
628 /* prologue: frame size=0 */
629 /* prologue end (size=0) */
178:main.c **** addr+=8;
631 .LM80:
632 0182 885F subi r24,lo8(-(8))
179:main.c **** return rtc_write(addr,buf,len);
634 .LM81:
635 0184 96DF rcall rtc_write
636 0186 9927 clr r25
180:main.c **** }
638 .LM82:
639 /* epilogue: frame size=0 */
640 0188 0895 ret
641 /* epilogue end (size=1) */
642 /* function RtcWriteRAM size 4 (3) */
646 .global byte_bintobcd
648 byte_bintobcd:
181:main.c ****
182:main.c **** uchar byte_bintobcd(uchar bin)
183:main.c **** {
650 .LM83:
651 /* prologue: frame size=0 */
652 /* prologue end (size=0) */
184:main.c **** uchar ret;
185:main.c **** bin&=0x7f;
654 .LM84:
655 .LBB8:
656 018a 8F77 andi r24,lo8(127)
186:main.c **** bin%=100;
658 .LM85:
659 018c 64E6 ldi r22,lo8(100)
660 018e 00D0 rcall __udivmodqi4
661 0190 392F mov r19,r25
187:main.c **** ret=bin/10;
663 .LM86:
664 0192 4AE0 ldi r20,lo8(10)
665 0194 892F mov r24,r25
666 0196 642F mov r22,r20
667 0198 00D0 rcall __udivmodqi4
668 019a 282F mov r18,r24
188:main.c **** ret <<=4;
670 .LM87:
671 019c 2295 swap r18
672 019e 207F andi r18,0xf0
189:main.c **** ret|=bin%10;
674 .LM88:
675 01a0 832F mov r24,r19
676 01a2 00D0 rcall __udivmodqi4
677 01a4 292B or r18,r25
190:main.c **** return ret;
679 .LM89:
680 01a6 822F mov r24,r18
681 01a8 9927 clr r25
191:main.c **** }
683 .LM90:
684 .LBE8:
685 /* epilogue: frame size=0 */
686 01aa 0895 ret
687 /* epilogue end (size=1) */
688 /* function byte_bintobcd size 17 (16) */
695 .global byte_bcdtobin
697 byte_bcdtobin:
192:main.c **** uchar byte_bcdtobin(uchar bcd)
193:main.c **** {
699 .LM91:
700 /* prologue: frame size=0 */
701 /* prologue end (size=0) */
194:main.c **** uchar ret;
195:main.c **** ret=bcd & 0x0f;
703 .LM92:
704 01ac 282F mov r18,r24
705 .LBB9:
706 01ae 2F70 andi r18,lo8(15)
196:main.c **** ret+=(bcd>>4)*10;
708 .LM93:
709 01b0 8295 swap r24
710 01b2 8F70 andi r24,0x0f
711 01b4 9AE0 ldi r25,lo8(10)
712 01b6 899F mul r24,r25
713 01b8 C001 movw r24,r0
714 01ba 1124 clr r1
715 01bc 280F add r18,r24
197:main.c **** return ret;
717 .LM94:
718 01be 822F mov r24,r18
719 01c0 9927 clr r25
198:main.c **** }
721 .LM95:
722 .LBE9:
723 /* epilogue: frame size=0 */
724 01c2 0895 ret
725 /* epilogue end (size=1) */
726 /* function byte_bcdtobin size 12 (11) */
732 .global RtcBinToBCD
734 RtcBinToBCD:
199:main.c ****
200:main.c **** //将二进制格式缓冲区(g_aTimeBin)内容转换成BCD格式后保存到BCD格式缓冲区(g_aTimeBuf)
201:main.c **** void RtcBinToBCD()
202:main.c **** {
736 .LM96:
737 /* prologue: frame size=0 */
738 01c4 FF92 push r15
739 01c6 0F93 push r16
740 01c8 1F93 push r17
741 01ca CF93 push r28
742 01cc DF93 push r29
743 /* prologue end (size=5) */
203:main.c **** uchar i;
204:main.c **** g_aTimeBin[0]&=0x7f;
745 .LM97:
746 .LBB10:
747 01ce 8091 0000 lds r24,g_aTimeBin
748 01d2 8F77 andi r24,lo8(127)
749 01d4 8093 0000 sts g_aTimeBin,r24
205:main.c **** g_aTimeBin[1]&=0x7f;
751 .LM98:
752 01d8 8091 0000 lds r24,g_aTimeBin+1
753 01dc 8F77 andi r24,lo8(127)
754 01de 8093 0000 sts g_aTimeBin+1,r24
206:main.c **** g_aTimeBin[2]&=0x3f;
756 .LM99:
757 01e2 8091 0000 lds r24,g_aTimeBin+2
758 01e6 8F73 andi r24,lo8(63)
759 01e8 8093 0000 sts g_aTimeBin+2,r24
207:main.c **** g_aTimeBin[3]&=0x07;
761 .LM100:
762 01ec 8091 0000 lds r24,g_aTimeBin+3
763 01f0 8770 andi r24,lo8(7)
764 01f2 8093 0000 sts g_aTimeBin+3,r24
208:main.c **** g_aTimeBin[4]&=0x3f;
766 .LM101:
767 01f6 8091 0000 lds r24,g_aTimeBin+4
768 01fa 8F73 andi r24,lo8(63)
769 01fc 8093 0000 sts g_aTimeBin+4,r24
209:main.c **** g_aTimeBin[5]&=0x1f;
771 .LM102:
772 0200 8091 0000 lds r24,g_aTimeBin+5
773 0204 8F71 andi r24,lo8(31)
774 0206 8093 0000 sts g_aTimeBin+5,r24
210:main.c **** g_aTimeBin[6]&=0xff;
211:main.c ****
212:main.c **** for(i=0;i<7;i++)
776 .LM103:
777 020a FF24 clr r15
778 020c 00E0 ldi r16,lo8(g_aTimeBuf)
779 020e 10E0 ldi r17,hi8(g_aTimeBuf)
780 0210 C0E0 ldi r28,lo8(g_aTimeBin)
781 0212 D0E0 ldi r29,hi8(g_aTimeBin)
782 .L69:
213:main.c **** g_aTimeBuf[i]=byte_bintobcd(g_aTimeBin[i]);
784 .LM104:
785 0214 8991 ld r24,Y+
786 0216 B9DF rcall byte_bintobcd
787 0218 F801 movw r30,r16
788 021a 8193 st Z+,r24
789 021c 8F01 movw r16,r30
791 .LM105:
792 021e F394 inc r15
793 0220 F6E0 ldi r31,lo8(6)
794 0222 FF15 cp r31,r15
795 0224 B8F7 brsh .L69
214:main.c **** }
797 .LM106:
798 .LBE10:
799 /* epilogue: frame size=0 */
800 0226 DF91 pop r29
801 0228 CF91 pop r28
802 022a 1F91 pop r17
803 022c 0F91 pop r16
804 022e FF90 pop r15
805 0230 0895 ret
806 /* epilogue end (size=6) */
807 /* function RtcBinToBCD size 55 (44) */
813 .global RtcBCDToBin
815 RtcBCDToBin:
215:main.c ****
216:main.c **** //将BCD格式缓冲区(g_aTimeBuf)内容转换成二进制格式后保存到二进制格式缓冲区(g_aTimeBin)
217:main.c **** void RtcBCDToBin()
218:main.c **** {
817 .LM107:
818 /* prologue: frame size=0 */
819 0232 FF92 push r15
820 0234 0F93 push r16
821 0236 1F93 push r17
822 0238 CF93 push r28
823 023a DF93 push r29
824 /* prologue end (size=5) */
219:main.c **** uchar i;
220:main.c **** for(i=0;i<7;i++)
826 .LM108:
827 .LBB11:
828 023c FF24 clr r15
829 023e 00E0 ldi r16,lo8(g_aTimeBin)
830 0240 10E0 ldi r17,hi8(g_aTimeBin)
831 0242 C0E0 ldi r28,lo8(g_aTimeBuf)
832 0244 D0E0 ldi r29,hi8(g_aTimeBuf)
833 .L77:
221:main.c **** g_aTimeBin[i]=byte_bcdtobin(g_aTimeBuf[i]);
835 .LM109:
836 0246 8991 ld r24,Y+
837 0248 B1DF rcall byte_bcdtobin
838 024a F801 movw r30,r16
839 024c 8193 st Z+,r24
840 024e 8F01 movw r16,r30
842 .LM110:
843 0250 F394 inc r15
844 0252 F6E0 ldi r31,lo8(6)
845 0254 FF15 cp r31,r15
846 0256 B8F7 brsh .L77
222:main.c **** }
848 .LM111:
849 .LBE11:
850 /* epilogue: frame size=0 */
851 0258 DF91 pop r29
852 025a CF91 pop r28
853 025c 1F91 pop r17
854 025e 0F91 pop r16
855 0260 FF90 pop r15
856 0262 0895 ret
857 /* epilogue end (size=6) */
858 /* function RtcBCDToBin size 25 (14) */
866 .global RtcSetSQWOutput
868 RtcSetSQWOutput:
223:main.c ****
224:main.c **** //写DS1307配置字节
225:main.c **** void RtcSetSQWOutput(uchar en,uchar level)
226:main.c **** {
870 .LM112:
871 /* prologue: frame size=1 */
872 0264 CF93 push r28
873 0266 DF93 push r29
874 0268 CDB7 in r28,__SP_L__
875 026a DEB7 in r29,__SP_H__
876 026c 2197 sbiw r28,1
877 026e 0FB6 in __tmp_reg__,__SREG__
878 0270 F894 cli
879 0272 DEBF out __SP_H__,r29
880 0274 0FBE out __SREG__,__tmp_reg__
881 0276 CDBF out __SP_L__,r28
882 /* prologue end (size=10) */
227:main.c **** //bEn:方波输出允许 TRUE 有效 level:如果输出禁止 OUT口的逻辑电平
228:main.c **** uchar c=0;
884 .LM113:
885 0278 1982 std Y+1,__zero_reg__
229:main.c **** if(en) //enable
887 .LM114:
888 .LBB12:
889 027a 8823 tst r24
890 027c 11F0 breq .L81
230:main.c **** c=0x10;
892 .LM115:
893 027e 80E1 ldi r24,lo8(16)
894 0280 03C0 rjmp .L84
895 .L81:
231:main.c **** else //disable
232:main.c **** {
233:main.c **** if(level)
897 .LM116:
898 0282 6623 tst r22
899 0284 11F0 breq .L82
234:main.c **** c=0x80;
901 .LM117:
902 0286 80E8 ldi r24,lo8(-128)
903 .L84:
904 0288 8983 std Y+1,r24
905 .L82:
235:main.c **** }
236:main.c **** rtc_write(7,&c,1);
907 .LM118:
908 028a 41E0 ldi r20,lo8(1)
909 028c BE01 movw r22,r28
910 028e 6F5F subi r22,lo8(-(1))
911 0290 7F4F sbci r23,hi8(-(1))
912 0292 87E0 ldi r24,lo8(7)
913 0294 0EDF rcall rtc_write
237:main.c **** }
915 .LM119:
916 .LBE12:
917 /* epilogue: frame size=1 */
918 0296 2196 adiw r28,1
919 0298 0FB6 in __tmp_reg__,__SREG__
920 029a F894 cli
921 029c DEBF out __SP_H__,r29
922 029e 0FBE out __SREG__,__tmp_reg__
923 02a0 CDBF out __SP_L__,r28
924 02a2 DF91 pop r29
925 02a4 CF91 pop r28
926 02a6 0895 ret
927 /* epilogue end (size=9) */
928 /* function RtcSetSQWOutput size 34 (15) */
933 .section .progmem.data,"a",@progbits
936 __c.0:
937 0000 CAE4 C8EB .string "\312\344\310\353\303\374\301\356\243\272g - \264\362\323\241\310\325\300\372/\312\261\326
937 C3FC C1EE
937 A3BA 6720
937 2D20 B4F2
937 D3A1 C8D5
940 __c.1:
941 003e B5B1 C7B0 .string "\265\261\307\260\310\325\300\372/\312\261\326\323\243\272%d\304\352%d\324\302%d\310\325 \
941 C8D5 C0FA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -