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

📄 calendar.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\calendar.o --depend=.\Int_Flash\calendar.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\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  e92d47f0          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  f44f4778          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  f7fffffe          BL       LCD_SetBackColor
;;;92       /* Set the Text Color */
;;;93       LCD_SetTextColor(White);
000016  f64f78ff          MOV      r8,#0xffff
00001a  4640              MOV      r0,r8
00001c  f7fffffe          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  f7fffffe          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  f1040030          ADD      r0,r4,#0x30           ;98
000038  b2c2              UXTB     r2,r0                 ;98
00003a  4649              MOV      r1,r9                 ;98
00003c  20c0              MOVS     r0,#0xc0              ;98
00003e  f7fffffe          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  f7fffffe          BL       LCD_SetBackColor
;;;133          /* Set the Text Color */
;;;134          LCD_SetTextColor(Red);
00005c  4638              MOV      r0,r7
00005e  f7fffffe          BL       LCD_SetTextColor
;;;135          /* Display new value */
;;;136          LCD_DisplayChar(Line8, ColBegin, (tmpValue + 0x30));
000062  f1040030          ADD      r0,r4,#0x30
000066  b2c2              UXTB     r2,r0
000068  4649              MOV      r1,r9
00006a  20c0              MOVS     r0,#0xc0
00006c  f7fffffe          BL       LCD_DisplayChar
;;;137          /* Return the digit value and exit */
;;;138          return tmpValue;
000070  b2e0              UXTB     r0,r4
;;;139        }
;;;140      } 
;;;141    }
000072  e8bd87f0          POP      {r4-r10,pc}
;;;142    
                          ENDP


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

                  WeekDayNum PROC
