⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00002e  d001              BEQ      |L5.52|
000030  290c              CMP      r1,#0xc
000032  d10a              BNE      |L5.74|
                  |L5.52|
;;;1078     {
;;;1079       if(date_s.day < 31)
000034  2a1f              CMP      r2,#0x1f
000036  d317              BCC      |L5.104|
;;;1080       {
;;;1081         date_s.day++;
;;;1082       }
;;;1083       /* Date structure member: date_s.day = 31 */
;;;1084       else
;;;1085       {
;;;1086         if(date_s.month != 12)
000038  290c              CMP      r1,#0xc
00003a  d001              BEQ      |L5.64|
                  |L5.60|
;;;1087         {
;;;1088           date_s.month++;
00003c  7035              STRB     r5,[r6,#0]  ; date_s
;;;1089           date_s.day = 1;
00003e  e024              B        |L5.138|
                  |L5.64|
;;;1090         }
;;;1091         /* Date structure member: date_s.day = 31 & date_s.month =12 */
;;;1092         else
;;;1093         {
;;;1094           date_s.month = 1;
000040  7034              STRB     r4,[r6,#0]  ; date_s
;;;1095           date_s.day = 1;
000042  7074              STRB     r4,[r6,#1]  ; date_s
;;;1096           date_s.year++;
000044  1c40              ADDS     r0,r0,#1
000046  8070              STRH     r0,[r6,#2]  ; date_s
000048  e020              B        |L5.140|
                  |L5.74|
;;;1097         }
;;;1098       }
;;;1099     }
;;;1100     else if(date_s.month == 4 || date_s.month == 6 || date_s.month == 9 ||
00004a  2904              CMP      r1,#4
00004c  d005              BEQ      |L5.90|
00004e  2906              CMP      r1,#6
000050  d003              BEQ      |L5.90|
000052  2909              CMP      r1,#9
000054  d001              BEQ      |L5.90|
;;;1101             date_s.month == 11)
000056  290b              CMP      r1,#0xb
000058  d102              BNE      |L5.96|
                  |L5.90|
;;;1102     {
;;;1103       if(date_s.day < 30)
00005a  2a1e              CMP      r2,#0x1e
00005c  d2ee              BCS      |L5.60|
00005e  e003              B        |L5.104|
                  |L5.96|
;;;1104       {
;;;1105         date_s.day++;
;;;1106       }
;;;1107       /* Date structure member: date_s.day = 30 */
;;;1108       else
;;;1109       {
;;;1110         date_s.month++;
;;;1111         date_s.day = 1;
;;;1112       }
;;;1113     }
;;;1114     else if(date_s.month == 2)
000060  2902              CMP      r1,#2
000062  d113              BNE      |L5.140|
;;;1115     {
;;;1116       if(date_s.day < 28)
000064  2a1c              CMP      r2,#0x1c
000066  d201              BCS      |L5.108|
                  |L5.104|
;;;1117       {
;;;1118         date_s.day++;
000068  7073              STRB     r3,[r6,#1]  ; date_s
00006a  e00f              B        |L5.140|
                  |L5.108|
;;;1119       }
;;;1120       else if(date_s.day == 28)
00006c  d109              BNE      |L5.130|
;;;1121       {
;;;1122         /* Leap year */
;;;1123         if(IsLeapYear(date_s.year))
00006e  f7fffffe          BL       IsLeapYear
000072  b118              CBZ      r0,|L5.124|
;;;1124         {
;;;1125           date_s.day++;
000074  7870              LDRB     r0,[r6,#1]  ; date_s
000076  1c40              ADDS     r0,r0,#1
000078  7070              STRB     r0,[r6,#1]  ; date_s
00007a  e007              B        |L5.140|
                  |L5.124|
;;;1126         }
;;;1127         else
;;;1128         {
;;;1129           date_s.month++;
00007c  7830              LDRB     r0,[r6,#0]  ; date_s
00007e  1c40              ADDS     r0,r0,#1
;;;1130           date_s.day = 1;
000080  e002              B        |L5.136|
                  |L5.130|
;;;1131         }
;;;1132       }
;;;1133       else if(date_s.day == 29)
000082  2a1d              CMP      r2,#0x1d
000084  d102              BNE      |L5.140|
;;;1134       {
;;;1135         date_s.month++;
000086  2003              MOVS     r0,#3
                  |L5.136|
000088  7030              STRB     r0,[r6,#0]  ; date_s
                  |L5.138|
;;;1136         date_s.day = 1;
00008a  7074              STRB     r4,[r6,#1]  ; date_s
                  |L5.140|
;;;1137       }
;;;1138     }
;;;1139   
;;;1140     BKP_WriteBackupRegister(BKP_DR2, date_s.year);
00008c  8871              LDRH     r1,[r6,#2]  ; date_s
00008e  2008              MOVS     r0,#8
000090  f7fffffe          BL       BKP_WriteBackupRegister
;;;1141   
;;;1142     tmp = date_s.month << 8;
000094  7830              LDRB     r0,[r6,#0]  ; date_s
;;;1143     tmp |= date_s.day; 
000096  7871              LDRB     r1,[r6,#1]  ; date_s
;;;1144     BKP_WriteBackupRegister(BKP_DR3, tmp);
000098  e8bd41f0          POP      {r4-r8,lr}
00009c  ea412100          ORR      r1,r1,r0,LSL #8       ;1143
0000a0  200c              MOVS     r0,#0xc
0000a2  f7ffbffe          B.W      BKP_WriteBackupRegister
;;;1145   }
;;;1146   
                          ENDP

0000a6  0000              DCW      0x0000
                  |L5.168|
0000a8  00000010          DCD      ||.data||+0x10

                          AREA ||i.Time_Regulate||, CODE, READONLY, ALIGN=2

                  Time_Regulate PROC
;;;252    u32 Time_Regulate(void)
;;;253    {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;254      u32 Tmp_HH = 0, Tmp_MM = 0, Tmp_SS = 0;
;;;255    
;;;256      /* Read time hours */
;;;257      Tmp_HH = ReadDigit(244, time_struct.hour_h, 0x2, 0x0);
000004  4d26              LDR      r5,|L6.160|
000006  2300              MOVS     r3,#0
000008  7969              LDRB     r1,[r5,#5]  ; time_struct
00000a  2202              MOVS     r2,#2
00000c  20f4              MOVS     r0,#0xf4
00000e  f7fffffe          BL       ReadDigit
000012  4604              MOV      r4,r0
;;;258      if(Tmp_HH == 2)
000014  2802              CMP      r0,#2
000016  d10d              BNE      |L6.52|
;;;259      {
;;;260        if(time_struct.hour_l > 3)
000018  7928              LDRB     r0,[r5,#4]  ; time_struct
00001a  2803              CMP      r0,#3
00001c  d901              BLS      |L6.34|
;;;261        {
;;;262          time_struct.hour_l = 0;
00001e  2000              MOVS     r0,#0
000020  7128              STRB     r0,[r5,#4]  ; time_struct
                  |L6.34|
;;;263        }
;;;264        Tmp_HH = Tmp_HH*10 + ReadDigit(228, time_struct.hour_l, 0x3, 0x0);
000022  7929              LDRB     r1,[r5,#4]  ; time_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        |L6.72|
                  |L6.52|
;;;265      }
;;;266      else
;;;267      {
;;;268        Tmp_HH = Tmp_HH*10 + ReadDigit(228, time_struct.hour_l, 0x9, 0x0);
000034  7929              LDRB     r1,[r5,#4]  ; time_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
                  |L6.72|
;;;269      }
;;;270      /* Read time  minutes */
;;;271      Tmp_MM = ReadDigit(196, time_struct.min_h,5, 0x0);
000048  78e9              LDRB     r1,[r5,#3]  ; time_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
;;;272      Tmp_MM = Tmp_MM*10 + ReadDigit(182, time_struct.min_l, 0x9, 0x0);
000056  78a9              LDRB     r1,[r5,#2]  ; time_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  eb000641          ADD      r6,r0,r1,LSL #1
;;;273      /* Read time seconds */
;;;274      Tmp_SS = ReadDigit(150, time_struct.sec_h,5, 0x0);
00006a  7869              LDRB     r1,[r5,#1]  ; time_struct
00006c  2300              MOVS     r3,#0
00006e  2205              MOVS     r2,#5
000070  2096              MOVS     r0,#0x96
000072  f7fffffe          BL       ReadDigit
000076  4607              MOV      r7,r0
;;;275      Tmp_SS = Tmp_SS*10 + ReadDigit(134, time_struct.sec_l, 0x9, 0x0);
000078  7829              LDRB     r1,[r5,#0]  ; time_struct
00007a  2300              MOVS     r3,#0
00007c  2209              MOVS     r2,#9
00007e  2086              MOVS     r0,#0x86
000080  f7fffffe          BL       ReadDigit
000084  eb070187          ADD      r1,r7,r7,LSL #2
000088  eb000041          ADD      r0,r0,r1,LSL #1
;;;276    
;;;277      /* Return the value to store in RTC counter register */
;;;278      return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
00008c  f44f6161          MOV      r1,#0xe10
000090  434c              MULS     r4,r1,r4
000092  ebc61106          RSB      r1,r6,r6,LSL #4
000096  eb040181          ADD      r1,r4,r1,LSL #2
00009a  4408              ADD      r0,r0,r1
;;;279    }
00009c  e8bd81f0          POP      {r4-r8,pc}
;;;280    
                          ENDP

                  |L6.160|
0000a0  00000014          DCD      ||.data||+0x14

                          AREA ||i.Time_Display||, CODE, READONLY, ALIGN=2

                  Time_Display PROC
;;;389    void Time_Display(u32 TimeVar)
;;;390    {
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;391      /* Display time hours */
;;;392      time_struct.hour_h=(u8)( TimeVar / 3600)/10;
000004  f44f6861          MOV      r8,#0xe10
000008  fbb0f6f8          UDIV     r6,r0,r8
00000c  4607              MOV      r7,r0                 ;390
00000e  b2f0              UXTB     r0,r6
000010  250a              MOVS     r5,#0xa
000012  fbb0f0f5          UDIV     r0,r0,r5
000016  4c25              LDR      r4,|L7.172|
;;;393      LCD_DisplayChar(Line8, 244,(time_struct.hour_h + 0x30));
000018  21f4              MOVS     r1,#0xf4
00001a  7160              STRB     r0,[r4,#5]            ;392  ; time_struct
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
;;;394      time_struct.hour_l=(u8)(((TimeVar)/3600)%10);
000028  fbb6f0f5          UDIV     r0,r6,r5
00002c  fb056010          MLS      r0,r5,r0,r6
000030  7120              STRB     r0,[r4,#4]  ; time_struct
;;;395      LCD_DisplayChar(Line8, 228,(time_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
;;;396    
;;;397      /* Display time minutes */
;;;398      time_struct.min_h=(u8)(((TimeVar)%3600)/60)/10;
000040  fb087616          MLS      r6,r8,r6,r7
000044  f04f0a3c          MOV      r10,#0x3c
000048  fbb6f7fa          UDIV     r7,r6,r10
00004c  f00709ff          AND      r9,r7,#0xff
000050  fbb9f8f5          UDIV     r8,r9,r5
;;;399      LCD_DisplayChar(Line8, 196,(time_struct.min_h + 0x30));
000054  f00800ff          AND      r0,r8,#0xff
000058  3030              ADDS     r0,r0,#0x30
00005a  b2c2              UXTB     r2,r0
00005c  f8848003          STRB     r8,[r4,#3]            ;398  ; time_struct
000060  21c4              MOVS     r1,#0xc4
000062  20c0              MOVS     r0,#0xc0
000064  f7fffffe          BL       LCD_DisplayChar
;;;400      time_struct.min_l=(u8)(((TimeVar)%3600)/60)%10;
000068  fb059018          MLS      r0,r5,r8,r9
00006c  70a0              STRB     r0,[r4,#2]  ; time_struct
;;;401      LCD_DisplayChar(Line8, 182,(time_struct.min_l + 0x30));
00006e  b2c0              UXTB     r0,r0
000070  3030              ADDS     r0,r0,#0x30
000072  b2c2              UXTB     r2,r0
000074  21b6              MOVS     r1,#0xb6
000076  20c0              MOVS     r0,#0xc0
000078  f7fffffe          BL       LCD_DisplayChar
;;;402    
;;;403      /* Display time seconds */
;;;404      time_struct.sec_h=(u8)(((TimeVar)%3600)%60)/10;
00007c  fb0a6717          MLS      r7,r10,r7,r6
000080  fbb7f6f5          UDIV     r6,r7,r5
;;;405      LCD_DisplayChar(Line8, 150,(time_struct.sec_h + 0x30));
000084  b2f0              UXTB     r0,r6
000086  3030              ADDS     r0,r0,#0x30
000088  b2c2              UXTB     r2,r0
00008a  7066              STRB     r6,[r4,#1]            ;404  ; time_struct
00008c  2196              MOVS     r1,#0x96
00008e  20c0              MOVS     r0,#0xc0
000090  f7fffffe          BL       LCD_DisplayChar
;;;406      time_struct.sec_l=(u8)(((TimeVar)%3600)%60)%10;
000094  fb057016          MLS      r0,r5,r6,r7
000098  7020              STRB     r0,[r4,#0]  ; time_struct
;;;407      LCD_DisplayChar(Line8, 134,(time_struct.sec_l + 0x30));
00009a  e8bd47f0          POP      {r4-r10,lr}
00009e  b2c0              UXTB     r0,r0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -