📄 ds1302a.lst
字号:
827 01fe 00D0 ld r22,Z
828 0200 8093 0000 ldi r23,lo8(0)
829 ldi r24,lo8(0)
830 ldi r25,hi8(0)
831 0204 82E8 rcall write728x
832 0206 00D0 ldi r18,lo8(0)
833 0208 8093 0000 ldi r19,hi8(0)
834 .L74:
835 .LBB88:
836 020c 80E8 .LBB89:
837 020e 00D0 .LBB90:
838 0210 E82F .LBB91:
840 .Ltext5:
842 0216 F0E0 .LM126:
843 0218 EF70 ldi r24,lo8(-123)
844 021a F070 /* #APP */
845 021c E050 1: dec r24
846 021e F040 brne 1b
847 0220 6081 /* #NOAPP */
848 0222 70E0 .LBE91:
849 0224 80E0 .LBE90:
850 0226 90E0 .LBE89:
851 0228 00D0 .LBE88:
853 022c 30E0 .Ltext6:
855 .LM127:
856 subi r18,lo8(-(1))
857 sbci r19,hi8(-(1))
858 cpi r18,100
859 cpc r19,__zero_reg__
860 brne .L74
862 .LM128:
863 022e 85E8 lds r30,second
864 swap r30
865 0230 8A95 andi r30,lo8(15)
866 0232 01F4 ldi r31,lo8(0)
867 subi r30,lo8(-(disp_table))
868 sbci r31,hi8(-(disp_table))
869 ld r22,Z
870 ldi r23,lo8(0)
871 ldi r24,lo8(1)
872 ldi r25,hi8(1)
873 rcall write728x
874 ldi r18,lo8(0)
875 ldi r19,hi8(0)
876 0234 2F5F .L76:
877 0236 3F4F .LBB92:
878 0238 2436 .LBB93:
879 023a 3105 .LBB94:
880 023c 01F4 .LBB95:
882 .Ltext7:
884 0242 E295 .LM129:
885 0244 EF70 ldi r24,lo8(-123)
886 0246 F0E0 /* #APP */
887 0248 E050 1: dec r24
888 024a F040 brne 1b
889 024c 6081 /* #NOAPP */
890 024e 70E0 .LBE95:
891 0250 81E0 .LBE94:
892 0252 90E0 .LBE93:
893 0254 00D0 .LBE92:
895 0258 30E0 .Ltext8:
897 .LM130:
898 subi r18,lo8(-(1))
899 sbci r19,hi8(-(1))
900 cpi r18,100
901 cpc r19,__zero_reg__
902 brne .L76
904 .LM131:
905 025a 85E8 lds r30,minute
906 ldi r31,lo8(0)
907 025c 8A95 andi r30,lo8(15)
908 025e 01F4 andi r31,hi8(15)
909 subi r30,lo8(-(disp_table))
910 sbci r31,hi8(-(disp_table))
911 ld r22,Z
912 ldi r23,lo8(0)
913 ldi r24,lo8(1)
914 ldi r25,hi8(1)
915 rcall write728x
916 ldi r18,lo8(0)
917 ldi r19,hi8(0)
918 0260 2F5F .L78:
919 0262 3F4F .LBB96:
920 0264 2436 .LBB97:
921 0266 3105 .LBB98:
922 0268 01F4 .LBB99:
924 .Ltext9:
926 026e F0E0 .LM132:
927 0270 EF70 ldi r24,lo8(-123)
928 0272 F070 /* #APP */
929 0274 E050 1: dec r24
930 0276 F040 brne 1b
931 0278 6081 /* #NOAPP */
932 027a 70E0 .LBE99:
933 027c 81E0 .LBE98:
934 027e 90E0 .LBE97:
935 0280 00D0 .LBE96:
937 0284 30E0 .Ltext10:
939 .LM133:
940 subi r18,lo8(-(1))
941 sbci r19,hi8(-(1))
942 cpi r18,100
943 cpc r19,__zero_reg__
944 brne .L78
946 .LM134:
947 0286 85E8 lds r30,minute
948 swap r30
949 0288 8A95 andi r30,lo8(15)
950 028a 01F4 ldi r31,lo8(0)
951 subi r30,lo8(-(disp_table))
952 sbci r31,hi8(-(disp_table))
953 ld r22,Z
954 ldi r23,lo8(0)
955 ldi r24,lo8(1)
956 ldi r25,hi8(1)
957 rcall write728x
958 ldi r18,lo8(0)
959 ldi r19,hi8(0)
960 028c 2F5F .L80:
961 028e 3F4F .LBB100:
962 0290 2436 .LBB101:
963 0292 3105 .LBB102:
964 0294 01F4 .LBB103:
966 .Ltext11:
968 029a E295 .LM135:
969 029c EF70 ldi r24,lo8(-123)
970 029e F0E0 /* #APP */
971 02a0 E050 1: dec r24
972 02a2 F040 brne 1b
973 02a4 6081 /* #NOAPP */
974 02a6 70E0 .LBE103:
975 02a8 81E0 .LBE102:
976 02aa 90E0 .LBE101:
977 02ac 00D0 .LBE100:
979 02b0 30E0 .Ltext12:
981 .LM136:
982 subi r18,lo8(-(1))
983 sbci r19,hi8(-(1))
984 cpi r18,100
985 cpc r19,__zero_reg__
986 brne .L80
987 /* epilogue: frame size=0 */
988 ret
989 02b2 85E8 /* epilogue end (size=1) */
990 /* function ds1302_read_time size 124 (123) */
1007 .Lscope15:
1009 .global main
1011 main:
1013 .LM137:
1014 .LFBB16:
1015 /* prologue: frame size=0 */
1016 /* prologue end (size=0) */
1018 .LM138:
1019 ldi r24,lo8(1)
1020 out 55-0x20,r24
1022 .LM139:
1023 out 56-0x20,__zero_reg__
1025 .LM140:
1026 ldi r24,lo8(-1)
1027 out 50-0x20,r24
1029 .LM141:
1030 out 49-0x20,r24
400:../ds1302a/ds1302a.c **** _delay_us(5); // 恢复I/O口B5为输出B.7为输入
401:../ds1302a/ds1302a.c **** }
402:../ds1302a/ds1302a.c ****
403:../ds1302a/ds1302a.c **** /*
404:../ds1302a/ds1302a.c **** void send_byte(uchar x) //以下为显示程序
405:../ds1302a/ds1302a.c **** {
406:../ds1302a/ds1302a.c **** uchar i;
407:../ds1302a/ds1302a.c **** for(i=0;i<8;i++)
408:../ds1302a/ds1302a.c **** {
409:../ds1302a/ds1302a.c **** PORTC&=~(1<<5); // PC5为底 为164提供时钟信号
410:../ds1302a/ds1302a.c **** if(x&(1<<(7-i)))//判断每位数据的电平,及小数点判断
411:../ds1302a/ds1302a.c **** PORTC|=(1<<4); //若为高着PC4输出高电平
412:../ds1302a/ds1302a.c **** else
413:../ds1302a/ds1302a.c **** PORTC&=~(1<<4); //若为低着输出低电平
414:../ds1302a/ds1302a.c **** PORTC|=(1<<5); //PC5 提供时钟信号
415:../ds1302a/ds1302a.c **** }
416:../ds1302a/ds1302a.c **** //PORTC|=((1<<0)|(1<<1)|(1<<2));
417:../ds1302a/ds1302a.c **** }
418:../ds1302a/ds1302a.c **** */
419:../ds1302a/ds1302a.c ****
420:../ds1302a/ds1302a.c **** void main()
421:../ds1302a/ds1302a.c **** {
1033 .LM144:
1034 rcall ds1302_write_time
1035 .LBB114:
1036 .LBB115:
422:../ds1302a/ds1302a.c **** DDRB=0x01; // 设置I/O口B.5为输出
1037 FBB16
1038 .LM143:
1039 02c4 81E0 rcall check_ds1302
423:../ds1302a/ds1302a.c **** PORTB=0x00;
1041 M142:
1042 rcall initialize_1302
424:../ds1302a/ds1302a.c **** //PORTC = 0xff; //m103 output only
425:../ds1302a/ds1302a.c **** //DDRC = 0xFF;
426:../ds1302a/ds1302a.c **** PORTD = 0xFF;
1044 B16
1045 .LM141:
1046 02ca 8FEF out 49-0x20,r24
427:../ds1302a/ds1302a.c **** DDRD = 0xff;
1048 40:
1049 ldi r24,lo8(-1)
1050 02ce 81BB out 50-0x20,r24
428:../ds1302a/ds1302a.c ****
429:../ds1302a/ds1302a.c **** initialize_1302();
1051 8,0,423,.LM139-.LFBB16
1052 .LM139:
1053 02d0 00D0 out 56-0x20,__zero_reg__
430:../ds1302a/ds1302a.c **** check_ds1302() ;
1054 abn 68,0,422,.LM138-.LFBB16
1055 .LM138:
1056 02d2 00D0 ldi r24,lo8(1)
431:../ds1302a/ds1302a.c **** ds1302_write_time();
1057 -.LFBB16
1058 .LM137:
1059 02d4 00D0 .LFBB16:
1060 /* prologue: frame size=0 */
1061 /* prologue end (size=0) */
1063 .LM138:
1064 ldi r24,lo8(1)
1065 out 55-0x20,r24
1067 .LM139:
84:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** "1: dec %0" "\n\t"
85:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** "brne 1b"
86:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** : "=r" (__count)
87:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** : "0" (__count)
88:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** );
89:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** }
90:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
91:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
92:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
93:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Delay loop using a 16-bit counter \c __count, so up to 65536
94:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** iterations are possible. (The value 65536 would have to be
95:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** passed as 0.) The loop executes four CPU cycles per iteration,
96:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** not including the overhead the compiler requires to setup the
97:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** counter register pair.
98:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
99:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
100:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** milliseconds can be achieved.
101:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** */
102:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** void
103:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
104:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** {
105:c:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** __asm__ volatile (
1068 ologue end (size=0) */
1070 02d6 88EC .LM138:
1071 02d8 90E0 ldi r24,lo8(1)
1072 out 55-0x20,r24
1074 02dc 01F4 .LM139:
1075 out 56-0x20,__zero_reg__
1077 .LM140:
1078 ldi r24,lo8(-1)
1079 out 50-0x20,r24
1081 .LM141:
1082 out 49-0x20,r24
432:../ds1302a/ds1302a.c **** _delay_us(100); // 等待 BC728x 完成复位
433:../ds1302a/ds1302a.c **** write728x(0x12,0x84); // 初始化BC728x为164模式,KMS=1
1084 40:
1085 ldi r24,lo8(-1)
1086 02de 64E8 out 50-0x20,r24
1088 02e2 00D0 .LM141:
1089 out 49-0x20,r24
434:../ds1302a/ds1302a.c ****
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -