📄 calendar.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\calendar.o --depend=.\Obj\calendar.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\source\calendar.c]
THUMB
AREA ||i.Alarm_Adjust||, CODE, READONLY, ALIGN=2
Alarm_Adjust PROC
;;;1599 *******************************************************************************/
;;;1600 void Alarm_Adjust(void)
000000 b570 PUSH {r4-r6,lr}
;;;1601 {
;;;1602 /* Disable the JoyStick interrupts */
;;;1603 IntExtOnOffConfig(DISABLE);
000002 2000 MOVS r0,#0
000004 f7fffffe BL IntExtOnOffConfig
|L1.8|
;;;1604
;;;1605 while(ReadKey() != NOKEY)
000008 f7fffffe BL ReadKey
00000c 2800 CMP r0,#0
00000e d1fb BNE |L1.8|
;;;1606 {
;;;1607 }
;;;1608
;;;1609 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000010 2101 MOVS r1,#1
000012 020c LSLS r4,r1,#8
000014 4620 MOV r0,r4
000016 f7fffffe BL RCC_AHBPeriphClockCmd
;;;1610 /* Clear the LCD screen */
;;;1611 LCD_Clear(White);
00001a f64f75ff MOV r5,#0xffff
00001e 4628 MOV r0,r5
000020 f7fffffe BL LCD_Clear
;;;1612
;;;1613 LCD_SetDisplayWindow(160, 223, 128, 128);
000024 2380 MOVS r3,#0x80
000026 461a MOV r2,r3
000028 21df MOVS r1,#0xdf
00002a 20a0 MOVS r0,#0xa0
00002c f7fffffe BL LCD_SetDisplayWindow
;;;1614
;;;1615 LCD_NORDisplay(ALARM_ICON);
000030 480a LDR r0,|L1.92|
000032 f7fffffe BL LCD_NORDisplay
;;;1616 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000036 2101 MOVS r1,#1
000038 4620 MOV r0,r4
00003a f7fffffe BL RCC_AHBPeriphClockCmd
;;;1617 /* Disable LCD Window mode */
;;;1618 LCD_WindowModeDisable();
00003e f7fffffe BL LCD_WindowModeDisable
;;;1619
;;;1620 Alarm_PreAdjust();
000042 f7fffffe BL Alarm_PreAdjust
;;;1621
;;;1622 /* Clear the LCD */
;;;1623 LCD_Clear(White);
000046 4628 MOV r0,r5
000048 f7fffffe BL LCD_Clear
;;;1624 /* Display the menu */
;;;1625 DisplayMenu();
00004c f7fffffe BL DisplayMenu
;;;1626 /* Enable the JoyStick interrupts */
;;;1627 IntExtOnOffConfig(ENABLE);
000050 e8bd4070 POP {r4-r6,lr}
000054 2001 MOVS r0,#1
000056 f7ffbffe B.W IntExtOnOffConfig
;;;1628 }
;;;1629
ENDP
00005a 0000 DCW 0x0000
|L1.92|
DCD 0x64fe0f54
AREA ||i.Alarm_Display||, CODE, READONLY, ALIGN=2
Alarm_Display PROC
;;;1636 *******************************************************************************/
;;;1637 void Alarm_Display(u32 AlarmVar)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;1638 {
;;;1639 /* Display alarm hours */
;;;1640 alarm_struct.hour_h=(u8)( AlarmVar / 3600)/10;
000004 f44f6861 MOV r8,#0xe10
000008 fbb0f6f8 UDIV r6,r0,r8
00000c 4607 MOV r7,r0 ;1638
00000e b2f0 UXTB r0,r6
000010 250a MOVS r5,#0xa
000012 fbb0f0f5 UDIV r0,r0,r5
000016 4c25 LDR r4,|L2.172|
;;;1641 LCD_DisplayChar(Line8, 244,(alarm_struct.hour_h + 0x30));
000018 21f4 MOVS r1,#0xf4
00001a 7160 STRB r0,[r4,#5] ;1640
00001c b2c0 UXTB r0,r0
00001e 3030 ADDS r0,r0,#0x30
000020 b2c2 UXTB r2,r0
000022 20c0 MOVS r0,#0xc0
000024 f7fffffe BL LCD_DisplayChar
;;;1642
;;;1643 alarm_struct.hour_l=(u8)(((AlarmVar)/3600)%10);
000028 fbb6f0f5 UDIV r0,r6,r5
00002c fb056010 MLS r0,r5,r0,r6
000030 7120 STRB r0,[r4,#4]
;;;1644 LCD_DisplayChar(Line8, 228,(alarm_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 f7fffffe BL LCD_DisplayChar
;;;1645
;;;1646 /* Display alarm minutes */
;;;1647 alarm_struct.min_h=(u8)(((AlarmVar)%3600)/60)/10;
000040 fb087716 MLS r7,r8,r6,r7
000044 f04f0a3c MOV r10,#0x3c
000048 fbb7f0fa UDIV r0,r7,r10
00004c 4680 MOV r8,r0
00004e b2c0 UXTB r0,r0
000050 fbb0f6f5 UDIV r6,r0,r5
000054 4681 MOV r9,r0
;;;1648 LCD_DisplayChar(Line8, 196,(alarm_struct.min_h + 0x30));
000056 b2f0 UXTB r0,r6
000058 3030 ADDS r0,r0,#0x30
00005a b2c2 UXTB r2,r0
00005c 70e6 STRB r6,[r4,#3] ;1647
00005e 21c4 MOVS r1,#0xc4
000060 20c0 MOVS r0,#0xc0
000062 f7fffffe BL LCD_DisplayChar
;;;1649
;;;1650 alarm_struct.min_l=(u8)(((AlarmVar)%3600)/60)%10;
000066 fb059016 MLS r0,r5,r6,r9
00006a 70a0 STRB r0,[r4,#2]
;;;1651 LCD_DisplayChar(Line8, 182,(alarm_struct.min_l + 0x30));
00006c b2c0 UXTB r0,r0
00006e 3030 ADDS r0,r0,#0x30
000070 b2c2 UXTB r2,r0
000072 21b6 MOVS r1,#0xb6
000074 20c0 MOVS r0,#0xc0
000076 f7fffffe BL LCD_DisplayChar
;;;1652
;;;1653 /* Display alarm seconds */
;;;1654 alarm_struct.sec_h=(u8)(((AlarmVar)%3600)%60)/10;
00007a fb0a7718 MLS r7,r10,r8,r7
00007e fbb7f6f5 UDIV r6,r7,r5
;;;1655 LCD_DisplayChar(Line8, 150,(alarm_struct.sec_h + 0x30));
000082 b2f0 UXTB r0,r6
000084 3030 ADDS r0,r0,#0x30
000086 b2c2 UXTB r2,r0
000088 7066 STRB r6,[r4,#1] ;1654
00008a 2196 MOVS r1,#0x96
00008c 20c0 MOVS r0,#0xc0
00008e f7fffffe BL LCD_DisplayChar
;;;1656
;;;1657 alarm_struct.sec_l=(u8)(((AlarmVar)%3600)%60)%10;
000092 fb057016 MLS r0,r5,r6,r7
000096 7020 STRB r0,[r4,#0]
;;;1658 LCD_DisplayChar(Line8, 134,(alarm_struct.sec_l + 0x30));
000098 e8bd47f0 POP {r4-r10,lr}
00009c b2c0 UXTB r0,r0
00009e 3030 ADDS r0,r0,#0x30
0000a0 b2c2 UXTB r2,r0
0000a2 2186 MOVS r1,#0x86
0000a4 20c0 MOVS r0,#0xc0
0000a6 f7ffbffe B.W LCD_DisplayChar
;;;1659 }
;;;1660
ENDP
0000aa 0000 DCW 0x0000
|L2.172|
DCD ||.data||+0x1a
AREA ||i.Alarm_PreAdjust||, CODE, READONLY, ALIGN=2
Alarm_PreAdjust PROC
;;;1545 *******************************************************************************/
;;;1546 void Alarm_PreAdjust(void)
000000 b510 PUSH {r4,lr}
;;;1547 {
;;;1548 u32 tmp = 0;
;;;1549
;;;1550 /* Set the LCD Back Color */
;;;1551 LCD_SetBackColor(Blue);
000002 201f MOVS r0,#0x1f
000004 f7fffffe BL LCD_SetBackColor
;;;1552
;;;1553 /* Set the LCD Text Color */
;;;1554 LCD_SetTextColor(White);
000008 f64f70ff MOV r0,#0xffff
00000c f7fffffe BL LCD_SetTextColor
;;;1555
;;;1556 if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
000010 2004 MOVS r0,#4
000012 f7fffffe BL BKP_ReadBackupRegister
000016 f5a04125 SUB r1,r0,#0xa500
00001a 39a5 SUBS r1,r1,#0xa5
00001c d00d BEQ |L3.58|
;;;1557 {
;;;1558 LCD_DisplayStringLine(Line8, "Time not configured ");
00001e a11d ADR r1,|L3.148|
000020 20c0 MOVS r0,#0xc0
000022 f7fffffe BL LCD_DisplayStringLine
;;;1559 LCD_DisplayStringLine(Line9, " Press SEL ");
000026 a121 ADR r1,|L3.172|
000028 20d8 MOVS r0,#0xd8
00002a f7fffffe BL LCD_DisplayStringLine
;;;1560 while(ReadKey() == NOKEY)
00002e bf00 NOP
|L3.48|
000030 f7fffffe BL ReadKey
000034 2800 CMP r0,#0
000036 d0fb BEQ |L3.48|
;;;1561 {
;;;1562 }
;;;1563 return;
;;;1564 }
;;;1565 /* Read the alarm value stored in the Backup register */
;;;1566 tmp = BKP_ReadBackupRegister(BKP_DR6);
;;;1567 tmp |= BKP_ReadBackupRegister(BKP_DR7) << 16;
;;;1568
;;;1569 /* Clear Line8 */
;;;1570 LCD_ClearLine(Line8);
;;;1571
;;;1572 /* Display time separators ":" on Line4 */
;;;1573 LCD_DisplayChar(Line8, 212, ':');
;;;1574 LCD_DisplayChar(Line8, 166, ':');
;;;1575
;;;1576 /* Display the alarm value */
;;;1577 Alarm_Display(tmp);
;;;1578 /* Store new alarm value */
;;;1579 tmp = Alarm_Regulate();
;;;1580
;;;1581 /* Wait until last write operation on RTC registers has finished */
;;;1582 RTC_WaitForLastTask();
;;;1583 /* Set RTC Alarm register with the new value */
;;;1584 RTC_SetAlarm(tmp);
;;;1585 /* Wait until last write operation on RTC registers has finished */
;;;1586 RTC_WaitForLastTask();
;;;1587
;;;1588 /* Save the Alarm value in the Backup register */
;;;1589 BKP_WriteBackupRegister(BKP_DR6, (tmp & 0x0000FFFF));
;;;1590 BKP_WriteBackupRegister(BKP_DR7, (tmp >> 16));
;;;1591 }
000038 bd10 POP {r4,pc}
|L3.58|
00003a 2018 MOVS r0,#0x18 ;1566
00003c f7fffffe BL BKP_ReadBackupRegister
000040 4604 MOV r4,r0 ;1566
000042 201c MOVS r0,#0x1c ;1567
000044 f7fffffe BL BKP_ReadBackupRegister
000048 ea444400 ORR r4,r4,r0,LSL #16 ;1567
00004c 20c0 MOVS r0,#0xc0 ;1570
00004e f7fffffe BL LCD_ClearLine
000052 223a MOVS r2,#0x3a ;1573
000054 21d4 MOVS r1,#0xd4 ;1573
000056 20c0 MOVS r0,#0xc0 ;1573
000058 f7fffffe BL LCD_DisplayChar
00005c 223a MOVS r2,#0x3a ;1574
00005e 21a6 MOVS r1,#0xa6 ;1574
000060 20c0 MOVS r0,#0xc0 ;1574
000062 f7fffffe BL LCD_DisplayChar
000066 4620 MOV r0,r4 ;1577
000068 f7fffffe BL Alarm_Display
00006c f7fffffe BL Alarm_Regulate
000070 4604 MOV r4,r0 ;1579
000072 f7fffffe BL RTC_WaitForLastTask
000076 4620 MOV r0,r4 ;1584
000078 f7fffffe BL RTC_SetAlarm
00007c f7fffffe BL RTC_WaitForLastTask
000080 b2a1 UXTH r1,r4 ;1589
000082 2018 MOVS r0,#0x18 ;1589
000084 f7fffffe BL BKP_WriteBackupRegister
000088 0c21 LSRS r1,r4,#16 ;1590
00008a e8bd4010 POP {r4,lr} ;1590
00008e 201c MOVS r0,#0x1c ;1590
000090 f7ffbffe B.W BKP_WriteBackupRegister
;;;1592
ENDP
|L3.148|
000094 54696d65206e6f7420636f6e666967757265642000 DCB "Time not configured ",0
0000a9 00 DCB 0
0000aa 00 DCB 0
0000ab 00 DCB 0
|L3.172|
0000ac 202020202050726573732053454c20202020202000 DCB " Press SEL ",0
0000c1 00 DCB 0
0000c2 00 DCB 0
0000c3 00 DCB 0
AREA ||i.Alarm_Regulate||, CODE, READONLY, ALIGN=2
Alarm_Regulate PROC
;;;1506 *******************************************************************************/
;;;1507 u32 Alarm_Regulate(void)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;1508 {
;;;1509 u32 Alarm_HH = 0, Alarm_MM = 0, Alarm_SS = 0;
;;;1510
;;;1511 /* Read alarm hours */
;;;1512 Alarm_HH = ReadDigit(244, alarm_struct.hour_h, 0x2, 0x0);
000004 4d26 LDR r5,|L4.160|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -