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

📄 calendar.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] 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..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\calendar.crf ..\..\source\calendar.c]
                          THUMB

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

                  ReadDigit PROC
;;;86     u8 ReadDigit(u8 ColBegin, u8 CountBegin, u8 ValueMax, u8 ValueMin)
;;;87     {
000000  e92de92d          PUSH     {r4-r10,lr}
000004  4681              MOV      r9,r0
;;;88       u32 MyKey = 0, tmpValue = 0;
;;;89     
;;;90       /* Set the Back Color */
;;;91       LCD_SetBackColor(Red);
000006  f44ff44f          MOV      r7,#0xf800
00000a  460c              MOV      r4,r1                 ;87
00000c  4615              MOV      r5,r2                 ;87
00000e  461e              MOV      r6,r3                 ;87
000010  4638              MOV      r0,r7
000012  f7fff7ff          BL       LCD_SetBackColor
;;;92       /* Set the Text Color */
;;;93       LCD_SetTextColor(White);
000016  f64ff64f          MOV      r8,#0xffff
00001a  4640              MOV      r0,r8
00001c  f7fff7ff          BL       LCD_SetTextColor
;;;94     
;;;95       /* Initialize tmpValue */
;;;96       tmpValue = CountBegin;
;;;97       /* Display  */
;;;98       LCD_DisplayChar(Line8, ColBegin, (tmpValue + 0x30));
;;;99     
;;;100      /* Endless loop */
;;;101      while(1)
000020  e008              B        |L1.52|
;;;102      {
;;;103        /* Check which key is pressed */
;;;104        MyKey = ReadKey();
000022  bf00              NOP      
                  |L1.36|
000024  f7fff7ff          BL       ReadKey
;;;105    
;;;106        /* If "UP" pushbutton is pressed */
;;;107        if(MyKey == UP)
000028  2804              CMP      r0,#4
00002a  d10b              BNE      |L1.68|
;;;108        {
;;;109          /* Increase the value of the digit */
;;;110          if(tmpValue == ValueMax)
00002c  42ac              CMP      r4,r5
00002e  d100              BNE      |L1.50|
;;;111          {
;;;112            tmpValue = (ValueMin - 1);
000030  1e74              SUBS     r4,r6,#1
                  |L1.50|
;;;113          }
;;;114          /* Display new value */
;;;115          LCD_DisplayChar(Line8, ColBegin,((++tmpValue) + 0x30));
000032  1c64              ADDS     r4,r4,#1
                  |L1.52|
000034  f104f104          ADD      r0,r4,#0x30           ;98
000038  b2c2              UXTB     r2,r0                 ;98
00003a  4649              MOV      r1,r9                 ;98
00003c  20c0              MOVS     r0,#0xc0              ;98
00003e  f7fff7ff          BL       LCD_DisplayChar
000042  e7ef              B        |L1.36|
                  |L1.68|
;;;116        }
;;;117        /* If "DOWN" pushbutton is pressed */
;;;118        if(MyKey == DOWN)
000044  2805              CMP      r0,#5
000046  d104              BNE      |L1.82|
;;;119        {
;;;120          /* Decrease the value of the digit */
;;;121          if(tmpValue == ValueMin)
000048  42b4              CMP      r4,r6
00004a  d100              BNE      |L1.78|
;;;122          {
;;;123            tmpValue = (ValueMax + 1);
00004c  1c6c              ADDS     r4,r5,#1
                  |L1.78|
;;;124          }
;;;125          /* Display new value */
;;;126          LCD_DisplayChar(Line8, ColBegin,((--tmpValue) + 0x30));
00004e  1e64              SUBS     r4,r4,#1
000050  e7f0              B        |L1.52|
                  |L1.82|
;;;127        }
;;;128        /* If "SEL" pushbutton is pressed */
;;;129        if(MyKey == SEL)
000052  2801              CMP      r0,#1
000054  d1e6              BNE      |L1.36|
;;;130        {
;;;131          /* Set the Back Color */
;;;132          LCD_SetBackColor(White);
000056  4640              MOV      r0,r8
000058  f7fff7ff          BL       LCD_SetBackColor
;;;133          /* Set the Text Color */
;;;134          LCD_SetTextColor(Red);
00005c  4638              MOV      r0,r7
00005e  f7fff7ff          BL       LCD_SetTextColor
;;;135          /* Display new value */
;;;136          LCD_DisplayChar(Line8, ColBegin, (tmpValue + 0x30));
000062  f104f104          ADD      r0,r4,#0x30
000066  b2c2              UXTB     r2,r0
000068  4649              MOV      r1,r9
00006a  20c0              MOVS     r0,#0xc0
00006c  f7fff7ff          BL       LCD_DisplayChar
;;;137          /* Return the digit value and exit */
;;;138          return tmpValue;
000070  b2e0              UXTB     r0,r4
;;;139        }
;;;140      } 
;;;141    }
000072  e8bde8bd          POP      {r4-r10,pc}
;;;142    
                          ENDP


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

                  WeekDayNum PROC