;;;1444   static void WeekDayNum(u32 nyear, u8 nmonth, u8 nday)
;;;1445   {
000000  b5f0              PUSH     {r4-r7,lr}
;;;1446     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
;;;1447     s32 n = 0;
;;;1448   
;;;1449     if(nmonth < 3)
000006  2903              CMP      r1,#3
000008  d202              BCS      |L2.16|
;;;1450     {
;;;1451       a = nyear - 1;
00000a  bf00              NOP      
00000c  f1a00001          SUB      r0,r0,#1
                  |L2.16|
;;;1452     }
;;;1453     else
;;;1454     {
;;;1455       a = nyear;
;;;1456     }
;;;1457     
;;;1458     b = (a/4) - (a/100) + (a/400);
000010  f04f0c64          MOV      r12,#0x64
000014  fbb0f3fc          UDIV     r3,r0,r12
000018  f44f77c8          MOV      r7,#0x190
00001c  fbb0f5f7          UDIV     r5,r0,r7
000020  ebc30390          RSB      r3,r3,r0,LSR #2
000024  441d              ADD      r5,r5,r3
;;;1459     c = ((a - 1)/4) - ((a - 1)/100) + ((a - 1)/400);
000026  f1a00301          SUB      r3,r0,#1
00002a  fbb3fcfc          UDIV     r12,r3,r12
00002e  ebcc0c93          RSB      r12,r12,r3,LSR #2
000032  fbb3f3f7          UDIV     r3,r3,r7
000036  4463              ADD      r3,r3,r12
;;;1460     s = b - c;
000038  eba50303          SUB      r3,r5,r3
;;;1461   
;;;1462     if(nmonth < 3)
00003c  d205              BCS      |L2.74|
;;;1463     {
;;;1464       e = 0;
;;;1465       f =  nday - 1 + 31 * (nmonth - 1);
00003e  ebc11141          RSB      r1,r1,r1,LSL #5
000042  4411              ADD      r1,r1,r2
000044  f1a10120          SUB      r1,r1,#0x20
000048  e009              B        |L2.94|
                  |L2.74|
;;;1466     }
;;;1467     else
;;;1468     {
;;;1469       e = s + 1;
;;;1470       f = nday + (153*(nmonth - 3) + 2)/5 + 58 + s; 
00004a  2799              MOVS     r7,#0x99
00004c  4379              MULS     r1,r7,r1
00004e  f2a111c9          SUB      r1,r1,#0x1c9
000052  fb91f1f6          SDIV     r1,r1,r6
000056  4411              ADD      r1,r1,r2
000058  1c5c              ADDS     r4,r3,#1              ;1469
00005a  4419              ADD      r1,r1,r3
00005c  313a              ADDS     r1,r1,#0x3a
                  |L2.94|
;;;1471     }
;;;1472   
;;;1473     g = (a + b) % 7;
00005e  4428              ADD      r0,r0,r5
000060  2507              MOVS     r5,#7
000062  fbb0f2f5          UDIV     r2,r0,r5
000066  fb050212          MLS      r2,r5,r2,r0
;;;1474     d = (f + g - e) % 7;
00006a  1888              ADDS     r0,r1,r2
00006c  1b00              SUBS     r0,r0,r4
00006e  fbb0f4f5          UDIV     r4,r0,r5
000072  fb050414          MLS      r4,r5,r4,r0
;;;1475     n = f + 3 - d;
000076  1b08              SUBS     r0,r1,r4
000078  4f0b              LDR      r7,|L2.168|
00007a  1cc0              ADDS     r0,r0,#3
;;;1476   
;;;1477     if (n < 0)
00007c  d505              BPL      |L2.138|
;;;1478     {
;;;1479       wn = 53 - ((g - s)/5);
00007e  1ad0              SUBS     r0,r2,r3
000080  fbb0f0f6          UDIV     r0,r0,r6
000084  f1c00035          RSB      r0,r0,#0x35
000088  e008              B        |L2.156|
                  |L2.138|
;;;1480     }
;;;1481     else if (n > (364 + s))
00008a  f50373b6          ADD      r3,r3,#0x16c
00008e  4298              CMP      r0,r3
000090  d901              BLS      |L2.150|
;;;1482     {
;;;1483       wn = 1;
000092  2001              MOVS     r0,#1
000094  e002              B        |L2.156|
                  |L2.150|
;;;1484     }
;;;1485     else
;;;1486     {
;;;1487       wn = (n/7) + 1;
000096  fb90f0f5          SDIV     r0,r0,r5
00009a  1c40              ADDS     r0,r0,#1
                  |L2.156|
;;;1488     }
;;;1489   
;;;1490     dn = d;
;;;1491     dc = f + 1;
00009c  1c49              ADDS     r1,r1,#1
;;;1492   }
00009e  e9c74102          STRD     r4,r1,[r7,#8]
0000a2  6078              STR      r0,[r7,#4]  ; wn
0000a4  bdf0              POP      {r4-r7,pc}
;;;1493   
                          ENDP

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

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

                  IsLeapYear PROC
;;;1503   {
;;;1504     if(nYear % 4 != 0) return 0;
000000  0781              LSLS     r1,r0,#30
000002  d10e              BNE      |L3.34|
;;;1505     if(nYear % 100 != 0) return 1;
000004  2164              MOVS     r1,#0x64
000006  fbb0f2f1          UDIV     r2,r0,r1
00000a  fb010112          MLS      r1,r1,r2,r0
00000e  b931              CBNZ     r1,|L3.30|
;;;1506     return (u8)(nYear % 400 == 0);
000010  f44f71c8          MOV      r1,#0x190
000014  fbb0f2f1          UDIV     r2,r0,r1
000018  fb010012          MLS      r0,r1,r2,r0
00001c  b908              CBNZ     r0,|L3.34|
                  |L3.30|
00001e  2001              MOVS     r0,#1
;;;1507   }
000020  4770              BX       lr
                  |L3.34|
000022  2000              MOVS     r0,#0                 ;1506
000024  4770              BX       lr
;;;1508   
                          ENDP


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

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

⌨️ 快捷键说明

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