📄 calendar.txt
字号:
00002e d001 BEQ |L5.52|
000030 290c CMP r1,#0xc
000032 d10a BNE |L5.74|
|L5.52|
;;;1078 {
;;;1079 if(date_s.day < 31)
000034 2a1f CMP r2,#0x1f
000036 d317 BCC |L5.104|
;;;1080 {
;;;1081 date_s.day++;
;;;1082 }
;;;1083 /* Date structure member: date_s.day = 31 */
;;;1084 else
;;;1085 {
;;;1086 if(date_s.month != 12)
000038 290c CMP r1,#0xc
00003a d001 BEQ |L5.64|
|L5.60|
;;;1087 {
;;;1088 date_s.month++;
00003c 7035 STRB r5,[r6,#0] ; date_s
;;;1089 date_s.day = 1;
00003e e024 B |L5.138|
|L5.64|
;;;1090 }
;;;1091 /* Date structure member: date_s.day = 31 & date_s.month =12 */
;;;1092 else
;;;1093 {
;;;1094 date_s.month = 1;
000040 7034 STRB r4,[r6,#0] ; date_s
;;;1095 date_s.day = 1;
000042 7074 STRB r4,[r6,#1] ; date_s
;;;1096 date_s.year++;
000044 1c40 ADDS r0,r0,#1
000046 8070 STRH r0,[r6,#2] ; date_s
000048 e020 B |L5.140|
|L5.74|
;;;1097 }
;;;1098 }
;;;1099 }
;;;1100 else if(date_s.month == 4 || date_s.month == 6 || date_s.month == 9 ||
00004a 2904 CMP r1,#4
00004c d005 BEQ |L5.90|
00004e 2906 CMP r1,#6
000050 d003 BEQ |L5.90|
000052 2909 CMP r1,#9
000054 d001 BEQ |L5.90|
;;;1101 date_s.month == 11)
000056 290b CMP r1,#0xb
000058 d102 BNE |L5.96|
|L5.90|
;;;1102 {
;;;1103 if(date_s.day < 30)
00005a 2a1e CMP r2,#0x1e
00005c d2ee BCS |L5.60|
00005e e003 B |L5.104|
|L5.96|
;;;1104 {
;;;1105 date_s.day++;
;;;1106 }
;;;1107 /* Date structure member: date_s.day = 30 */
;;;1108 else
;;;1109 {
;;;1110 date_s.month++;
;;;1111 date_s.day = 1;
;;;1112 }
;;;1113 }
;;;1114 else if(date_s.month == 2)
000060 2902 CMP r1,#2
000062 d113 BNE |L5.140|
;;;1115 {
;;;1116 if(date_s.day < 28)
000064 2a1c CMP r2,#0x1c
000066 d201 BCS |L5.108|
|L5.104|
;;;1117 {
;;;1118 date_s.day++;
000068 7073 STRB r3,[r6,#1] ; date_s
00006a e00f B |L5.140|
|L5.108|
;;;1119 }
;;;1120 else if(date_s.day == 28)
00006c d109 BNE |L5.130|
;;;1121 {
;;;1122 /* Leap year */
;;;1123 if(IsLeapYear(date_s.year))
00006e f7fffffe BL IsLeapYear
000072 b118 CBZ r0,|L5.124|
;;;1124 {
;;;1125 date_s.day++;
000074 7870 LDRB r0,[r6,#1] ; date_s
000076 1c40 ADDS r0,r0,#1
000078 7070 STRB r0,[r6,#1] ; date_s
00007a e007 B |L5.140|
|L5.124|
;;;1126 }
;;;1127 else
;;;1128 {
;;;1129 date_s.month++;
00007c 7830 LDRB r0,[r6,#0] ; date_s
00007e 1c40 ADDS r0,r0,#1
;;;1130 date_s.day = 1;
000080 e002 B |L5.136|
|L5.130|
;;;1131 }
;;;1132 }
;;;1133 else if(date_s.day == 29)
000082 2a1d CMP r2,#0x1d
000084 d102 BNE |L5.140|
;;;1134 {
;;;1135 date_s.month++;
000086 2003 MOVS r0,#3
|L5.136|
000088 7030 STRB r0,[r6,#0] ; date_s
|L5.138|
;;;1136 date_s.day = 1;
00008a 7074 STRB r4,[r6,#1] ; date_s
|L5.140|
;;;1137 }
;;;1138 }
;;;1139
;;;1140 BKP_WriteBackupRegister(BKP_DR2, date_s.year);
00008c 8871 LDRH r1,[r6,#2] ; date_s
00008e 2008 MOVS r0,#8
000090 f7fffffe BL BKP_WriteBackupRegister
;;;1141
;;;1142 tmp = date_s.month << 8;
000094 7830 LDRB r0,[r6,#0] ; date_s
;;;1143 tmp |= date_s.day;
000096 7871 LDRB r1,[r6,#1] ; date_s
;;;1144 BKP_WriteBackupRegister(BKP_DR3, tmp);
000098 e8bd41f0 POP {r4-r8,lr}
00009c ea412100 ORR r1,r1,r0,LSL #8 ;1143
0000a0 200c MOVS r0,#0xc
0000a2 f7ffbffe B.W BKP_WriteBackupRegister
;;;1145 }
;;;1146
ENDP
0000a6 0000 DCW 0x0000
|L5.168|
0000a8 00000010 DCD ||.data||+0x10
AREA ||i.Time_Regulate||, CODE, READONLY, ALIGN=2
Time_Regulate PROC
;;;252 u32 Time_Regulate(void)
;;;253 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;254 u32 Tmp_HH = 0, Tmp_MM = 0, Tmp_SS = 0;
;;;255
;;;256 /* Read time hours */
;;;257 Tmp_HH = ReadDigit(244, time_struct.hour_h, 0x2, 0x0);
000004 4d26 LDR r5,|L6.160|
000006 2300 MOVS r3,#0
000008 7969 LDRB r1,[r5,#5] ; time_struct
00000a 2202 MOVS r2,#2
00000c 20f4 MOVS r0,#0xf4
00000e f7fffffe BL ReadDigit
000012 4604 MOV r4,r0
;;;258 if(Tmp_HH == 2)
000014 2802 CMP r0,#2
000016 d10d BNE |L6.52|
;;;259 {
;;;260 if(time_struct.hour_l > 3)
000018 7928 LDRB r0,[r5,#4] ; time_struct
00001a 2803 CMP r0,#3
00001c d901 BLS |L6.34|
;;;261 {
;;;262 time_struct.hour_l = 0;
00001e 2000 MOVS r0,#0
000020 7128 STRB r0,[r5,#4] ; time_struct
|L6.34|
;;;263 }
;;;264 Tmp_HH = Tmp_HH*10 + ReadDigit(228, time_struct.hour_l, 0x3, 0x0);
000022 7929 LDRB r1,[r5,#4] ; time_struct
000024 2300 MOVS r3,#0
000026 2203 MOVS r2,#3
000028 20e4 MOVS r0,#0xe4
00002a f7fffffe BL ReadDigit
00002e f1000414 ADD r4,r0,#0x14
000032 e009 B |L6.72|
|L6.52|
;;;265 }
;;;266 else
;;;267 {
;;;268 Tmp_HH = Tmp_HH*10 + ReadDigit(228, time_struct.hour_l, 0x9, 0x0);
000034 7929 LDRB r1,[r5,#4] ; time_struct
000036 2300 MOVS r3,#0
000038 2209 MOVS r2,#9
00003a 20e4 MOVS r0,#0xe4
00003c f7fffffe BL ReadDigit
000040 eb040184 ADD r1,r4,r4,LSL #2
000044 eb000441 ADD r4,r0,r1,LSL #1
|L6.72|
;;;269 }
;;;270 /* Read time minutes */
;;;271 Tmp_MM = ReadDigit(196, time_struct.min_h,5, 0x0);
000048 78e9 LDRB r1,[r5,#3] ; time_struct
00004a 2300 MOVS r3,#0
00004c 2205 MOVS r2,#5
00004e 20c4 MOVS r0,#0xc4
000050 f7fffffe BL ReadDigit
000054 4606 MOV r6,r0
;;;272 Tmp_MM = Tmp_MM*10 + ReadDigit(182, time_struct.min_l, 0x9, 0x0);
000056 78a9 LDRB r1,[r5,#2] ; time_struct
000058 2300 MOVS r3,#0
00005a 2209 MOVS r2,#9
00005c 20b6 MOVS r0,#0xb6
00005e f7fffffe BL ReadDigit
000062 eb060186 ADD r1,r6,r6,LSL #2
000066 eb000641 ADD r6,r0,r1,LSL #1
;;;273 /* Read time seconds */
;;;274 Tmp_SS = ReadDigit(150, time_struct.sec_h,5, 0x0);
00006a 7869 LDRB r1,[r5,#1] ; time_struct
00006c 2300 MOVS r3,#0
00006e 2205 MOVS r2,#5
000070 2096 MOVS r0,#0x96
000072 f7fffffe BL ReadDigit
000076 4607 MOV r7,r0
;;;275 Tmp_SS = Tmp_SS*10 + ReadDigit(134, time_struct.sec_l, 0x9, 0x0);
000078 7829 LDRB r1,[r5,#0] ; time_struct
00007a 2300 MOVS r3,#0
00007c 2209 MOVS r2,#9
00007e 2086 MOVS r0,#0x86
000080 f7fffffe BL ReadDigit
000084 eb070187 ADD r1,r7,r7,LSL #2
000088 eb000041 ADD r0,r0,r1,LSL #1
;;;276
;;;277 /* Return the value to store in RTC counter register */
;;;278 return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
00008c f44f6161 MOV r1,#0xe10
000090 434c MULS r4,r1,r4
000092 ebc61106 RSB r1,r6,r6,LSL #4
000096 eb040181 ADD r1,r4,r1,LSL #2
00009a 4408 ADD r0,r0,r1
;;;279 }
00009c e8bd81f0 POP {r4-r8,pc}
;;;280
ENDP
|L6.160|
0000a0 00000014 DCD ||.data||+0x14
AREA ||i.Time_Display||, CODE, READONLY, ALIGN=2
Time_Display PROC
;;;389 void Time_Display(u32 TimeVar)
;;;390 {
000000 e92d47f0 PUSH {r4-r10,lr}
;;;391 /* Display time hours */
;;;392 time_struct.hour_h=(u8)( TimeVar / 3600)/10;
000004 f44f6861 MOV r8,#0xe10
000008 fbb0f6f8 UDIV r6,r0,r8
00000c 4607 MOV r7,r0 ;390
00000e b2f0 UXTB r0,r6
000010 250a MOVS r5,#0xa
000012 fbb0f0f5 UDIV r0,r0,r5
000016 4c25 LDR r4,|L7.172|
;;;393 LCD_DisplayChar(Line8, 244,(time_struct.hour_h + 0x30));
000018 21f4 MOVS r1,#0xf4
00001a 7160 STRB r0,[r4,#5] ;392 ; time_struct
00001c b2c0 UXTB r0,r0
00001e 3030 ADDS r0,r0,#0x30
000020 b2c2 UXTB r2,r0
000022 20c0 MOVS r0,#0xc0
000024 f7fffffe BL LCD_DisplayChar
;;;394 time_struct.hour_l=(u8)(((TimeVar)/3600)%10);
000028 fbb6f0f5 UDIV r0,r6,r5
00002c fb056010 MLS r0,r5,r0,r6
000030 7120 STRB r0,[r4,#4] ; time_struct
;;;395 LCD_DisplayChar(Line8, 228,(time_struct.hour_l + 0x30));
000032 b2c0 UXTB r0,r0
000034 3030 ADDS r0,r0,#0x30
000036 b2c2 UXTB r2,r0
000038 21e4 MOVS r1,#0xe4
00003a 20c0 MOVS r0,#0xc0
00003c f7fffffe BL LCD_DisplayChar
;;;396
;;;397 /* Display time minutes */
;;;398 time_struct.min_h=(u8)(((TimeVar)%3600)/60)/10;
000040 fb087616 MLS r6,r8,r6,r7
000044 f04f0a3c MOV r10,#0x3c
000048 fbb6f7fa UDIV r7,r6,r10
00004c f00709ff AND r9,r7,#0xff
000050 fbb9f8f5 UDIV r8,r9,r5
;;;399 LCD_DisplayChar(Line8, 196,(time_struct.min_h + 0x30));
000054 f00800ff AND r0,r8,#0xff
000058 3030 ADDS r0,r0,#0x30
00005a b2c2 UXTB r2,r0
00005c f8848003 STRB r8,[r4,#3] ;398 ; time_struct
000060 21c4 MOVS r1,#0xc4
000062 20c0 MOVS r0,#0xc0
000064 f7fffffe BL LCD_DisplayChar
;;;400 time_struct.min_l=(u8)(((TimeVar)%3600)/60)%10;
000068 fb059018 MLS r0,r5,r8,r9
00006c 70a0 STRB r0,[r4,#2] ; time_struct
;;;401 LCD_DisplayChar(Line8, 182,(time_struct.min_l + 0x30));
00006e b2c0 UXTB r0,r0
000070 3030 ADDS r0,r0,#0x30
000072 b2c2 UXTB r2,r0
000074 21b6 MOVS r1,#0xb6
000076 20c0 MOVS r0,#0xc0
000078 f7fffffe BL LCD_DisplayChar
;;;402
;;;403 /* Display time seconds */
;;;404 time_struct.sec_h=(u8)(((TimeVar)%3600)%60)/10;
00007c fb0a6717 MLS r7,r10,r7,r6
000080 fbb7f6f5 UDIV r6,r7,r5
;;;405 LCD_DisplayChar(Line8, 150,(time_struct.sec_h + 0x30));
000084 b2f0 UXTB r0,r6
000086 3030 ADDS r0,r0,#0x30
000088 b2c2 UXTB r2,r0
00008a 7066 STRB r6,[r4,#1] ;404 ; time_struct
00008c 2196 MOVS r1,#0x96
00008e 20c0 MOVS r0,#0xc0
000090 f7fffffe BL LCD_DisplayChar
;;;406 time_struct.sec_l=(u8)(((TimeVar)%3600)%60)%10;
000094 fb057016 MLS r0,r5,r6,r7
000098 7020 STRB r0,[r4,#0] ; time_struct
;;;407 LCD_DisplayChar(Line8, 134,(time_struct.sec_l + 0x30));
00009a e8bd47f0 POP {r4-r10,lr}
00009e b2c0 UXTB r0,r0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -