📄 calendar.txt
字号:
00009e b2c0 UXTB r0,r0
0000a0 3030 ADDS r0,r0,#0x30
0000a2 b2c2 UXTB r2,r0
0000a4 2186 MOVS r1,#0x86
0000a6 20c0 MOVS r0,#0xc0
0000a8 f7fff7ff B.W LCD_DisplayChar
;;;403 }
;;;404
ENDP
|L7.172|
0000ac 00000014 DCD ||.data||+0x14
AREA ||i.RegulateDay||, CODE, READONLY, ALIGN=2
RegulateDay PROC
;;;1271 static void RegulateDay(void)
;;;1272 {
000000 e92de92d PUSH {r4-r12,lr}
;;;1273 u32 tmpValue = 0;
;;;1274 u32 MyKey = 0, ValueMax = 0;
;;;1275 u32 firstdaycolumn = 0, lastdaycolumn = 0, lastdayline = 0;
;;;1276
;;;1277 if(date_s.month == 2)
000004 4b85 LDR r3,|L8.540|
000006 7818 LDRB r0,[r3,#0] ; date_s
000008 f103f103 ADD r4,r3,#0xf
00000c 2802 CMP r0,#2
00000e d106 BNE |L8.30|
;;;1278 {
;;;1279 if(IsLeapYear(date_s.year))
000010 8858 LDRH r0,[r3,#2] ; date_s
000012 f7fff7ff BL IsLeapYear
000016 b108 CBZ r0,|L8.28|
;;;1280 ValueMax = 29;
000018 251d MOVS r5,#0x1d
00001a e002 B |L8.34|
|L8.28|
;;;1281 else
;;;1282 ValueMax = (MonLen[date_s.month - 1] - 1);
00001c 7818 LDRB r0,[r3,#0] ; date_s
|L8.30|
;;;1283 }
;;;1284 else
;;;1285 {
;;;1286 ValueMax = (MonLen[date_s.month - 1] - 1);
00001e 5d05 LDRB r5,[r0,r4]
000020 1e6d SUBS r5,r5,#1
|L8.34|
;;;1287 }
;;;1288
;;;1289 firstdaycolumn = 0x13F - (0x30 * dn);
000022 f8dff8df LDR r9,|L8.540|
000026 f240f240 MOV r1,#0x13f
00002a f1a9f1a9 SUB r9,r9,#0x10
00002e f8d9f8d9 LDR r0,[r9,#8] ; dn
;;;1290
;;;1291 lastdaycolumn = ValueMax - (7 - dn);
;;;1292 lastdayline = lastdaycolumn / 7;
;;;1293 lastdaycolumn %= 7;
000032 f240f240 MOV r11,#0x16f
000036 eba0eba0 SUB r2,r0,r0,LSL #2 ;1289
00003a f1c0f1c0 RSB r0,r0,#7 ;1291
00003e eb01eb01 ADD r8,r1,r2,LSL #4 ;1289
000042 1a28 SUBS r0,r5,r0 ;1291
000044 2207 MOVS r2,#7 ;1292
000046 fbb0fbb0 UDIV r1,r0,r2 ;1292
00004a fb02fb02 MLS r0,r2,r1,r0
00004e f04ff04f MOV r10,#0x48
;;;1294
;;;1295 if(lastdaycolumn == 0)
000052 b928 CBNZ r0,|L8.96|
;;;1296 {
;;;1297 lastdayline = Line3 + (lastdayline * 24);
000054 eb01eb01 ADD r0,r1,r1,LSL #1
000058 eb0aeb0a ADD r7,r10,r0,LSL #3
;;;1298 lastdaycolumn = 31;
00005c 261f MOVS r6,#0x1f
00005e e008 B |L8.114|
|L8.96|
;;;1299 }
;;;1300 else
;;;1301 {
;;;1302 lastdayline = Line4 + (lastdayline * 24);
000060 eb01eb01 ADD r1,r1,r1,LSL #1
000064 2260 MOVS r2,#0x60
;;;1303 lastdaycolumn = 0x13F -(0x30 * (lastdaycolumn - 1));
000066 eba0eba0 SUB r0,r0,r0,LSL #2
00006a eb02eb02 ADD r7,r2,r1,LSL #3 ;1302
00006e eb0beb0b ADD r6,r11,r0,LSL #4
|L8.114|
;;;1304 }
;;;1305
;;;1306
;;;1307 /* Initialize tmpValue */
;;;1308 tmpValue = date_s.day;
000072 486a LDR r0,|L8.540|
000074 f890f890 LDRB.W r4,[r0,#1]
|L8.120|
;;;1309
;;;1310 /* Endless loop */
;;;1311 while(1)
;;;1312 {
;;;1313 /* Check which key is pressed */
;;;1314 MyKey = ReadKey();
000078 f7fff7ff BL ReadKey
;;;1315
;;;1316 /* If "RIGHT" pushbutton is pressed */
;;;1317 if(MyKey == RIGHT)
00007c 2802 CMP r0,#2
00007e d134 BNE |L8.234|
;;;1318 {
;;;1319 LCD_SetTextColor(White);
000080 f64ff64f MOV r0,#0xffff
000084 f7fff7ff BL LCD_SetTextColor
;;;1320 LCD_DrawRect(dayline, daycolumn, 24, 32);
000088 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
00008c 2320 MOVS r3,#0x20
00008e 2218 MOVS r2,#0x18
000090 f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
000094 b2c0 UXTB r0,r0
000096 f7fff7ff BL LCD_DrawRect
;;;1321
;;;1322 /* Increase the value of the digit */
;;;1323 if(tmpValue == ValueMax)
00009a 42ac CMP r4,r5
00009c d106 BNE |L8.172|
;;;1324 {
;;;1325 tmpValue = 0;
;;;1326 dayline = Line3;
00009e f8a9f8a9 STRH r10,[r9,#2] ; dayline
;;;1327 daycolumn = firstdaycolumn + 48;
0000a2 f108f108 ADD r0,r8,#0x30
0000a6 2400 MOVS r4,#0 ;1325
0000a8 f8a9f8a9 STRH r0,[r9,#0] ; daycolumn
|L8.172|
;;;1328 }
;;;1329
;;;1330 if(daycolumn == 31)
0000ac f8b9f8b9 LDRH r0,[r9,#0] ; daycolumn
0000b0 281f CMP r0,#0x1f
0000b2 d106 BNE |L8.194|
;;;1331 {
;;;1332 daycolumn = 367;
0000b4 f8a9f8a9 STRH r11,[r9,#0] ; daycolumn
;;;1333 dayline += 24;
0000b8 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0000bc 3018 ADDS r0,r0,#0x18
0000be f8a9f8a9 STRH r0,[r9,#2] ; dayline
|L8.194|
;;;1334 }
;;;1335
;;;1336 daycolumn -= 48;
0000c2 f8b9f8b9 LDRH r0,[r9,#0] ; daycolumn
0000c6 3830 SUBS r0,r0,#0x30
0000c8 f8a9f8a9 STRH r0,[r9,#0] ; daycolumn
;;;1337 LCD_SetTextColor(Red);
0000cc f44ff44f MOV r0,#0xf800
0000d0 f7fff7ff BL LCD_SetTextColor
;;;1338 LCD_DrawRect(dayline, daycolumn, 24, 32);
0000d4 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0000d8 2320 MOVS r3,#0x20
0000da 2218 MOVS r2,#0x18
0000dc f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
0000e0 b2c0 UXTB r0,r0
0000e2 f7fff7ff BL LCD_DrawRect
;;;1339 tmpValue++;
0000e6 1c64 ADDS r4,r4,#1
0000e8 e7c6 B |L8.120|
|L8.234|
;;;1340 }
;;;1341 /* If "LEFT" pushbutton is pressed */
;;;1342 if(MyKey == LEFT)
0000ea 2803 CMP r0,#3
0000ec d138 BNE |L8.352|
;;;1343 {
;;;1344 LCD_SetTextColor(White);
0000ee f64ff64f MOV r0,#0xffff
0000f2 f7fff7ff BL LCD_SetTextColor
;;;1345 LCD_DrawRect(dayline, daycolumn, 24, 32);
0000f6 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0000fa 2320 MOVS r3,#0x20
0000fc 2218 MOVS r2,#0x18
0000fe f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
000102 b2c0 UXTB r0,r0
000104 f7fff7ff BL LCD_DrawRect
;;;1346
;;;1347 /* Decrease the value of the digit */
;;;1348 if(tmpValue == 1)
000108 2c01 CMP r4,#1
00010a d106 BNE |L8.282|
;;;1349 {
;;;1350 tmpValue = ValueMax + 1;
;;;1351 dayline = lastdayline;
00010c f8a9f8a9 STRH r7,[r9,#2] ; dayline
;;;1352 daycolumn = lastdaycolumn - 48;
000110 f1a6f1a6 SUB r0,r6,#0x30
000114 1c6c ADDS r4,r5,#1 ;1350
000116 f8a9f8a9 STRH r0,[r9,#0] ; daycolumn
|L8.282|
;;;1353 }
;;;1354
;;;1355 if(daycolumn == 319)
00011a f8b9f8b9 LDRH r0,[r9,#0] ; daycolumn
00011e f5a0f5a0 SUB r1,r0,#0x100
000122 393f SUBS r1,r1,#0x3f
000124 d108 BNE |L8.312|
;;;1356 {
;;;1357 daycolumn = 0xFFEF;
000126 f64ff64f MOV r0,#0xffef
00012a f8a9f8a9 STRH r0,[r9,#0] ; daycolumn
;;;1358 dayline -= 24;
00012e f8b9f8b9 LDRH r0,[r9,#2] ; dayline
000132 3818 SUBS r0,r0,#0x18
000134 f8a9f8a9 STRH r0,[r9,#2] ; dayline
|L8.312|
;;;1359 }
;;;1360
;;;1361 daycolumn += 48;
000138 f8b9f8b9 LDRH r0,[r9,#0] ; daycolumn
00013c 3030 ADDS r0,r0,#0x30
00013e f8a9f8a9 STRH r0,[r9,#0] ; daycolumn
;;;1362 LCD_SetTextColor(Red);
000142 f44ff44f MOV r0,#0xf800
000146 f7fff7ff BL LCD_SetTextColor
;;;1363 LCD_DrawRect(dayline, daycolumn, 24, 32);
00014a f8b9f8b9 LDRH r0,[r9,#2] ; dayline
00014e 2320 MOVS r3,#0x20
000150 2218 MOVS r2,#0x18
000152 f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
000156 b2c0 UXTB r0,r0
000158 f7fff7ff BL LCD_DrawRect
;;;1364 tmpValue--;
00015c 1e64 SUBS r4,r4,#1
|L8.350|
00015e e78b B |L8.120|
|L8.352|
;;;1365 }
;;;1366 /* If "UP" pushbutton is pressed */
;;;1367 if(MyKey == UP)
000160 2804 CMP r0,#4
000162 d130 BNE |L8.454|
;;;1368 {
;;;1369 LCD_SetTextColor(White);
000164 f64ff64f MOV r0,#0xffff
000168 f7fff7ff BL LCD_SetTextColor
;;;1370 LCD_DrawRect(dayline, daycolumn, 24, 32);
00016c f8b9f8b9 LDRH r0,[r9,#2] ; dayline
000170 2320 MOVS r3,#0x20
000172 2218 MOVS r2,#0x18
000174 f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
000178 b2c0 UXTB r0,r0
00017a f7fff7ff BL LCD_DrawRect
;;;1371
;;;1372 if(tmpValue == 1)
00017e 2c01 CMP r4,#1
000180 d105 BNE |L8.398|
;;;1373 {
;;;1374 dayline = lastdayline;
000182 f8a9f8a9 STRH r7,[r9,#2] ; dayline
;;;1375 daycolumn = lastdaycolumn;
000186 f8a9f8a9 STRH r6,[r9,#0] ; daycolumn
;;;1376 tmpValue = ValueMax;
00018a 462c MOV r4,r5
00018c e00d B |L8.426|
|L8.398|
;;;1377 }
;;;1378 else if(tmpValue < 8)
00018e 2c08 CMP r4,#8
000190 d205 BCS |L8.414|
;;;1379 {
;;;1380 tmpValue = 1;
;;;1381 dayline = Line3;
000192 f8a9f8a9 STRH r10,[r9,#2] ; dayline
000196 2401 MOVS r4,#1 ;1380
;;;1382 daycolumn = firstdaycolumn;
000198 f8a9f8a9 STRH r8,[r9,#0] ; daycolumn
00019c e005 B |L8.426|
|L8.414|
;;;1383 }
;;;1384 else
;;;1385 {
;;;1386 dayline -= 24;
00019e f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0001a2 3818 SUBS r0,r0,#0x18
0001a4 f8a9f8a9 STRH r0,[r9,#2] ; dayline
;;;1387 tmpValue -= 7;
0001a8 1fe4 SUBS r4,r4,#7
|L8.426|
;;;1388 }
;;;1389 LCD_SetTextColor(Red);
0001aa f44ff44f MOV r0,#0xf800
0001ae f7fff7ff BL LCD_SetTextColor
;;;1390 LCD_DrawRect(dayline, daycolumn, 24, 32);
0001b2 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0001b6 2320 MOVS r3,#0x20
0001b8 2218 MOVS r2,#0x18
0001ba f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
0001be b2c0 UXTB r0,r0
0001c0 f7fff7ff BL LCD_DrawRect
0001c4 e758 B |L8.120|
|L8.454|
;;;1391 }
;;;1392 /* If "DOWN" pushbutton is pressed */
;;;1393 if(MyKey == DOWN)
0001c6 2805 CMP r0,#5
0001c8 d122 BNE |L8.528|
;;;1394 {
;;;1395 LCD_SetTextColor(White);
0001ca f64ff64f MOV r0,#0xffff
0001ce f7fff7ff BL LCD_SetTextColor
;;;1396 LCD_DrawRect(dayline, daycolumn, 24, 32);
0001d2 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0001d6 2320 MOVS r3,#0x20
0001d8 2218 MOVS r2,#0x18
0001da f8b9f8b9 LDRH r1,[r9,#0] ; daycolumn
0001de b2c0 UXTB r0,r0
0001e0 f7fff7ff BL LCD_DrawRect
;;;1397 if(tmpValue == ValueMax)
0001e4 42ac CMP r4,r5
0001e6 d105 BNE |L8.500|
;;;1398 {
;;;1399 dayline = Line3;
0001e8 f8a9f8a9 STRH r10,[r9,#2] ; dayline
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -