📄 calendar.txt
字号:
000006 2300 MOVS r3,#0
000008 7969 LDRB r1,[r5,#5] ; alarm_struct
00000a 2202 MOVS r2,#2
00000c 20f4 MOVS r0,#0xf4
00000e f7fffffe BL ReadDigit
000012 4604 MOV r4,r0
;;;1513
;;;1514 if(Alarm_HH == 0x2)
000014 2802 CMP r0,#2
000016 d10d BNE |L4.52|
;;;1515 {
;;;1516 if(alarm_struct.hour_l > 0x3)
000018 7928 LDRB r0,[r5,#4] ; alarm_struct
00001a 2803 CMP r0,#3
00001c d901 BLS |L4.34|
;;;1517 {
;;;1518 alarm_struct.hour_l = 0x0;
00001e 2000 MOVS r0,#0
000020 7128 STRB r0,[r5,#4]
|L4.34|
;;;1519 }
;;;1520 Alarm_HH = Alarm_HH*10 + ReadDigit(228, alarm_struct.hour_l, 0x3, 0x0);
000022 7929 LDRB r1,[r5,#4] ; alarm_struct
000024 2300 MOVS r3,#0
000026 2203 MOVS r2,#3
000028 20e4 MOVS r0,#0xe4
00002a f7fffffe BL ReadDigit
00002e f1000414 ADD r4,r0,#0x14
000032 e009 B |L4.72|
|L4.52|
;;;1521 }
;;;1522 else
;;;1523 {
;;;1524 Alarm_HH = Alarm_HH*10 + ReadDigit(228, alarm_struct.hour_l, 0x9, 0x0);
000034 7929 LDRB r1,[r5,#4] ; alarm_struct
000036 2300 MOVS r3,#0
000038 2209 MOVS r2,#9
00003a 20e4 MOVS r0,#0xe4
00003c f7fffffe BL ReadDigit
000040 eb040184 ADD r1,r4,r4,LSL #2
000044 eb000441 ADD r4,r0,r1,LSL #1
|L4.72|
;;;1525 }
;;;1526
;;;1527 /* Read alarm minutes */
;;;1528 Alarm_MM = ReadDigit(196, alarm_struct.min_h, 0x5, 0x0);
000048 78e9 LDRB r1,[r5,#3] ; alarm_struct
00004a 2300 MOVS r3,#0
00004c 2205 MOVS r2,#5
00004e 20c4 MOVS r0,#0xc4
000050 f7fffffe BL ReadDigit
000054 4606 MOV r6,r0
;;;1529 Alarm_MM = Alarm_MM*10 + ReadDigit(182, alarm_struct.min_l, 0x9, 0x0);
000056 78a9 LDRB r1,[r5,#2] ; alarm_struct
000058 2300 MOVS r3,#0
00005a 2209 MOVS r2,#9
00005c 20b6 MOVS r0,#0xb6
00005e f7fffffe BL ReadDigit
000062 eb060186 ADD r1,r6,r6,LSL #2
000066 eb000741 ADD r7,r0,r1,LSL #1
;;;1530
;;;1531 /* Read alarm seconds */
;;;1532 Alarm_SS = ReadDigit(150, alarm_struct.sec_h, 0x5, 0x0);
00006a 7869 LDRB r1,[r5,#1] ; alarm_struct
00006c 2300 MOVS r3,#0
00006e 2205 MOVS r2,#5
000070 2096 MOVS r0,#0x96
000072 f7fffffe BL ReadDigit
000076 4606 MOV r6,r0
;;;1533 Alarm_SS = Alarm_SS*10 + ReadDigit(134, alarm_struct.sec_l, 0x9, 0x0);
000078 7829 LDRB r1,[r5,#0] ; alarm_struct
00007a 2300 MOVS r3,#0
00007c 2209 MOVS r2,#9
00007e 2086 MOVS r0,#0x86
000080 f7fffffe BL ReadDigit
000084 eb060186 ADD r1,r6,r6,LSL #2
000088 eb000041 ADD r0,r0,r1,LSL #1
;;;1534
;;;1535 /* Return the alarm value to store in the RTC Alarm register */
;;;1536 return((Alarm_HH*3600 + Alarm_MM*60 + Alarm_SS));
00008c f44f6161 MOV r1,#0xe10
000090 434c MULS r4,r1,r4
000092 ebc71107 RSB r1,r7,r7,LSL #4
000096 eb040181 ADD r1,r4,r1,LSL #2
00009a 4408 ADD r0,r0,r1
;;;1537 }
00009c e8bd81f0 POP {r4-r8,pc}
;;;1538
ENDP
|L4.160|
DCD ||.data||+0x1a
AREA ||i.Alarm_Show||, CODE, READONLY, ALIGN=2
Alarm_Show PROC
;;;1667 *******************************************************************************/
;;;1668 void Alarm_Show(void)
000000 b570 PUSH {r4-r6,lr}
;;;1669 {
;;;1670 u32 tmp = 0;
;;;1671
;;;1672 /* Disable the JoyStick interrupts */
;;;1673 IntExtOnOffConfig(DISABLE);
000002 2000 MOVS r0,#0
000004 f7fffffe BL IntExtOnOffConfig
|L5.8|
;;;1674
;;;1675 while(ReadKey() != NOKEY)
000008 f7fffffe BL ReadKey
00000c 2800 CMP r0,#0
00000e d1fb BNE |L5.8|
;;;1676 {
;;;1677 }
;;;1678
;;;1679 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000010 2101 MOVS r1,#1
000012 020d LSLS r5,r1,#8
000014 4628 MOV r0,r5
000016 f7fffffe BL RCC_AHBPeriphClockCmd
;;;1680 /* Clear the LCD screen */
;;;1681 LCD_Clear(White);
00001a f64f74ff MOV r4,#0xffff
00001e 4620 MOV r0,r4
000020 f7fffffe BL LCD_Clear
;;;1682
;;;1683 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
;;;1684
;;;1685 LCD_NORDisplay(ALARM_ICON);
000030 4826 LDR r0,|L5.204|
000032 f7fffffe BL LCD_NORDisplay
;;;1686 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000036 2101 MOVS r1,#1
000038 4628 MOV r0,r5
00003a f7fffffe BL RCC_AHBPeriphClockCmd
;;;1687 /* Disable LCD Window mode */
;;;1688 LCD_WindowModeDisable();
00003e f7fffffe BL LCD_WindowModeDisable
;;;1689
;;;1690 /* Set the LCD Back Color */
;;;1691 LCD_SetBackColor(Blue);
000042 201f MOVS r0,#0x1f
000044 f7fffffe BL LCD_SetBackColor
;;;1692
;;;1693 /* Set the LCD Text Color */
;;;1694 LCD_SetTextColor(White);
000048 4620 MOV r0,r4
00004a f7fffffe BL LCD_SetTextColor
;;;1695
;;;1696 if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
00004e 2004 MOVS r0,#4
000050 f7fffffe BL BKP_ReadBackupRegister
000054 f5a04125 SUB r1,r0,#0xa500
000058 39a5 SUBS r1,r1,#0xa5
00005a d00c BEQ |L5.118|
;;;1697 {
;;;1698 LCD_DisplayStringLine(Line8, "Time not configured ");
00005c a11c ADR r1,|L5.208|
00005e 20c0 MOVS r0,#0xc0
000060 f7fffffe BL LCD_DisplayStringLine
;;;1699 LCD_DisplayStringLine(Line9, " Press SEL ");
000064 a120 ADR r1,|L5.232|
000066 20d8 MOVS r0,#0xd8
000068 f7fffffe BL LCD_DisplayStringLine
|L5.108|
;;;1700 while(ReadKey() == NOKEY)
00006c f7fffffe BL ReadKey
000070 2800 CMP r0,#0
000072 d0fb BEQ |L5.108|
000074 e020 B |L5.184|
|L5.118|
;;;1701 {
;;;1702 }
;;;1703 /* Clear the LCD */
;;;1704 LCD_Clear(White);
;;;1705 /* Display the menu */
;;;1706 DisplayMenu();
;;;1707 /* Enable the JoyStick interrupts */
;;;1708 IntExtOnOffConfig(ENABLE);
;;;1709 return;
;;;1710 }
;;;1711
;;;1712 /* Read the alarm value stored in the Backup register */
;;;1713 tmp = BKP_ReadBackupRegister(BKP_DR6);
000076 2018 MOVS r0,#0x18
000078 f7fffffe BL BKP_ReadBackupRegister
00007c 4605 MOV r5,r0
;;;1714 tmp |= BKP_ReadBackupRegister(BKP_DR7) << 16;
00007e 201c MOVS r0,#0x1c
000080 f7fffffe BL BKP_ReadBackupRegister
000084 ea454500 ORR r5,r5,r0,LSL #16
;;;1715
;;;1716 LCD_ClearLine(Line8);
000088 20c0 MOVS r0,#0xc0
00008a f7fffffe BL LCD_ClearLine
;;;1717
;;;1718 /* Display alarm separators ":" on Line2 */
;;;1719 LCD_DisplayChar(Line8, 212, ':');
00008e 223a MOVS r2,#0x3a
000090 21d4 MOVS r1,#0xd4
000092 20c0 MOVS r0,#0xc0
000094 f7fffffe BL LCD_DisplayChar
;;;1720 LCD_DisplayChar(Line8, 166, ':');
000098 223a MOVS r2,#0x3a
00009a 21a6 MOVS r1,#0xa6
00009c 20c0 MOVS r0,#0xc0
00009e f7fffffe BL LCD_DisplayChar
;;;1721
;;;1722 /* Display actual alarm value */
;;;1723 Alarm_Display(tmp);
0000a2 4628 MOV r0,r5
0000a4 f7fffffe BL Alarm_Display
|L5.168|
;;;1724
;;;1725 /* Wait a press on pushbuttons */
;;;1726 while(ReadKey() != NOKEY)
0000a8 f7fffffe BL ReadKey
0000ac 2800 CMP r0,#0
0000ae d1fb BNE |L5.168|
|L5.176|
;;;1727 {
;;;1728 }
;;;1729
;;;1730 /* Wait a press on pushbuttons */
;;;1731 while(ReadKey() == NOKEY)
0000b0 f7fffffe BL ReadKey
0000b4 2800 CMP r0,#0
0000b6 d0fb BEQ |L5.176|
|L5.184|
;;;1732 {
;;;1733 }
;;;1734 /* Clear the LCD */
;;;1735 LCD_Clear(White);
0000b8 4620 MOV r0,r4
0000ba f7fffffe BL LCD_Clear
;;;1736 /* Display the menu */
;;;1737 DisplayMenu();
0000be f7fffffe BL DisplayMenu
;;;1738 /* Enable the JoyStick interrupts */
;;;1739 IntExtOnOffConfig(ENABLE);
0000c2 e8bd4070 POP {r4-r6,lr}
0000c6 2001 MOVS r0,#1
0000c8 f7ffbffe B.W IntExtOnOffConfig
;;;1740 }
;;;1741
ENDP
|L5.204|
DCD 0x64fe0f54
|L5.208|
0000d0 54696d65206e6f7420636f6e666967757265642000 DCB "Time not configured ",0
0000e5 00 DCB 0
0000e6 00 DCB 0
0000e7 00 DCB 0
|L5.232|
0000e8 202020202050726573732053454c20202020202000 DCB " Press SEL ",0
0000fd 00 DCB 0
0000fe 00 DCB 0
0000ff 00 DCB 0
AREA ||i.Calendar_Init||, CODE, READONLY, ALIGN=2
Calendar_Init PROC
;;;149 *******************************************************************************/
;;;150 void Calendar_Init(void)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;151 {
;;;152 u32 i = 0, tmp = 0, pressedkey = 0;
;;;153
;;;154 /* Initialize Date structure */
;;;155 date_s.month = 01;
000004 4e5e LDR r6,|L6.384|
000006 2001 MOVS r0,#1
000008 7030 STRB r0,[r6,#0]
;;;156 date_s.day = 01;
00000a 7070 STRB r0,[r6,#1]
;;;157 date_s.year = 2008;
00000c f44f60fb MOV r0,#0x7d8
000010 8070 STRH r0,[r6,#2]
000012 2400 MOVS r4,#0 ;152
;;;158
;;;159 if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
000014 2004 MOVS r0,#4
000016 f7fffffe BL BKP_ReadBackupRegister
00001a f5a04125 SUB r1,r0,#0xa500
00001e 39a5 SUBS r1,r1,#0xa5
000020 d01e BEQ |L6.96|
;;;160 {
;;;161 LCD_SetBackColor(Blue);
000022 201f MOVS r0,#0x1f
000024 f7fffffe BL LCD_SetBackColor
;;;162 LCD_SetTextColor(White);
000028 f64f70ff MOV r0,#0xffff
00002c f7fffffe BL LCD_SetTextColor
;;;163 LCD_DisplayStringLine(Line7, "Time and Date Config");
000030 a154 ADR r1,|L6.388|
000032 20a8 MOVS r0,#0xa8
000034 f7fffffe BL LCD_DisplayStringLine
;;;164 LCD_DisplayStringLine(Line8, "Select: Press SEL ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -