📄 calendar.txt
字号:
000038 a158 ADR r1,|L6.412|
00003a 20c0 MOVS r0,#0xc0
00003c f7fffffe BL LCD_DisplayStringLine
;;;165 LCD_DisplayStringLine(Line9, "Abort: Press Any Key");
000040 a15c ADR r1,|L6.436|
000042 20d8 MOVS r0,#0xd8
000044 f7fffffe BL LCD_DisplayStringLine
|L6.72|
;;;166
;;;167 while(1)
;;;168 {
;;;169 pressedkey = ReadKey();
000048 f7fffffe BL ReadKey
;;;170
;;;171 if(pressedkey == SEL)
00004c 2801 CMP r0,#1
00004e d103 BNE |L6.88|
;;;172 {
;;;173 /* Adjust Time */
;;;174 Time_PreAdjust();
000050 e8bd41f0 POP {r4-r8,lr}
000054 f7ffbffe B.W Time_PreAdjust
|L6.88|
;;;175 return;
;;;176 }
;;;177 else if (pressedkey != NOKEY)
000058 2800 CMP r0,#0
00005a d0f5 BEQ |L6.72|
|L6.92|
;;;178 {
;;;179 return;
;;;180 }
;;;181 }
;;;182 }
;;;183 else
;;;184 {
;;;185 /* PWR and BKP clocks selection ------------------------------------------*/
;;;186 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
;;;187
;;;188 /* Allow access to BKP Domain */
;;;189 PWR_BackupAccessCmd(ENABLE);
;;;190
;;;191 /* Wait until last write operation on RTC registers has finished */
;;;192 RTC_WaitForLastTask();
;;;193
;;;194 /* Enable the RTC Second */
;;;195 RTC_ITConfig(RTC_IT_SEC, ENABLE);
;;;196
;;;197 /* Wait until last write operation on RTC registers has finished */
;;;198 RTC_WaitForLastTask();
;;;199
;;;200 /* Initialize Date structure */
;;;201 date_s.month = (BKP_ReadBackupRegister(BKP_DR3) & 0xFF00) >> 8;
;;;202 date_s.day = (BKP_ReadBackupRegister(BKP_DR3) & 0x00FF);
;;;203 date_s.year = BKP_ReadBackupRegister(BKP_DR2);
;;;204 daycolumn = BKP_ReadBackupRegister(BKP_DR4);
;;;205 dayline = BKP_ReadBackupRegister(BKP_DR5);
;;;206
;;;207 if(RTC_GetCounter() / 86399 != 0)
;;;208 {
;;;209 for(i = 0; i < (RTC_GetCounter() / 86399); i++)
;;;210 {
;;;211 Date_Update();
;;;212 }
;;;213
;;;214 RTC_SetCounter(RTC_GetCounter() % 86399);
;;;215
;;;216 LCD_DisplayStringLine(Line8, " Days elapsed ");
;;;217 tmp = i/100;
;;;218 LCD_DisplayChar(Line8, 276,(tmp + 0x30));
;;;219 tmp = ((i%100)/10);
;;;220 LCD_DisplayChar(Line8, 260,(tmp + 0x30));
;;;221 tmp = ((i%100)%10);
;;;222 LCD_DisplayChar(Line8, 244,(tmp + 0x30));
;;;223 LCD_DisplayStringLine(Line9, " Press SEL ");
;;;224
;;;225 while(ReadKey() != SEL)
;;;226 {
;;;227 }
;;;228
;;;229 LCD_ClearLine(Line8);
;;;230 LCD_ClearLine(Line9);
;;;231 LCD_DisplayStringLine(Line9, "Push SEL to Continue");
;;;232 Date_Display(date_s.year, date_s.month, date_s.day);
;;;233
;;;234 while(ReadKey() != SEL)
;;;235 {
;;;236 }
;;;237
;;;238 BKP_WriteBackupRegister(BKP_DR4, daycolumn);
;;;239 BKP_WriteBackupRegister(BKP_DR5, dayline);
;;;240 }
;;;241 }
;;;242 }
00005c e8bd81f0 POP {r4-r8,pc}
|L6.96|
000060 2101 MOVS r1,#1 ;186
000062 f04f50c0 MOV r0,#0x18000000 ;186
000066 f7fffffe BL RCC_APB1PeriphClockCmd
00006a 2001 MOVS r0,#1 ;189
00006c f7fffffe BL PWR_BackupAccessCmd
000070 f7fffffe BL RTC_WaitForLastTask
000074 2101 MOVS r1,#1 ;195
000076 4608 MOV r0,r1 ;195
000078 f7fffffe BL RTC_ITConfig
00007c f7fffffe BL RTC_WaitForLastTask
000080 200c MOVS r0,#0xc ;201
000082 f7fffffe BL BKP_ReadBackupRegister
000086 0a00 LSRS r0,r0,#8 ;201
000088 7030 STRB r0,[r6,#0] ;201
00008a 200c MOVS r0,#0xc ;202
00008c f7fffffe BL BKP_ReadBackupRegister
000090 7070 STRB r0,[r6,#1] ;202
000092 2008 MOVS r0,#8 ;203
000094 f7fffffe BL BKP_ReadBackupRegister
000098 8070 STRH r0,[r6,#2] ;203
00009a 2010 MOVS r0,#0x10 ;204
00009c f7fffffe BL BKP_ReadBackupRegister
0000a0 f8df80dc LDR r8,|L6.384|
0000a4 f1a80810 SUB r8,r8,#0x10 ;204
0000a8 f8a80000 STRH r0,[r8,#0] ;204
0000ac 4645 MOV r5,r8 ;204
0000ae 2014 MOVS r0,#0x14 ;205
0000b0 f7fffffe BL BKP_ReadBackupRegister
0000b4 8068 STRH r0,[r5,#2] ;205
0000b6 f7fffffe BL RTC_GetCounter
0000ba 4d44 LDR r5,|L6.460|
0000bc 42a8 CMP r0,r5 ;207
0000be d3cd BCC |L6.92|
0000c0 e003 B |L6.202|
0000c2 bf00 NOP ;211
|L6.196|
0000c4 f7fffffe BL Date_Update
0000c8 1c64 ADDS r4,r4,#1 ;209
|L6.202|
0000ca f7fffffe BL RTC_GetCounter
0000ce fbb0f0f5 UDIV r0,r0,r5 ;209
0000d2 42a0 CMP r0,r4 ;209
0000d4 d8f6 BHI |L6.196|
0000d6 f7fffffe BL RTC_GetCounter
0000da fbb0f1f5 UDIV r1,r0,r5 ;214
0000de fb050011 MLS r0,r5,r1,r0 ;214
0000e2 f7fffffe BL RTC_SetCounter
0000e6 a13a ADR r1,|L6.464|
0000e8 20c0 MOVS r0,#0xc0 ;216
0000ea f7fffffe BL LCD_DisplayStringLine
0000ee 2764 MOVS r7,#0x64 ;217
0000f0 fbb4f5f7 UDIV r5,r4,r7 ;217
0000f4 f1050030 ADD r0,r5,#0x30 ;218
0000f8 b2c2 UXTB r2,r0 ;218
0000fa f44f718a MOV r1,#0x114 ;218
0000fe 20c0 MOVS r0,#0xc0 ;218
000100 f7fffffe BL LCD_DisplayChar
000104 fb074515 MLS r5,r7,r5,r4 ;219
000108 270a MOVS r7,#0xa ;219
00010a fbb5f4f7 UDIV r4,r5,r7 ;219
00010e f1040030 ADD r0,r4,#0x30 ;220
000112 b2c2 UXTB r2,r0 ;220
000114 f44f7182 MOV r1,#0x104 ;220
000118 20c0 MOVS r0,#0xc0 ;220
00011a f7fffffe BL LCD_DisplayChar
00011e fb075014 MLS r0,r7,r4,r5 ;221
000122 3030 ADDS r0,r0,#0x30 ;222
000124 b2c2 UXTB r2,r0 ;222
000126 21f4 MOVS r1,#0xf4 ;222
000128 20c0 MOVS r0,#0xc0 ;222
00012a f7fffffe BL LCD_DisplayChar
00012e a12e ADR r1,|L6.488|
000130 20d8 MOVS r0,#0xd8 ;223
000132 f7fffffe BL LCD_DisplayStringLine
000136 bf00 NOP ;225
|L6.312|
000138 f7fffffe BL ReadKey
00013c 2801 CMP r0,#1 ;225
00013e d1fb BNE |L6.312|
000140 20c0 MOVS r0,#0xc0 ;229
000142 f7fffffe BL LCD_ClearLine
000146 20d8 MOVS r0,#0xd8 ;230
000148 f7fffffe BL LCD_ClearLine
00014c a12c ADR r1,|L6.512|
00014e 20d8 MOVS r0,#0xd8 ;231
000150 f7fffffe BL LCD_DisplayStringLine
000154 7872 LDRB r2,[r6,#1] ;232 ; date_s
000156 7831 LDRB r1,[r6,#0] ;232 ; date_s
000158 8870 LDRH r0,[r6,#2] ;232 ; date_s
00015a f7fffffe BL Date_Display
00015e bf00 NOP ;234
|L6.352|
000160 f7fffffe BL ReadKey
000164 2801 CMP r0,#1 ;234
000166 d1fb BNE |L6.352|
000168 4644 MOV r4,r8 ;238
00016a f8b81000 LDRH r1,[r8,#0] ;238 ; daycolumn
00016e 2010 MOVS r0,#0x10 ;238
000170 f7fffffe BL BKP_WriteBackupRegister
000174 8861 LDRH r1,[r4,#2] ;239 ; dayline
000176 e8bd41f0 POP {r4-r8,lr} ;239
00017a 2014 MOVS r0,#0x14 ;239
00017c f7ffbffe B.W BKP_WriteBackupRegister
;;;243
ENDP
|L6.384|
DCD ||.data||+0x10
|L6.388|
000184 54696d6520616e64204461746520436f6e66696700 DCB "Time and Date Config",0
000199 00 DCB 0
00019a 00 DCB 0
00019b 00 DCB 0
|L6.412|
00019c 53656c6563743a2050726573732053454c20202000 DCB "Select: Press SEL ",0
0001b1 00 DCB 0
0001b2 00 DCB 0
0001b3 00 DCB 0
|L6.436|
0001b4 41626f72743a20507265737320416e79204b657900 DCB "Abort: Press Any Key",0
0001c9 00 DCB 0
0001ca 00 DCB 0
0001cb 00 DCB 0
|L6.460|
DCD 0x0001517f
|L6.464|
0001d0 202020202020204461797320656c61707365642000 DCB " Days elapsed ",0
0001e5 00 DCB 0
0001e6 00 DCB 0
0001e7 00 DCB 0
|L6.488|
0001e8 20202020202050726573732053454c202020202000 DCB " Press SEL ",0
0001fd 00 DCB 0
0001fe 00 DCB 0
0001ff 00 DCB 0
|L6.512|
000200 507573682053454c20746f20436f6e74696e756500 DCB "Push SEL to Continue",0
000215 00 DCB 0
000216 00 DCB 0
000217 00 DCB 0
AREA ||i.Date_Adjust||, CODE, READONLY, ALIGN=1
Date_Adjust PROC
;;;583 *******************************************************************************/
;;;584 void Date_Adjust(void)
000000 b510 PUSH {r4,lr}
;;;585 {
;;;586 IntExtOnOffConfig(DISABLE);
000002 2000 MOVS r0,#0
000004 f7fffffe BL IntExtOnOffConfig
|L7.8|
;;;587
;;;588 while(ReadKey() != NOKEY)
000008 f7fffffe BL ReadKey
00000c 2800 CMP r0,#0
00000e d1fb BNE |L7.8|
;;;589 {
;;;590 }
;;;591 /* Preadjust the date */
;;;592 Date_PreAdjust();
000010 f7fffffe BL Date_PreAdjust
;;;593 /* Clear the LCD */
;;;594 LCD_Clear(White);
000014 f64f70ff MOV r0,#0xffff
000018 f7fffffe BL LCD_Clear
;;;595 /* Display the menu */
;;;596 DisplayMenu();
00001c f7fffffe BL DisplayMenu
;;;597 /* Enable the JoyStick interrupts */
;;;598 IntExtOnOffConfig(ENABLE);
000020 e8bd4010 POP {r4,lr}
000024 2001 MOVS r0,#1
000026 f7ffbffe B.W IntExtOnOffConfig
;;;599 }
;;;600
ENDP
AREA ||i.Date_Display||, CODE, READONLY, ALIGN=2
Date_Display PROC
;;;607 *******************************************************************************/
;;;608 void Date_Display(u16 nYear, u8 nMonth, u8 nDay)
000000 e92d4ff7 PUSH {r0-r2,r4-r11,lr}
;;;609 {
000004 4681 MOV r9,r0
000006 460d MOV r5,r1
;;;610 u32 mline = 0, mcolumn = 319, month = 0;
;;;611 u32 monthlength = 0;
;;;612
;;;613 if(nMonth == 2)
000008 2902 CMP r1,#2
00000a d168 BNE |L8.222|
;;;614 {
;;;615 if(IsLeapYear(nYear))
00000c 4648 MOV r0,r9
00000e f7fffffe BL IsLeapYear
000012 b108 CBZ r0,|L8.24|
;;;616 {
;;;617 monthlength = 30;
000014 201e MOVS r0,#0x1e
000016 e001 B |L8.28|
|L8.24|
;;;618 }
;;;619 else
;;;620 {
;;;621 monthlength = MonLen[nMonth - 1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -