📄 calendar.txt
字号:
; 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 + -