📄 calendar.txt
字号:
;;;1400 daycolumn = firstdaycolumn;
0001ec f8a9f8a9 STRH r8,[r9,#0] ; daycolumn
;;;1401 tmpValue = 1;
0001f0 2401 MOVS r4,#1
0001f2 e005 B |L8.512|
|L8.500|
;;;1402 }
;;;1403 else
;;;1404 {
;;;1405 dayline += 24;
0001f4 f8b9f8b9 LDRH r0,[r9,#2] ; dayline
0001f8 3018 ADDS r0,r0,#0x18
0001fa f8a9f8a9 STRH r0,[r9,#2] ; dayline
;;;1406 tmpValue += 7;
0001fe 1de4 ADDS r4,r4,#7
|L8.512|
;;;1407 }
;;;1408 if(tmpValue > ValueMax)
000200 42ac CMP r4,r5
000202 d9d2 BLS |L8.426|
;;;1409 {
;;;1410 tmpValue = ValueMax;
;;;1411 dayline = lastdayline;
000204 f8a9f8a9 STRH r7,[r9,#2] ; dayline
000208 462c MOV r4,r5 ;1410
;;;1412 daycolumn = lastdaycolumn;
00020a f8a9f8a9 STRH r6,[r9,#0] ; daycolumn
00020e e7cc B |L8.426|
|L8.528|
;;;1413 }
;;;1414 LCD_SetTextColor(Red);
;;;1415 LCD_DrawRect(dayline, daycolumn, 24, 32);
;;;1416 }
;;;1417 /* If "SEL" pushbutton is pressed */
;;;1418 if(MyKey == SEL)
000210 2801 CMP r0,#1
000212 d1a4 BNE |L8.350|
;;;1419 {
;;;1420 /* Return the digit value and exit */
;;;1421 date_s.day = tmpValue;
000214 4801 LDR r0,|L8.540|
000216 7044 STRB r4,[r0,#1] ; date_s
;;;1422 return;
;;;1423 }
;;;1424 }
;;;1425 }
000218 e8bde8bd POP {r4-r12,pc}
;;;1426
ENDP
|L8.540|
00021c 00000010 DCD ||.data||+0x10
AREA ||i.RegulateYear||, CODE, READONLY, ALIGN=2
RegulateYear PROC
;;;1145 static void RegulateYear(void)
;;;1146 {
000000 b570 PUSH {r4-r6,lr}
;;;1147 u32 tmpValue = 0;
;;;1148 u32 MyKey = 0;
;;;1149
;;;1150 /* Initialize tmpValue */
;;;1151 tmpValue = date_s.year;
000002 4d22 LDR r5,|L9.140|
000004 f8b5f8b5 LDRH.W r4,[r5,#2]
|L9.8|
;;;1152
;;;1153 /* Endless loop */
;;;1154 while(1)
;;;1155 {
;;;1156 /* Check which key is pressed */
;;;1157 MyKey = ReadKey();
000008 f7fff7ff BL ReadKey
;;;1158
;;;1159 /* If "UP" pushbutton is pressed */
;;;1160 if(MyKey == UP)
00000c 2804 CMP r0,#4
00000e d112 BNE |L9.54|
;;;1161 {
;;;1162 /* Increase the value of the digit */
;;;1163 if(tmpValue == 2099)
000010 f5a4f5a4 SUB r0,r4,#0x800
000014 3833 SUBS r0,r0,#0x33
000016 d101 BNE |L9.28|
;;;1164 {
;;;1165 tmpValue = 1874;
000018 f240f240 MOV r4,#0x752
|L9.28|
;;;1166 }
;;;1167 LCD_ClearLine(Line3);
00001c 2048 MOVS r0,#0x48
00001e f7fff7ff BL LCD_ClearLine
;;;1168 LCD_ClearLine(Line7);
000022 20a8 MOVS r0,#0xa8
000024 f7fff7ff BL LCD_ClearLine
;;;1169 LCD_ClearLine(Line8);
000028 20c0 MOVS r0,#0xc0
00002a f7fff7ff BL LCD_ClearLine
;;;1170 Date_Display(++tmpValue, date_s.month, date_s.day);
00002e 786a LDRB r2,[r5,#1] ; date_s
000030 7829 LDRB r1,[r5,#0] ; date_s
000032 1c64 ADDS r4,r4,#1
000034 e013 B |L9.94|
|L9.54|
;;;1171 }
;;;1172 /* If "DOWN" pushbutton is pressed */
;;;1173 if(MyKey == DOWN)
000036 2805 CMP r0,#5
000038 d115 BNE |L9.102|
;;;1174 {
;;;1175 /* Decrease the value of the digit */
;;;1176 if(tmpValue == 1875)
00003a f5a4f5a4 SUB r0,r4,#0x700
00003e 3853 SUBS r0,r0,#0x53
000040 d101 BNE |L9.70|
;;;1177 {
;;;1178 tmpValue = 2100;
000042 f640f640 MOV r4,#0x834
|L9.70|
;;;1179 }
;;;1180 LCD_ClearLine(Line3);
000046 2048 MOVS r0,#0x48
000048 f7fff7ff BL LCD_ClearLine
;;;1181 LCD_ClearLine(Line7);
00004c 20a8 MOVS r0,#0xa8
00004e f7fff7ff BL LCD_ClearLine
;;;1182 LCD_ClearLine(Line8);
000052 20c0 MOVS r0,#0xc0
000054 f7fff7ff BL LCD_ClearLine
;;;1183 /* Display new value */
;;;1184 Date_Display(--tmpValue, date_s.month, date_s.day);
000058 786a LDRB r2,[r5,#1] ; date_s
00005a 7829 LDRB r1,[r5,#0] ; date_s
00005c 1e64 SUBS r4,r4,#1
|L9.94|
00005e b2a0 UXTH r0,r4 ;1170
000060 f7fff7ff BL Date_Display
000064 e7d0 B |L9.8|
|L9.102|
;;;1185 }
;;;1186 /* If "SEL" pushbutton is pressed */
;;;1187 if(MyKey == SEL)
000066 2801 CMP r0,#1
000068 d1ce BNE |L9.8|
;;;1188 {
;;;1189 LCD_ClearLine(Line3);
00006a 2048 MOVS r0,#0x48
00006c f7fff7ff BL LCD_ClearLine
;;;1190 LCD_ClearLine(Line7);
000070 20a8 MOVS r0,#0xa8
000072 f7fff7ff BL LCD_ClearLine
;;;1191 LCD_ClearLine(Line8);
000076 20c0 MOVS r0,#0xc0
000078 f7fff7ff BL LCD_ClearLine
;;;1192 /* Display new value */
;;;1193 Date_Display(tmpValue, date_s.month, date_s.day);
00007c b2a0 UXTH r0,r4
00007e 786a LDRB r2,[r5,#1] ; date_s
000080 7829 LDRB r1,[r5,#0] ; date_s
000082 4604 MOV r4,r0
000084 f7fff7ff BL Date_Display
;;;1194 /* Return the digit value and exit */
;;;1195 date_s.year = tmpValue;
000088 806c STRH r4,[r5,#2] ; date_s
;;;1196 return;
;;;1197 }
;;;1198 }
;;;1199 }
00008a bd70 POP {r4-r6,pc}
;;;1200
ENDP
|L9.140|
00008c 00000010 DCD ||.data||+0x10
AREA ||i.Date_Regulate||, CODE, READONLY, ALIGN=2
Date_Regulate PROC
;;;507 void Date_Regulate(void)
;;;508 {
000000 b510 PUSH {r4,lr}
;;;509 LCD_DisplayStringLine(Line9, " UP/DOWN: Set Year ");
000002 a10a ADR r1,|L10.44|
000004 20d8 MOVS r0,#0xd8
000006 f7fff7ff BL LCD_DisplayStringLine
;;;510 /* Regulate year */
;;;511 RegulateYear();
00000a f7fff7ff BL RegulateYear
;;;512
;;;513 LCD_DisplayStringLine(Line9, " UP/DOWN: Set Month ");
00000e a10d ADR r1,|L10.68|
000010 20d8 MOVS r0,#0xd8
000012 f7fff7ff BL LCD_DisplayStringLine
;;;514 /* Regulate the month */
;;;515 RegulateMonth();
000016 f7fff7ff BL RegulateMonth
;;;516
;;;517 LCD_DisplayStringLine(Line9, "Set Day- SEL To exit");
00001a a110 ADR r1,|L10.92|
00001c 20d8 MOVS r0,#0xd8
00001e f7fff7ff BL LCD_DisplayStringLine
;;;518 /* Regulate day */
;;;519 RegulateDay();
000022 e8bde8bd POP {r4,lr}
000026 f7fff7ff B.W RegulateDay
;;;520 }
;;;521
ENDP
00002a 0000 DCW 0x0000
|L10.44|
00002c 2055502f DCB " UP/"
000030 444f574e DCB "DOWN"
000034 3a205365 DCB ": Se"
000038 74205965 DCB "t Ye"
00003c 61722020 DCB "ar "
000040 00000000 DCB "\0\0\0\0"
|L10.68|
000044 2055502f DCB " UP/"
000048 444f574e DCB "DOWN"
00004c 3a205365 DCB ": Se"
000050 74204d6f DCB "t Mo"
000054 6e746820 DCB "nth "
000058 00000000 DCB "\0\0\0\0"
|L10.92|
00005c 53657420 DCB "Set "
000060 4461792d DCB "Day-"
000064 2053454c DCB " SEL"
000068 20546f20 DCB " To "
00006c 65786974 DCB "exit"
000070 00000000 DCB "\0\0\0\0"
AREA ||i.Date_PreAdjust||, CODE, READONLY, ALIGN=2
Date_PreAdjust PROC
;;;529 static void Date_PreAdjust(void)
;;;530 {
000000 b510 PUSH {r4,lr}
;;;531 u32 tmp = 0, pressedkey = 0;
;;;532
;;;533 /* Clear the LCD */
;;;534 LCD_Clear(White);
000002 f64ff64f MOV r4,#0xffff
000006 4620 MOV r0,r4
000008 f7fff7ff BL LCD_Clear
;;;535 LCD_SetBackColor(Blue);
00000c 201f MOVS r0,#0x1f
00000e f7fff7ff BL LCD_SetBackColor
;;;536 LCD_SetTextColor(White);
000012 4620 MOV r0,r4
000014 f7fff7ff BL LCD_SetTextColor
;;;537
;;;538 if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
000018 2004 MOVS r0,#4
00001a f7fff7ff BL BKP_ReadBackupRegister
00001e f5a0f5a0 SUB r1,r0,#0xa500
000022 39a5 SUBS r1,r1,#0xa5
000024 d01a BEQ |L11.92|
;;;539 {
;;;540 LCD_DisplayStringLine(Line7, "Time and Date Config");
000026 a11c ADR r1,|L11.152|
000028 20a8 MOVS r0,#0xa8
00002a f7fff7ff BL LCD_DisplayStringLine
;;;541 LCD_DisplayStringLine(Line8, "Select: Press SEL ");
00002e a120 ADR r1,|L11.176|
000030 20c0 MOVS r0,#0xc0
000032 f7fff7ff BL LCD_DisplayStringLine
;;;542 LCD_DisplayStringLine(Line9, "Abort: Press Any Key");
000036 a124 ADR r1,|L11.200|
000038 20d8 MOVS r0,#0xd8
00003a f7fff7ff BL LCD_DisplayStringLine
;;;543
;;;544 while(1)
;;;545 {
;;;546 pressedkey = ReadKey();
00003e bf00 NOP
|L11.64|
000040 f7fff7ff BL ReadKey
;;;547 if(pressedkey == SEL)
000044 2801 CMP r0,#1
000046 d106 BNE |L11.86|
;;;548 {
;;;549 /* Adjust Time */
;;;550 Time_PreAdjust();
000048 f7fff7ff BL Time_PreAdjust
;;;551 /* Clear the LCD */
;;;552 LCD_Clear(White);
00004c 4620 MOV r0,r4
00004e e8bde8bd POP {r4,lr}
000052 f7fff7ff B.W LCD_Clear
|L11.86|
;;;553 return;
;;;554 }
;;;555 else if (pressedkey != NOKEY)
000056 2800 CMP r0,#0
000058 d0f2 BEQ |L11.64|
;;;556 {
;;;557 return;
;;;558 }
;;;559 }
;;;560 }
;;;561 else
;;;562 {
;;;563 /* Display the current date */
;;;564 Date_Display(date_s.year, date_s.month, date_s.day);
;;;565
;;;566 /* Change the current date */
;;;567 Date_Regulate();
;;;568 BKP_WriteBackupRegister(BKP_DR2, date_s.year);
;;;569 tmp = date_s.month << 8;
;;;570 tmp |= date_s.day;
;;;571 BKP_WriteBackupRegister(BKP_DR3, tmp);
;;;572 BKP_WriteBackupRegister(BKP_DR4, daycolumn);
;;;573 BKP_WriteBackupRegister(BKP_DR5, dayline);
;;;574 }
;;;575 }
00005a bd10 POP {r4,pc}
|L11.92|
00005c 4c20 LDR r4,|L11.224|
00005e 7862 LDRB r2,[r4,#1] ;564 ; date_s
000060 7821 LDRB r1,[r4,#0] ;564 ; date_s
000062 8860 LDRH r0,[r4,#2] ;564 ; date_s
000064 f7fff7ff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -