📄 main.lst
字号:
642 .L60:
643 01b6 81E0 ldi r24,lo8(1)
644 01b8 90E0 ldi r25,hi8(1)
645 01ba 0895 ret
646 .L57:
213:main.c **** Stop();//I2C停止
648 .LM76:
649 01bc 84E9 ldi r24,lo8(-108)
650 01be 86BF out 86-0x20,r24
214:main.c **** delay_ms(10);//延时等EEPROM写完
652 .LM77:
653 01c0 8AE0 ldi r24,lo8(10)
654 01c2 90E0 ldi r25,hi8(10)
655 01c4 0E94 0000 call delay_ms
215:main.c **** return 0;
657 .LM78:
658 01c8 80E0 ldi r24,lo8(0)
659 01ca 90E0 ldi r25,hi8(0)
216:main.c **** }
661 .LM79:
662 01cc 0895 ret
663 /* epilogue: frame size=0 */
664 01ce 0895 ret
665 /* epilogue end (size=1) */
666 /* function i2c_Write size 66 (65) */
668 .Lscope12:
671 .global i2c_Read
673 i2c_Read:
217:main.c **** unsigned char i2c_Read(unsigned char RomAddress)
218:main.c **** {
675 .LM80:
676 /* prologue: frame size=0 */
677 /* prologue end (size=0) */
678 01d0 282F mov r18,r24
219:main.c **** unsigned char temp;
220:main.c **** Start();//I2C启动
680 .LM81:
681 01d2 84EA ldi r24,lo8(-92)
682 01d4 86BF out 86-0x20,r24
683 .L62:
221:main.c **** Wait();
685 .LM82:
686 01d6 06B6 in __tmp_reg__,86-0x20
687 01d8 07FE sbrs __tmp_reg__,7
688 01da FDCF rjmp .L62
222:main.c **** if (TestAck()!=START) return 0;//ACK
690 .LM83:
691 01dc 81B1 in r24,33-0x20
692 01de 9927 clr r25
693 01e0 887F andi r24,lo8(248)
694 01e2 9070 andi r25,hi8(248)
695 01e4 0897 sbiw r24,8
696 01e6 09F0 breq .+2
697 01e8 3EC0 rjmp .L90
223:main.c **** Write8Bit(wr_device_add);//写I2C从器件地址和写方式
699 .LM84:
700 01ea 80ED ldi r24,lo8(-48)
701 01ec 83B9 out 35-0x20,r24
702 01ee 84E8 ldi r24,lo8(-124)
703 01f0 86BF out 86-0x20,r24
704 .L66:
224:main.c **** Wait();
706 .LM85:
707 01f2 06B6 in __tmp_reg__,86-0x20
708 01f4 07FE sbrs __tmp_reg__,7
709 01f6 FDCF rjmp .L66
225:main.c **** if (TestAck()!=MT_SLA_ACK) return 0;//ACK
711 .LM86:
712 01f8 81B1 in r24,33-0x20
713 01fa 9927 clr r25
714 01fc 887F andi r24,lo8(248)
715 01fe 9070 andi r25,hi8(248)
716 0200 4897 sbiw r24,24
717 0202 89F5 brne .L90
226:main.c **** Write8Bit(RomAddress);//写ROM地址
719 .LM87:
720 0204 23B9 out 35-0x20,r18
721 0206 84E8 ldi r24,lo8(-124)
722 0208 86BF out 86-0x20,r24
723 .L70:
227:main.c **** Wait();
725 .LM88:
726 020a 06B6 in __tmp_reg__,86-0x20
727 020c 07FE sbrs __tmp_reg__,7
728 020e FDCF rjmp .L70
228:main.c **** if (TestAck()!=MT_DATA_ACK) return 0;
730 .LM89:
731 0210 81B1 in r24,33-0x20
732 0212 9927 clr r25
733 0214 887F andi r24,lo8(248)
734 0216 9070 andi r25,hi8(248)
735 0218 8897 sbiw r24,40
736 021a 29F5 brne .L90
229:main.c **** Start();//I2C重新启动
738 .LM90:
739 021c 84EA ldi r24,lo8(-92)
740 021e 86BF out 86-0x20,r24
741 .L74:
230:main.c **** Wait();
743 .LM91:
744 0220 06B6 in __tmp_reg__,86-0x20
745 0222 07FE sbrs __tmp_reg__,7
746 0224 FDCF rjmp .L74
231:main.c **** if (TestAck()!=RE_START) return 0;
748 .LM92:
749 0226 81B1 in r24,33-0x20
750 0228 9927 clr r25
751 022a 887F andi r24,lo8(248)
752 022c 9070 andi r25,hi8(248)
753 022e 4097 sbiw r24,16
754 0230 D1F4 brne .L90
232:main.c **** Write8Bit(rd_device_add);//写I2C从器件地址和读方式
756 .LM93:
757 0232 81ED ldi r24,lo8(-47)
758 0234 83B9 out 35-0x20,r24
759 0236 84E8 ldi r24,lo8(-124)
760 0238 86BF out 86-0x20,r24
761 .L78:
233:main.c **** Wait();
763 .LM94:
764 023a 06B6 in __tmp_reg__,86-0x20
765 023c 07FE sbrs __tmp_reg__,7
766 023e FDCF rjmp .L78
234:main.c **** if(TestAck()!=MR_SLA_ACK) return 0;//ACK
768 .LM95:
769 0240 81B1 in r24,33-0x20
770 0242 9927 clr r25
771 0244 887F andi r24,lo8(248)
772 0246 9070 andi r25,hi8(248)
773 0248 8034 cpi r24,64
774 024a 9105 cpc r25,__zero_reg__
775 024c 61F4 brne .L90
235:main.c **** Twi();//启动主I2C读方式
777 .LM96:
778 024e 84E8 ldi r24,lo8(-124)
779 0250 86BF out 86-0x20,r24
780 .L82:
236:main.c **** Wait();
782 .LM97:
783 0252 06B6 in __tmp_reg__,86-0x20
784 0254 07FE sbrs __tmp_reg__,7
785 0256 FDCF rjmp .L82
237:main.c **** if(TestAck()!=MR_DATA_NOACK) return 0;//ACK
787 .LM98:
788 0258 81B1 in r24,33-0x20
789 025a 9927 clr r25
790 025c 887F andi r24,lo8(248)
791 025e 9070 andi r25,hi8(248)
792 0260 8835 cpi r24,88
793 0262 9105 cpc r25,__zero_reg__
794 0264 19F0 breq .L85
795 .L90:
796 0266 80E0 ldi r24,lo8(0)
797 0268 90E0 ldi r25,hi8(0)
798 026a 0895 ret
799 .L85:
238:main.c **** temp=TWDR;//读取I2C接收数据
801 .LM99:
802 026c 93B1 in r25,35-0x20
239:main.c **** Stop();//I2C停止
804 .LM100:
805 026e 84E9 ldi r24,lo8(-108)
806 0270 86BF out 86-0x20,r24
240:main.c **** return temp;
808 .LM101:
809 0272 892F mov r24,r25
810 0274 9927 clr r25
241:main.c **** }
812 .LM102:
813 0276 0895 ret
814 /* epilogue: frame size=0 */
815 0278 0895 ret
816 /* epilogue end (size=1) */
817 /* function i2c_Read size 89 (88) */
822 .Lscope13:
824 .global Gettime
826 Gettime:
242:main.c **** void Gettime(void)
243:main.c **** {
828 .LM103:
829 /* prologue: frame size=0 */
830 /* prologue end (size=0) */
244:main.c **** month=(i2c_Read(5) & 0x1f);
832 .LM104:
833 027a 85E0 ldi r24,lo8(5)
834 027c 0E94 0000 call i2c_Read
835 0280 9927 clr r25
836 0282 8F71 andi r24,lo8(31)
837 0284 9070 andi r25,hi8(31)
838 0286 9093 0000 sts (month)+1,r25
839 028a 8093 0000 sts month,r24
245:main.c **** date=(i2c_Read(4) & 0x3f);
841 .LM105:
842 028e 84E0 ldi r24,lo8(4)
843 0290 0E94 0000 call i2c_Read
844 0294 9927 clr r25
845 0296 8F73 andi r24,lo8(63)
846 0298 9070 andi r25,hi8(63)
847 029a 9093 0000 sts (date)+1,r25
848 029e 8093 0000 sts date,r24
246:main.c **** hours=(i2c_Read(2) & 0x3f);
850 .LM106:
851 02a2 82E0 ldi r24,lo8(2)
852 02a4 0E94 0000 call i2c_Read
853 02a8 9927 clr r25
854 02aa 8F73 andi r24,lo8(63)
855 02ac 9070 andi r25,hi8(63)
856 02ae 9093 0000 sts (hours)+1,r25
857 02b2 8093 0000 sts hours,r24
247:main.c **** minutes=(i2c_Read(1) & 0x7f);
859 .LM107:
860 02b6 81E0 ldi r24,lo8(1)
861 02b8 0E94 0000 call i2c_Read
862 02bc 9927 clr r25
863 02be 8F77 andi r24,lo8(127)
864 02c0 9070 andi r25,hi8(127)
865 02c2 9093 0000 sts (minutes)+1,r25
866 02c6 8093 0000 sts minutes,r24
248:main.c **** senconds=(i2c_Read(0) & 0x7f);
868 .LM108:
869 02ca 80E0 ldi r24,lo8(0)
870 02cc 0E94 0000 call i2c_Read
871 02d0 8F77 andi r24,lo8(127)
872 02d2 8093 0000 sts senconds,r24
873 /* epilogue: frame size=0 */
874 02d6 0895 ret
875 /* epilogue end (size=1) */
876 /* function Gettime size 47 (46) */
878 .Lscope14:
880 .global time_init
882 time_init:
249:main.c **** }
250:main.c **** void time_init(void)
251:main.c **** {
884 .LM109:
885 /* prologue: frame size=0 */
886 /* prologue end (size=0) */
252:main.c **** i2c_Write(0,1);
888 .LM110:
889 02d8 61E0 ldi r22,lo8(1)
890 02da 80E0 ldi r24,lo8(0)
891 02dc 0E94 0000 call i2c_Write
253:main.c **** i2c_Write(0,2);
893 .LM111:
894 02e0 62E0 ldi r22,lo8(2)
895 02e2 80E0 ldi r24,lo8(0)
896 02e4 0E94 0000 call i2c_Write
254:main.c **** i2c_Write(0,3);
898 .LM112:
899 02e8 63E0 ldi r22,lo8(3)
900 02ea 80E0 ldi r24,lo8(0)
901 02ec 0E94 0000 call i2c_Write
255:main.c **** i2c_Write(0,4);
903 .LM113:
904 02f0 64E0 ldi r22,lo8(4)
905 02f2 80E0 ldi r24,lo8(0)
906 02f4 0E94 0000 call i2c_Write
256:main.c **** i2c_Write(0,5);
908 .LM114:
909 02f8 65E0 ldi r22,lo8(5)
910 02fa 80E0 ldi r24,lo8(0)
911 02fc 0E94 0000 call i2c_Write
912 /* epilogue: frame size=0 */
913 0300 0895 ret
914 /* epilogue end (size=1) */
915 /* function time_init size 21 (20) */
917 .Lscope15:
919 .global disp
921 disp:
257:main.c **** }
258:main.c **** void disp(void)
259:main.c **** {
923 .LM115:
924 /* prologue: frame size=0 */
925 /* prologue end (size=0) */
260:main.c **** a=HIBYTE(hours);
927 .LM116:
928 0302 8091 0000 lds r24,hours
929 0306 9091 0000 lds r25,(hours)+1
930 030a 34E0 ldi r19,4
931 030c 9595 1: asr r25
932 030e 8795 ror r24
933 0310 3A95 dec r19
934 0312 E1F7 brne 1b
935 0314 8093 0000 sts a,r24
261:main.c **** b=HIBYTE(minutes);
937 .LM117:
938 0318 8091 0000 lds r24,minutes
939 031c 9091 0000 lds r25,(minutes)+1
940 0320 24E0 ldi r18,4
941 0322 9595 1: asr r25
942 0324 8795 ror r24
943 0326 2A95 dec r18
944 0328 E1F7 brne 1b
945 032a 8093 0000 sts b,r24
262:main.c **** c=HIBYTE(senconds);
947 .LM118:
948 032e 8091 0000 lds r24,senconds
949 0332 8295 swap r24
950 0334 8F70 andi r24,0x0f
951 0336 8093 0000 sts c,r24
263:main.c **** if(a==0) a=10;
953 .LM119:
954 033a 8091 0000 lds r24,a
955 033e 8823 tst r24
956 0340 19F4 brne .L94
958 .LM120:
959 0342 8AE0 ldi r24,lo8(10)
960 0344 8093 0000 sts a,r24
961 .L94:
264:main.c **** if(b==0) b=10;
963 .LM121:
964 0348 8091 0000 lds r24,b
965 034c 8823 tst r24
966 034e 19F4 brne .L95
967 0350 8AE0 ldi r24,lo8(10)
968 0352 8093 0000 sts b,r24
969 .L95:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -