📄 calendar.txt
字号:
00002a d003 BEQ |L5.52|
00002c 290a CMP r1,#0xa
00002e d001 BEQ |L5.52|
000030 290c CMP r1,#0xc
000032 d10a BNE |L5.74|
|L5.52|
;;;1069 {
;;;1070 if(date_s.day < 31)
000034 2a1f CMP r2,#0x1f
000036 d317 BCC |L5.104|
;;;1071 {
;;;1072 date_s.day++;
;;;1073 }
;;;1074 /* Date structure member: date_s.day = 31 */
;;;1075 else
;;;1076 {
;;;1077 if(date_s.month != 12)
000038 290c CMP r1,#0xc
00003a d001 BEQ |L5.64|
|L5.60|
;;;1078 {
;;;1079 date_s.month++;
00003c 7035 STRB r5,[r6,#0] ; date_s
;;;1080 date_s.day = 1;
00003e e024 B |L5.138|
|L5.64|
;;;1081 }
;;;1082 /* Date structure member: date_s.day = 31 & date_s.month =12 */
;;;1083 else
;;;1084 {
;;;1085 date_s.month = 1;
000040 7034 STRB r4,[r6,#0] ; date_s
;;;1086 date_s.day = 1;
000042 7074 STRB r4,[r6,#1] ; date_s
;;;1087 date_s.year++;
000044 1c40 ADDS r0,r0,#1
000046 8070 STRH r0,[r6,#2] ; date_s
000048 e020 B |L5.140|
|L5.74|
;;;1088 }
;;;1089 }
;;;1090 }
;;;1091 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|
;;;1092 date_s.month == 11)
000056 290b CMP r1,#0xb
000058 d102 BNE |L5.96|
|L5.90|
;;;1093 {
;;;1094 if(date_s.day < 30)
00005a 2a1e CMP r2,#0x1e
00005c d2ee BCS |L5.60|
00005e e003 B |L5.104|
|L5.96|
;;;1095 {
;;;1096 date_s.day++;
;;;1097 }
;;;1098 /* Date structure member: date_s.day = 30 */
;;;1099 else
;;;1100 {
;;;1101 date_s.month++;
;;;1102 date_s.day = 1;
;;;1103 }
;;;1104 }
;;;1105 else if(date_s.month == 2)
000060 2902 CMP r1,#2
000062 d113 BNE |L5.140|
;;;1106 {
;;;1107 if(date_s.day < 28)
000064 2a1c CMP r2,#0x1c
000066 d201 BCS |L5.108|
|L5.104|
;;;1108 {
;;;1109 date_s.day++;
000068 7073 STRB r3,[r6,#1] ; date_s
00006a e00f B |L5.140|
|L5.108|
;;;1110 }
;;;1111 else if(date_s.day == 28)
00006c d109 BNE |L5.130|
;;;1112 {
;;;1113 /* Leap year */
;;;1114 if(IsLeapYear(date_s.year))
00006e f7fff7ff BL IsLeapYear
000072 b118 CBZ r0,|L5.124|
;;;1115 {
;;;1116 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|
;;;1117 }
;;;1118 else
;;;1119 {
;;;1120 date_s.month++;
00007c 7830 LDRB r0,[r6,#0] ; date_s
00007e 1c40 ADDS r0,r0,#1
;;;1121 date_s.day = 1;
000080 e002 B |L5.136|
|L5.130|
;;;1122 }
;;;1123 }
;;;1124 else if(date_s.day == 29)
000082 2a1d CMP r2,#0x1d
000084 d102 BNE |L5.140|
;;;1125 {
;;;1126 date_s.month++;
000086 2003 MOVS r0,#3
|L5.136|
000088 7030 STRB r0,[r6,#0] ; date_s
|L5.138|
;;;1127 date_s.day = 1;
00008a 7074 STRB r4,[r6,#1] ; date_s
|L5.140|
;;;1128 }
;;;1129 }
;;;1130
;;;1131 BKP_WriteBackupRegister(BKP_DR2, date_s.year);
00008c 8871 LDRH r1,[r6,#2] ; date_s
00008e 2008 MOVS r0,#8
000090 f7fff7ff BL BKP_WriteBackupRegister
;;;1132
;;;1133 tmp = date_s.month << 8;
000094 7830 LDRB r0,[r6,#0] ; date_s
;;;1134 tmp |= date_s.day;
000096 7871 LDRB r1,[r6,#1] ; date_s
;;;1135 BKP_WriteBackupRegister(BKP_DR3, tmp);
000098 e8bde8bd POP {r4-r8,lr}
00009c ea41ea41 ORR r1,r1,r0,LSL #8 ;1134
0000a0 200c MOVS r0,#0xc
0000a2 f7fff7ff B.W BKP_WriteBackupRegister
;;;1136 }
;;;1137
ENDP
0000a6 0000 DCW 0x0000
|L5.168|
0000a8 00000010 DCD ||.data||+0x10
AREA ||i.Time_Regulate||, CODE, READONLY, ALIGN=2
Time_Regulate PROC
;;;251 u32 Time_Regulate(void)
;;;252 {
000000 e92de92d PUSH {r4-r8,lr}
;;;253 u32 Tmp_HH = 0, Tmp_MM = 0, Tmp_SS = 0;
;;;254
;;;255 /* Read time hours */
;;;256 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 f7fff7ff BL ReadDigit
000012 4604 MOV r4,r0
;;;257 if(Tmp_HH == 2)
000014 2802 CMP r0,#2
000016 d10d BNE |L6.52|
;;;258 {
;;;259 if(time_struct.hour_l > 3)
000018 7928 LDRB r0,[r5,#4] ; time_struct
00001a 2803 CMP r0,#3
00001c d901 BLS |L6.34|
;;;260 {
;;;261 time_struct.hour_l = 0;
00001e 2000 MOVS r0,#0
000020 7128 STRB r0,[r5,#4] ; time_struct
|L6.34|
;;;262 }
;;;263 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 f7fff7ff BL ReadDigit
00002e f100f100 ADD r4,r0,#0x14
000032 e009 B |L6.72|
|L6.52|
;;;264 }
;;;265 else
;;;266 {
;;;267 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 f7fff7ff BL ReadDigit
000040 eb04eb04 ADD r1,r4,r4,LSL #2
000044 eb00eb00 ADD r4,r0,r1,LSL #1
|L6.72|
;;;268 }
;;;269 /* Read time minutes */
;;;270 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 f7fff7ff BL ReadDigit
000054 4606 MOV r6,r0
;;;271 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 f7fff7ff BL ReadDigit
000062 eb06eb06 ADD r1,r6,r6,LSL #2
000066 eb00eb00 ADD r6,r0,r1,LSL #1
;;;272 /* Read time seconds */
;;;273 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 f7fff7ff BL ReadDigit
000076 4607 MOV r7,r0
;;;274 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 f7fff7ff BL ReadDigit
000084 eb07eb07 ADD r1,r7,r7,LSL #2
000088 eb00eb00 ADD r0,r0,r1,LSL #1
;;;275
;;;276 /* Return the value to store in RTC counter register */
;;;277 return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
00008c f44ff44f MOV r1,#0xe10
000090 434c MULS r4,r1,r4
000092 ebc6ebc6 RSB r1,r6,r6,LSL #4
000096 eb04eb04 ADD r1,r4,r1,LSL #2
00009a 4408 ADD r0,r0,r1
;;;278 }
00009c e8bde8bd POP {r4-r8,pc}
;;;279
ENDP
|L6.160|
0000a0 00000014 DCD ||.data||+0x14
AREA ||i.Time_Display||, CODE, READONLY, ALIGN=2
Time_Display PROC
;;;384 void Time_Display(u32 TimeVar)
;;;385 {
000000 e92de92d PUSH {r4-r10,lr}
;;;386 /* Display time hours */
;;;387 time_struct.hour_h=(u8)( TimeVar / 3600)/10;
000004 f44ff44f MOV r8,#0xe10
000008 fbb0fbb0 UDIV r6,r0,r8
00000c 4607 MOV r7,r0 ;385
00000e b2f0 UXTB r0,r6
000010 250a MOVS r5,#0xa
000012 fbb0fbb0 UDIV r0,r0,r5
000016 4c25 LDR r4,|L7.172|
;;;388 LCD_DisplayChar(Line8, 244,(time_struct.hour_h + 0x30));
000018 21f4 MOVS r1,#0xf4
00001a 7160 STRB r0,[r4,#5] ;387 ; time_struct
00001c b2c0 UXTB r0,r0
00001e 3030 ADDS r0,r0,#0x30
000020 b2c2 UXTB r2,r0
000022 20c0 MOVS r0,#0xc0
000024 f7fff7ff BL LCD_DisplayChar
;;;389 time_struct.hour_l=(u8)(((TimeVar)/3600)%10);
000028 fbb6fbb6 UDIV r0,r6,r5
00002c fb05fb05 MLS r0,r5,r0,r6
000030 7120 STRB r0,[r4,#4] ; time_struct
;;;390 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 f7fff7ff BL LCD_DisplayChar
;;;391
;;;392 /* Display time minutes */
;;;393 time_struct.min_h=(u8)(((TimeVar)%3600)/60)/10;
000040 fb08fb08 MLS r6,r8,r6,r7
000044 f04ff04f MOV r10,#0x3c
000048 fbb6fbb6 UDIV r7,r6,r10
00004c f007f007 AND r9,r7,#0xff
000050 fbb9fbb9 UDIV r8,r9,r5
;;;394 LCD_DisplayChar(Line8, 196,(time_struct.min_h + 0x30));
000054 f008f008 AND r0,r8,#0xff
000058 3030 ADDS r0,r0,#0x30
00005a b2c2 UXTB r2,r0
00005c f884f884 STRB r8,[r4,#3] ;393 ; time_struct
000060 21c4 MOVS r1,#0xc4
000062 20c0 MOVS r0,#0xc0
000064 f7fff7ff BL LCD_DisplayChar
;;;395 time_struct.min_l=(u8)(((TimeVar)%3600)/60)%10;
000068 fb05fb05 MLS r0,r5,r8,r9
00006c 70a0 STRB r0,[r4,#2] ; time_struct
;;;396 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 f7fff7ff BL LCD_DisplayChar
;;;397
;;;398 /* Display time seconds */
;;;399 time_struct.sec_h=(u8)(((TimeVar)%3600)%60)/10;
00007c fb0afb0a MLS r7,r10,r7,r6
000080 fbb7fbb7 UDIV r6,r7,r5
;;;400 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] ;399 ; time_struct
00008c 2196 MOVS r1,#0x96
00008e 20c0 MOVS r0,#0xc0
000090 f7fff7ff BL LCD_DisplayChar
;;;401 time_struct.sec_l=(u8)(((TimeVar)%3600)%60)%10;
000094 fb05fb05 MLS r0,r5,r6,r7
000098 7020 STRB r0,[r4,#0] ; time_struct
;;;402 LCD_DisplayChar(Line8, 134,(time_struct.sec_l + 0x30));
00009a e8bde8bd POP {r4-r10,lr}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -