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

📄 calendar.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;1400           daycolumn =  firstdaycolumn;
0001ec  f8a9f8a9          STRH     r8,[r9,#0]  ; daycolumn
;;;1401           tmpValue = 1;
0001f0  2401              MOVS     r4,#1
0001f2  e005              B        |L8.512|
                  |L8.500|
;;;1402         }
;;;1403         else
;;;1404         {
;;;1405           dayline += 24;
0001f4  f8b9f8b9          LDRH     r0,[r9,#2]  ; dayline
0001f8  3018              ADDS     r0,r0,#0x18
0001fa  f8a9f8a9          STRH     r0,[r9,#2]  ; dayline
;;;1406           tmpValue += 7;
0001fe  1de4              ADDS     r4,r4,#7
                  |L8.512|
;;;1407         }
;;;1408         if(tmpValue > ValueMax)
000200  42ac              CMP      r4,r5
000202  d9d2              BLS      |L8.426|
;;;1409         {
;;;1410           tmpValue = ValueMax;
;;;1411           dayline = lastdayline;
000204  f8a9f8a9          STRH     r7,[r9,#2]  ; dayline
000208  462c              MOV      r4,r5                 ;1410
;;;1412           daycolumn = lastdaycolumn;
00020a  f8a9f8a9          STRH     r6,[r9,#0]  ; daycolumn
00020e  e7cc              B        |L8.426|
                  |L8.528|
;;;1413         }
;;;1414         LCD_SetTextColor(Red);   
;;;1415         LCD_DrawRect(dayline, daycolumn, 24, 32);     
;;;1416       }       
;;;1417       /* If "SEL" pushbutton is pressed */
;;;1418       if(MyKey == SEL)
000210  2801              CMP      r0,#1
000212  d1a4              BNE      |L8.350|
;;;1419       {
;;;1420         /* Return the digit value and exit */
;;;1421         date_s.day = tmpValue;
000214  4801              LDR      r0,|L8.540|
000216  7044              STRB     r4,[r0,#1]  ; date_s
;;;1422         return;
;;;1423       }
;;;1424     }
;;;1425   }
000218  e8bde8bd          POP      {r4-r12,pc}
;;;1426   
                          ENDP

                  |L8.540|
00021c  00000010          DCD      ||.data||+0x10

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

                  RegulateYear PROC
;;;1145   static void RegulateYear(void)
;;;1146   {
000000  b570              PUSH     {r4-r6,lr}
;;;1147     u32 tmpValue = 0;
;;;1148     u32 MyKey = 0;
;;;1149   
;;;1150     /* Initialize tmpValue */
;;;1151     tmpValue = date_s.year;
000002  4d22              LDR      r5,|L9.140|
000004  f8b5f8b5          LDRH.W   r4,[r5,#2]
                  |L9.8|
;;;1152   
;;;1153     /* Endless loop */
;;;1154     while(1)
;;;1155     {
;;;1156       /* Check which key is pressed */
;;;1157       MyKey = ReadKey();
000008  f7fff7ff          BL       ReadKey
;;;1158   
;;;1159       /* If "UP" pushbutton is pressed */
;;;1160       if(MyKey == UP)
00000c  2804              CMP      r0,#4
00000e  d112              BNE      |L9.54|
;;;1161       {
;;;1162         /* Increase the value of the digit */
;;;1163         if(tmpValue == 2099)
000010  f5a4f5a4          SUB      r0,r4,#0x800
000014  3833              SUBS     r0,r0,#0x33
000016  d101              BNE      |L9.28|
;;;1164         {
;;;1165           tmpValue = 1874;
000018  f240f240          MOV      r4,#0x752
                  |L9.28|
;;;1166         }
;;;1167         LCD_ClearLine(Line3);
00001c  2048              MOVS     r0,#0x48
00001e  f7fff7ff          BL       LCD_ClearLine
;;;1168         LCD_ClearLine(Line7);
000022  20a8              MOVS     r0,#0xa8
000024  f7fff7ff          BL       LCD_ClearLine
;;;1169         LCD_ClearLine(Line8);
000028  20c0              MOVS     r0,#0xc0
00002a  f7fff7ff          BL       LCD_ClearLine
;;;1170         Date_Display(++tmpValue, date_s.month, date_s.day);
00002e  786a              LDRB     r2,[r5,#1]  ; date_s
000030  7829              LDRB     r1,[r5,#0]  ; date_s
000032  1c64              ADDS     r4,r4,#1
000034  e013              B        |L9.94|
                  |L9.54|
;;;1171       }
;;;1172       /* If "DOWN" pushbutton is pressed */
;;;1173       if(MyKey == DOWN)
000036  2805              CMP      r0,#5
000038  d115              BNE      |L9.102|
;;;1174       {
;;;1175         /* Decrease the value of the digit */
;;;1176         if(tmpValue == 1875)
00003a  f5a4f5a4          SUB      r0,r4,#0x700
00003e  3853              SUBS     r0,r0,#0x53
000040  d101              BNE      |L9.70|
;;;1177         {
;;;1178           tmpValue = 2100;
000042  f640f640          MOV      r4,#0x834
                  |L9.70|
;;;1179         }
;;;1180         LCD_ClearLine(Line3);
000046  2048              MOVS     r0,#0x48
000048  f7fff7ff          BL       LCD_ClearLine
;;;1181         LCD_ClearLine(Line7);
00004c  20a8              MOVS     r0,#0xa8
00004e  f7fff7ff          BL       LCD_ClearLine
;;;1182         LCD_ClearLine(Line8);
000052  20c0              MOVS     r0,#0xc0
000054  f7fff7ff          BL       LCD_ClearLine
;;;1183         /* Display new value */
;;;1184         Date_Display(--tmpValue, date_s.month, date_s.day);
000058  786a              LDRB     r2,[r5,#1]  ; date_s
00005a  7829              LDRB     r1,[r5,#0]  ; date_s
00005c  1e64              SUBS     r4,r4,#1
                  |L9.94|
00005e  b2a0              UXTH     r0,r4                 ;1170
000060  f7fff7ff          BL       Date_Display
000064  e7d0              B        |L9.8|
                  |L9.102|
;;;1185       }
;;;1186       /* If "SEL" pushbutton is pressed */
;;;1187       if(MyKey == SEL)
000066  2801              CMP      r0,#1
000068  d1ce              BNE      |L9.8|
;;;1188       {
;;;1189         LCD_ClearLine(Line3);
00006a  2048              MOVS     r0,#0x48
00006c  f7fff7ff          BL       LCD_ClearLine
;;;1190         LCD_ClearLine(Line7);
000070  20a8              MOVS     r0,#0xa8
000072  f7fff7ff          BL       LCD_ClearLine
;;;1191         LCD_ClearLine(Line8);
000076  20c0              MOVS     r0,#0xc0
000078  f7fff7ff          BL       LCD_ClearLine
;;;1192         /* Display new value */
;;;1193         Date_Display(tmpValue, date_s.month, date_s.day);
00007c  b2a0              UXTH     r0,r4
00007e  786a              LDRB     r2,[r5,#1]  ; date_s
000080  7829              LDRB     r1,[r5,#0]  ; date_s
000082  4604              MOV      r4,r0
000084  f7fff7ff          BL       Date_Display
;;;1194         /* Return the digit value and exit */
;;;1195         date_s.year = tmpValue;
000088  806c              STRH     r4,[r5,#2]  ; date_s
;;;1196         return;
;;;1197       }
;;;1198     }
;;;1199   }
00008a  bd70              POP      {r4-r6,pc}
;;;1200   
                          ENDP

                  |L9.140|
00008c  00000010          DCD      ||.data||+0x10

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

                  Date_Regulate PROC
;;;507    void Date_Regulate(void)
;;;508    {
000000  b510              PUSH     {r4,lr}
;;;509      LCD_DisplayStringLine(Line9, " UP/DOWN: Set Year  ");
000002  a10a              ADR      r1,|L10.44|
000004  20d8              MOVS     r0,#0xd8
000006  f7fff7ff          BL       LCD_DisplayStringLine
;;;510      /* Regulate year */
;;;511      RegulateYear();
00000a  f7fff7ff          BL       RegulateYear
;;;512    
;;;513      LCD_DisplayStringLine(Line9, " UP/DOWN: Set Month ");
00000e  a10d              ADR      r1,|L10.68|
000010  20d8              MOVS     r0,#0xd8
000012  f7fff7ff          BL       LCD_DisplayStringLine
;;;514      /* Regulate the month */
;;;515      RegulateMonth();
000016  f7fff7ff          BL       RegulateMonth
;;;516      
;;;517      LCD_DisplayStringLine(Line9, "Set Day- SEL To exit");
00001a  a110              ADR      r1,|L10.92|
00001c  20d8              MOVS     r0,#0xd8
00001e  f7fff7ff          BL       LCD_DisplayStringLine
;;;518      /* Regulate day */
;;;519      RegulateDay();
000022  e8bde8bd          POP      {r4,lr}
000026  f7fff7ff          B.W      RegulateDay
;;;520    }
;;;521    
                          ENDP

00002a  0000              DCW      0x0000
                  |L10.44|
00002c  2055502f          DCB      " UP/"
000030  444f574e          DCB      "DOWN"
000034  3a205365          DCB      ": Se"
000038  74205965          DCB      "t Ye"
00003c  61722020          DCB      "ar  "
000040  00000000          DCB      "\0\0\0\0"
                  |L10.68|
000044  2055502f          DCB      " UP/"
000048  444f574e          DCB      "DOWN"
00004c  3a205365          DCB      ": Se"
000050  74204d6f          DCB      "t Mo"
000054  6e746820          DCB      "nth "
000058  00000000          DCB      "\0\0\0\0"
                  |L10.92|
00005c  53657420          DCB      "Set "
000060  4461792d          DCB      "Day-"
000064  2053454c          DCB      " SEL"
000068  20546f20          DCB      " To "
00006c  65786974          DCB      "exit"
000070  00000000          DCB      "\0\0\0\0"

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

                  Date_PreAdjust PROC
;;;529    static void Date_PreAdjust(void)
;;;530    {
000000  b510              PUSH     {r4,lr}
;;;531      u32 tmp = 0, pressedkey = 0;
;;;532       
;;;533      /* Clear the LCD */
;;;534      LCD_Clear(White);
000002  f64ff64f          MOV      r4,#0xffff
000006  4620              MOV      r0,r4
000008  f7fff7ff          BL       LCD_Clear
;;;535      LCD_SetBackColor(Blue);
00000c  201f              MOVS     r0,#0x1f
00000e  f7fff7ff          BL       LCD_SetBackColor
;;;536      LCD_SetTextColor(White);
000012  4620              MOV      r0,r4
000014  f7fff7ff          BL       LCD_SetTextColor
;;;537    
;;;538      if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
000018  2004              MOVS     r0,#4
00001a  f7fff7ff          BL       BKP_ReadBackupRegister
00001e  f5a0f5a0          SUB      r1,r0,#0xa500
000022  39a5              SUBS     r1,r1,#0xa5
000024  d01a              BEQ      |L11.92|
;;;539      {
;;;540        LCD_DisplayStringLine(Line7, "Time and Date Config");
000026  a11c              ADR      r1,|L11.152|
000028  20a8              MOVS     r0,#0xa8
00002a  f7fff7ff          BL       LCD_DisplayStringLine
;;;541        LCD_DisplayStringLine(Line8, "Select: Press SEL   ");
00002e  a120              ADR      r1,|L11.176|
000030  20c0              MOVS     r0,#0xc0
000032  f7fff7ff          BL       LCD_DisplayStringLine
;;;542        LCD_DisplayStringLine(Line9, "Abort: Press Any Key");   
000036  a124              ADR      r1,|L11.200|
000038  20d8              MOVS     r0,#0xd8
00003a  f7fff7ff          BL       LCD_DisplayStringLine
;;;543        
;;;544        while(1)
;;;545        {
;;;546          pressedkey = ReadKey(); 
00003e  bf00              NOP      
                  |L11.64|
000040  f7fff7ff          BL       ReadKey
;;;547          if(pressedkey == SEL)
000044  2801              CMP      r0,#1
000046  d106              BNE      |L11.86|
;;;548          {
;;;549            /* Adjust Time */
;;;550            Time_PreAdjust();
000048  f7fff7ff          BL       Time_PreAdjust
;;;551            /* Clear the LCD */
;;;552            LCD_Clear(White);
00004c  4620              MOV      r0,r4
00004e  e8bde8bd          POP      {r4,lr}
000052  f7fff7ff          B.W      LCD_Clear
                  |L11.86|
;;;553            return;
;;;554          }
;;;555          else if (pressedkey != NOKEY)
000056  2800              CMP      r0,#0
000058  d0f2              BEQ      |L11.64|
;;;556          {
;;;557            return;
;;;558          }
;;;559        }
;;;560      }
;;;561      else
;;;562      {
;;;563        /* Display the current date */
;;;564        Date_Display(date_s.year, date_s.month, date_s.day);
;;;565    
;;;566        /* Change the current date */
;;;567        Date_Regulate();
;;;568        BKP_WriteBackupRegister(BKP_DR2, date_s.year);
;;;569        tmp = date_s.month << 8;
;;;570        tmp |= date_s.day; 
;;;571        BKP_WriteBackupRegister(BKP_DR3, tmp);
;;;572        BKP_WriteBackupRegister(BKP_DR4, daycolumn);
;;;573        BKP_WriteBackupRegister(BKP_DR5, dayline);
;;;574      }
;;;575    }
00005a  bd10              POP      {r4,pc}
                  |L11.92|
00005c  4c20              LDR      r4,|L11.224|
00005e  7862              LDRB     r2,[r4,#1]            ;564  ; date_s
000060  7821              LDRB     r1,[r4,#0]            ;564  ; date_s
000062  8860              LDRH     r0,[r4,#2]            ;564  ; date_s
000064  f7fff7ff       

⌨️ 快捷键说明

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