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