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

📄 calendar.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00002a  d003              BEQ      |L5.52|
00002c  290a              CMP      r1,#0xa
00002e  d001              BEQ      |L5.52|
000030  290c              CMP      r1,#0xc
000032  d10a              BNE      |L5.74|
                  |L5.52|
;;;1069     {
;;;1070       if(date_s.day < 31)
000034  2a1f              CMP      r2,#0x1f
000036  d317              BCC      |L5.104|
;;;1071       {
;;;1072         date_s.day++;
;;;1073       }
;;;1074       /* Date structure member: date_s.day = 31 */
;;;1075       else
;;;1076       {
;;;1077         if(date_s.month != 12)
000038  290c              CMP      r1,#0xc
00003a  d001              BEQ      |L5.64|
                  |L5.60|
;;;1078         {
;;;1079           date_s.month++;
00003c  7035              STRB     r5,[r6,#0]  ; date_s
;;;1080           date_s.day = 1;
00003e  e024              B        |L5.138|
                  |L5.64|
;;;1081         }
;;;1082         /* Date structure member: date_s.day = 31 & date_s.month =12 */
;;;1083         else
;;;1084         {
;;;1085           date_s.month = 1;
000040  7034              STRB     r4,[r6,#0]  ; date_s
;;;1086           date_s.day = 1;
000042  7074              STRB     r4,[r6,#1]  ; date_s
;;;1087           date_s.year++;
000044  1c40              ADDS     r0,r0,#1
000046  8070              STRH     r0,[r6,#2]  ; date_s
000048  e020              B        |L5.140|
                  |L5.74|
;;;1088         }
;;;1089       }
;;;1090     }
;;;1091     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|
;;;1092             date_s.month == 11)
000056  290b              CMP      r1,#0xb
000058  d102              BNE      |L5.96|
                  |L5.90|
;;;1093     {
;;;1094       if(date_s.day < 30)
00005a  2a1e              CMP      r2,#0x1e
00005c  d2ee              BCS      |L5.60|
00005e  e003              B        |L5.104|
                  |L5.96|
;;;1095       {
;;;1096         date_s.day++;
;;;1097       }
;;;1098       /* Date structure member: date_s.day = 30 */
;;;1099       else
;;;1100       {
;;;1101         date_s.month++;
;;;1102         date_s.day = 1;
;;;1103       }
;;;1104     }
;;;1105     else if(date_s.month == 2)
000060  2902              CMP      r1,#2
000062  d113              BNE      |L5.140|
;;;1106     {
;;;1107       if(date_s.day < 28)
000064  2a1c              CMP      r2,#0x1c
000066  d201              BCS      |L5.108|
                  |L5.104|
;;;1108       {
;;;1109         date_s.day++;
000068  7073              STRB     r3,[r6,#1]  ; date_s
00006a  e00f              B        |L5.140|
                  |L5.108|
;;;1110       }
;;;1111       else if(date_s.day == 28)
00006c  d109              BNE      |L5.130|
;;;1112       {
;;;1113         /* Leap year */
;;;1114         if(IsLeapYear(date_s.year))
00006e  f7fff7ff          BL       IsLeapYear
000072  b118              CBZ      r0,|L5.124|
;;;1115         {
;;;1116           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|
;;;1117         }
;;;1118         else
;;;1119         {
;;;1120           date_s.month++;
00007c  7830              LDRB     r0,[r6,#0]  ; date_s
00007e  1c40              ADDS     r0,r0,#1
;;;1121           date_s.day = 1;
000080  e002              B        |L5.136|
                  |L5.130|
;;;1122         }
;;;1123       }
;;;1124       else if(date_s.day == 29)
000082  2a1d              CMP      r2,#0x1d
000084  d102              BNE      |L5.140|
;;;1125       {
;;;1126         date_s.month++;
000086  2003              MOVS     r0,#3
                  |L5.136|
000088  7030              STRB     r0,[r6,#0]  ; date_s
                  |L5.138|
;;;1127         date_s.day = 1;
00008a  7074              STRB     r4,[r6,#1]  ; date_s
                  |L5.140|
;;;1128       }
;;;1129     }
;;;1130   
;;;1131     BKP_WriteBackupRegister(BKP_DR2, date_s.year);
00008c  8871              LDRH     r1,[r6,#2]  ; date_s
00008e  2008              MOVS     r0,#8
000090  f7fff7ff          BL       BKP_WriteBackupRegister
;;;1132   
;;;1133     tmp = date_s.month << 8;
000094  7830              LDRB     r0,[r6,#0]  ; date_s
;;;1134     tmp |= date_s.day; 
000096  7871              LDRB     r1,[r6,#1]  ; date_s
;;;1135     BKP_WriteBackupRegister(BKP_DR3, tmp);
000098  e8bde8bd          POP      {r4-r8,lr}
00009c  ea41ea41          ORR      r1,r1,r0,LSL #8       ;1134
0000a0  200c              MOVS     r0,#0xc
0000a2  f7fff7ff          B.W      BKP_WriteBackupRegister
;;;1136   }
;;;1137   
                          ENDP

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

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

                  Time_Regulate PROC
;;;251    u32 Time_Regulate(void)
;;;252    {
000000  e92de92d          PUSH     {r4-r8,lr}
;;;253      u32 Tmp_HH = 0, Tmp_MM = 0, Tmp_SS = 0;
;;;254    
;;;255      /* Read time hours */
;;;256      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  f7fff7ff          BL       ReadDigit
000012  4604              MOV      r4,r0
;;;257      if(Tmp_HH == 2)
000014  2802              CMP      r0,#2
000016  d10d              BNE      |L6.52|
;;;258      {
;;;259        if(time_struct.hour_l > 3)
000018  7928              LDRB     r0,[r5,#4]  ; time_struct
00001a  2803              CMP      r0,#3
00001c  d901              BLS      |L6.34|
;;;260        {
;;;261          time_struct.hour_l = 0;
00001e  2000              MOVS     r0,#0
000020  7128              STRB     r0,[r5,#4]  ; time_struct
                  |L6.34|
;;;262        }
;;;263        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  f7fff7ff          BL       ReadDigit
00002e  f100f100          ADD      r4,r0,#0x14
000032  e009              B        |L6.72|
                  |L6.52|
;;;264      }
;;;265      else
;;;266      {
;;;267        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  f7fff7ff          BL       ReadDigit
000040  eb04eb04          ADD      r1,r4,r4,LSL #2
000044  eb00eb00          ADD      r4,r0,r1,LSL #1
                  |L6.72|
;;;268      }
;;;269      /* Read time  minutes */
;;;270      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  f7fff7ff          BL       ReadDigit
000054  4606              MOV      r6,r0
;;;271      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  f7fff7ff          BL       ReadDigit
000062  eb06eb06          ADD      r1,r6,r6,LSL #2
000066  eb00eb00          ADD      r6,r0,r1,LSL #1
;;;272      /* Read time seconds */
;;;273      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  f7fff7ff          BL       ReadDigit
000076  4607              MOV      r7,r0
;;;274      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  f7fff7ff          BL       ReadDigit
000084  eb07eb07          ADD      r1,r7,r7,LSL #2
000088  eb00eb00          ADD      r0,r0,r1,LSL #1
;;;275    
;;;276      /* Return the value to store in RTC counter register */
;;;277      return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
00008c  f44ff44f          MOV      r1,#0xe10
000090  434c              MULS     r4,r1,r4
000092  ebc6ebc6          RSB      r1,r6,r6,LSL #4
000096  eb04eb04          ADD      r1,r4,r1,LSL #2
00009a  4408              ADD      r0,r0,r1
;;;278    }
00009c  e8bde8bd          POP      {r4-r8,pc}
;;;279    
                          ENDP

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

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

                  Time_Display PROC
;;;384    void Time_Display(u32 TimeVar)
;;;385    {
000000  e92de92d          PUSH     {r4-r10,lr}
;;;386      /* Display time hours */
;;;387      time_struct.hour_h=(u8)( TimeVar / 3600)/10;
000004  f44ff44f          MOV      r8,#0xe10
000008  fbb0fbb0          UDIV     r6,r0,r8
00000c  4607              MOV      r7,r0                 ;385
00000e  b2f0              UXTB     r0,r6
000010  250a              MOVS     r5,#0xa
000012  fbb0fbb0          UDIV     r0,r0,r5
000016  4c25              LDR      r4,|L7.172|
;;;388      LCD_DisplayChar(Line8, 244,(time_struct.hour_h + 0x30));
000018  21f4              MOVS     r1,#0xf4
00001a  7160              STRB     r0,[r4,#5]            ;387  ; time_struct
00001c  b2c0              UXTB     r0,r0
00001e  3030              ADDS     r0,r0,#0x30
000020  b2c2              UXTB     r2,r0
000022  20c0              MOVS     r0,#0xc0
000024  f7fff7ff          BL       LCD_DisplayChar
;;;389      time_struct.hour_l=(u8)(((TimeVar)/3600)%10);
000028  fbb6fbb6          UDIV     r0,r6,r5
00002c  fb05fb05          MLS      r0,r5,r0,r6
000030  7120              STRB     r0,[r4,#4]  ; time_struct
;;;390      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  f7fff7ff          BL       LCD_DisplayChar
;;;391    
;;;392      /* Display time minutes */
;;;393      time_struct.min_h=(u8)(((TimeVar)%3600)/60)/10;
000040  fb08fb08          MLS      r6,r8,r6,r7
000044  f04ff04f          MOV      r10,#0x3c
000048  fbb6fbb6          UDIV     r7,r6,r10
00004c  f007f007          AND      r9,r7,#0xff
000050  fbb9fbb9          UDIV     r8,r9,r5
;;;394      LCD_DisplayChar(Line8, 196,(time_struct.min_h + 0x30));
000054  f008f008          AND      r0,r8,#0xff
000058  3030              ADDS     r0,r0,#0x30
00005a  b2c2              UXTB     r2,r0
00005c  f884f884          STRB     r8,[r4,#3]            ;393  ; time_struct
000060  21c4              MOVS     r1,#0xc4
000062  20c0              MOVS     r0,#0xc0
000064  f7fff7ff          BL       LCD_DisplayChar
;;;395      time_struct.min_l=(u8)(((TimeVar)%3600)/60)%10;
000068  fb05fb05          MLS      r0,r5,r8,r9
00006c  70a0              STRB     r0,[r4,#2]  ; time_struct
;;;396      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  f7fff7ff          BL       LCD_DisplayChar
;;;397    
;;;398      /* Display time seconds */
;;;399      time_struct.sec_h=(u8)(((TimeVar)%3600)%60)/10;
00007c  fb0afb0a          MLS      r7,r10,r7,r6
000080  fbb7fbb7          UDIV     r6,r7,r5
;;;400      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]            ;399  ; time_struct
00008c  2196              MOVS     r1,#0x96
00008e  20c0              MOVS     r0,#0xc0
000090  f7fff7ff          BL       LCD_DisplayChar
;;;401      time_struct.sec_l=(u8)(((TimeVar)%3600)%60)%10;
000094  fb05fb05          MLS      r0,r5,r6,r7
000098  7020              STRB     r0,[r4,#0]  ; time_struct
;;;402      LCD_DisplayChar(Line8, 134,(time_struct.sec_l + 0x30));
00009a  e8bde8bd          POP      {r4-r10,lr}

⌨️ 快捷键说明

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