;;;1435   static void WeekDayNum(u32 nyear, u8 nmonth, u8 nday)
;;;1436   {
000000  b5f0              PUSH     {r4-r7,lr}
;;;1437     u32 a = 0, b = 0, c = 0, s = 0, e = 0, f = 0, g = 0, d = 0;
000002  2400              MOVS     r4,#0
000004  2605              MOVS     r6,#5
;;;1438     s32 n = 0;
;;;1439   
;;;1440     if(nmonth < 3)
000006  2903              CMP      r1,#3
000008  d202              BCS      |L2.16|
;;;1441     {
;;;1442       a = nyear - 1;
00000a  bf00              NOP      
00000c  f1a0f1a0          SUB      r0,r0,#1
                  |L2.16|
;;;1443     }
;;;1444     else
;;;1445     {
;;;1446       a = nyear;
;;;1447     }
;;;1448     
;;;1449     b = (a/4) - (a/100) + (a/400);
000010  f04ff04f          MOV      r12,#0x64
000014  fbb0fbb0          UDIV     r3,r0,r12
000018  f44ff44f          MOV      r7,#0x190
00001c  fbb0fbb0          UDIV     r5,r0,r7
000020  ebc3ebc3          RSB      r3,r3,r0,LSR #2
000024  441d              ADD      r5,r5,r3
;;;1450     c = ((a - 1)/4) - ((a - 1)/100) + ((a - 1)/400);
000026  f1a0f1a0          SUB      r3,r0,#1
00002a  fbb3fbb3          UDIV     r12,r3,r12
00002e  ebccebcc          RSB      r12,r12,r3,LSR #2
000032  fbb3fbb3          UDIV     r3,r3,r7
000036  4463              ADD      r3,r3,r12
;;;1451     s = b - c;
000038  eba5eba5          SUB      r3,r5,r3
;;;1452   
;;;1453     if(nmonth < 3)
00003c  d205              BCS      |L2.74|
;;;1454     {
;;;1455       e = 0;
;;;1456       f =  nday - 1 + 31 * (nmonth - 1);
00003e  ebc1ebc1          RSB      r1,r1,r1,LSL #5
000042  4411              ADD      r1,r1,r2
000044  f1a1f1a1          SUB      r1,r1,#0x20
000048  e009              B        |L2.94|
                  |L2.74|
;;;1457     }
;;;1458     else
;;;1459     {
;;;1460       e = s + 1;
;;;1461       f = nday + (153*(nmonth - 3) + 2)/5 + 58 + s; 
00004a  2799              MOVS     r7,#0x99
00004c  4379              MULS     r1,r7,r1
00004e  f2a1f2a1          SUB      r1,r1,#0x1c9
000052  fb91fb91          SDIV     r1,r1,r6
000056  4411              ADD      r1,r1,r2
000058  1c5c              ADDS     r4,r3,#1              ;1460
00005a  4419              ADD      r1,r1,r3
00005c  313a              ADDS     r1,r1,#0x3a
                  |L2.94|
;;;1462     }
;;;1463   
;;;1464     g = (a + b) % 7;
00005e  4428              ADD      r0,r0,r5
000060  2507              MOVS     r5,#7
000062  fbb0fbb0          UDIV     r2,r0,r5
000066  fb05fb05          MLS      r2,r5,r2,r0
;;;1465     d = (f + g - e) % 7;
00006a  1888              ADDS     r0,r1,r2
00006c  1b00              SUBS     r0,r0,r4
00006e  fbb0fbb0          UDIV     r4,r0,r5
000072  fb05fb05          MLS      r4,r5,r4,r0
;;;1466     n = f + 3 - d;
000076  1b08              SUBS     r0,r1,r4
000078  4f0b              LDR      r7,|L2.168|
00007a  1cc0              ADDS     r0,r0,#3
;;;1467   
;;;1468     if (n < 0)
00007c  d505              BPL      |L2.138|
;;;1469     {
;;;1470       wn = 53 - ((g - s)/5);
00007e  1ad0              SUBS     r0,r2,r3
000080  fbb0fbb0          UDIV     r0,r0,r6
000084  f1c0f1c0          RSB      r0,r0,#0x35
000088  e008              B        |L2.156|
                  |L2.138|
;;;1471     }
;;;1472     else if (n > (364 + s))
00008a  f503f503          ADD      r3,r3,#0x16c
00008e  4298              CMP      r0,r3
000090  d901              BLS      |L2.150|
;;;1473     {
;;;1474       wn = 1;
000092  2001              MOVS     r0,#1
000094  e002              B        |L2.156|
                  |L2.150|
;;;1475     }
;;;1476     else
;;;1477     {
;;;1478       wn = (n/7) + 1;
000096  fb90fb90          SDIV     r0,r0,r5
00009a  1c40              ADDS     r0,r0,#1
                  |L2.156|
;;;1479     }
;;;1480   
;;;1481     dn = d;
;;;1482     dc = f + 1;
00009c  1c49              ADDS     r1,r1,#1
;;;1483   }
00009e  e9c7e9c7          STRD     r4,r1,[r7,#8]
0000a2  6078              STR      r0,[r7,#4]  ; wn
0000a4  bdf0              POP      {r4-r7,pc}
;;;1484   
                          ENDP

0000a6  0000              DCW      0x0000
                  |L2.168|
0000a8  00000000          DCD      ||.data||

                          AREA ||i.IsLeapYear||, CODE, READONLY, ALIGN=1

                  IsLeapYear PROC
;;;1494   {
;;;1495     if(nYear % 4 != 0) return 0;
000000  0781              LSLS     r1,r0,#30
000002  d10e              BNE      |L3.34|
;;;1496     if(nYear % 100 != 0) return 1;
000004  2164              MOVS     r1,#0x64
000006  fbb0fbb0          UDIV     r2,r0,r1
00000a  fb01fb01          MLS      r1,r1,r2,r0
00000e  b931              CBNZ     r1,|L3.30|
;;;1497     return (u8)(nYear % 400 == 0);
000010  f44ff44f          MOV      r1,#0x190
000014  fbb0fbb0          UDIV     r2,r0,r1
000018  fb01fb01          MLS      r0,r1,r2,r0
00001c  b908              CBNZ     r0,|L3.34|
                  |L3.30|
00001e  2001              MOVS     r0,#1
;;;1498   }
000020  4770              BX       lr
                  |L3.34|
000022  2000              MOVS     r0,#0                 ;1497
000024  4770              BX       lr
;;;1499   
                          ENDP


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

                  Date_Display PROC
;;;608    void Date_Display(u16 nYear, u8 nMonth, u8 nDay)
;;;609    {
000000  e92de92d          PUSH     {r0-r2,r4-r11,lr}
000004  4681              MOV      r9,r0
000006  460e              MOV      r6,r1
;;;610      u32 mline = 0, mcolumn = 319, month = 0;
000008  f240f240          MOV      r11,#0x13f
;;;611      u32 monthlength = 0;
;;;612    
;;;613      if(nMonth == 2)
00000c  2902              CMP      r1,#2
00000e  d108              BNE      |L4.34|
;;;614      {
;;;615        if(IsLeapYear(nYear))
000010  4648              MOV      r0,r9
000012  f7fff7ff          BL       IsLeapYear
000016  b108              CBZ      r0,|L4.28|
;;;616        {
;;;617          monthlength = 30;
000018  251e              MOVS     r5,#0x1e
00001a  e006              B        |L4.42|
                  |L4.28|
;;;618        }
;;;619        else
;;;620        {
;;;621          monthlength = MonLen[nMonth - 1];
00001c  4888              LDR      r0,|L4.576|
00001e  7845              LDRB     r5,[r0,#1]
000020  e003              B        |L4.42|
                  |L4.34|
;;;622        }    
;;;623      }
;;;624      else
;;;625      {
;;;626        monthlength = MonLen[nMonth - 1];
000022  4887              LDR      r0,|L4.576|
000024  4430              ADD      r0,r0,r6
000026  f810f810          LDRB     r5,[r0,#-1]
                  |L4.42|
;;;627      }
;;;628    
;;;629      /* Set the Back Color */
;;;630      LCD_SetBackColor(Blue2);
00002a  f240f240          MOV      r0,#0x51f
00002e  f7fff7ff          BL       LCD_SetBackColor
;;;631      /* Set the Text Color */
;;;632      LCD_SetTextColor(Yellow);
000032  f64ff64f          MOV      r0,#0xffe0
000036  f7fff7ff          BL       LCD_SetTextColor
;;;633      

⌨️ 快捷键说明

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