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

📄 editdec.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\editdec.o --depend=.\Obj\editdec.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\EDITDec.c]
                          THUMB

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

                  EDIT_SetDecMode PROC
;;;284    */
;;;285    void EDIT_SetDecMode(EDIT_Handle hEdit, I32 Value, I32 Min, I32 Max, int Shift, U8 Flags) {
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;286      EDIT_Obj* pObj;
;;;287      WM_LOCK();
;;;288      if (hEdit) {
000004  e9dd7908          LDRD     r7,r9,[sp,#0x20]
000008  ea5f0a00          MOVS     r10,r0                ;285
00000c  460d              MOV      r5,r1                 ;285
00000e  4616              MOV      r6,r2                 ;285
000010  4698              MOV      r8,r3                 ;285
000012  d025              BEQ      |L1.96|
;;;289        pObj = EDIT_H2P(hEdit);
000014  4650              MOV      r0,r10
000016  f7fffffe          BL       GUI_ALLOC_h2p
;;;290        pObj->pfAddKeyEx    = _AddKeyDec;
00001a  4912              LDR      r1,|L1.100|
;;;291        pObj->pfUpdateBuffer= _UpdateBuffer;
00001c  64c1              STR      r1,[r0,#0x4c]
00001e  4912              LDR      r1,|L1.104|
;;;292        pObj->CurrentValue  = Value;
;;;293        pObj->CursorPos     = 0;
000020  63c5              STR      r5,[r0,#0x3c]
000022  6501              STR      r1,[r0,#0x50]
;;;294        pObj->Min           = Min;
;;;295        pObj->Max           = Max;
;;;296        pObj->NumDecs       = Shift;
000024  e9c0680c          STRD     r6,r8,[r0,#0x30]
000028  2100              MOVS     r1,#0                 ;293
00002a  6401              STR      r1,[r0,#0x40]
00002c  f8807038          STRB     r7,[r0,#0x38]
;;;297        pObj->Flags         = Flags;
000030  f880904a          STRB     r9,[r0,#0x4a]
;;;298        pObj->EditMode      = GUI_EDIT_MODE_OVERWRITE;
000034  2101              MOVS     r1,#1
000036  4604              MOV      r4,r0                 ;289
000038  f8801048          STRB     r1,[r0,#0x48]
;;;299        _UpdateBuffer(hEdit);
00003c  4650              MOV      r0,r10
00003e  f7fffffe          BL       _UpdateBuffer
;;;300        if (EDIT__GetCurrentChar(pObj) == '.') {
000042  4620              MOV      r0,r4
000044  f7fffffe          BL       EDIT__GetCurrentChar
000048  282e              CMP      r0,#0x2e
00004a  d104              BNE      |L1.86|
;;;301          EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
00004c  6c21              LDR      r1,[r4,#0x40]
00004e  4620              MOV      r0,r4
000050  1c49              ADDS     r1,r1,#1
000052  f7fffffe          BL       EDIT__SetCursorPos
                  |L1.86|
;;;302        }
;;;303        WM_Invalidate(hEdit);
000056  4650              MOV      r0,r10
000058  e8bd47f0          POP      {r4-r10,lr}
00005c  f7ffbffe          B.W      WM_InvalidateWindow
                  |L1.96|
;;;304      }
;;;305      WM_UNLOCK();
;;;306    }
000060  e8bd87f0          POP      {r4-r10,pc}
;;;307    
                          ENDP

                  |L1.100|
                          DCD      _AddKeyDec
                  |L1.104|
                          DCD      _UpdateBuffer

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

                  _AddKeyDec PROC
;;;185    */
;;;186    static void _AddKeyDec(EDIT_Handle hObj, int Key) {
000000  e92d5ff3          PUSH     {r0,r1,r4-r12,lr}
000004  460c              MOV      r4,r1
;;;187      char c;
;;;188      EDIT_Obj * pObj;
;;;189      pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */
000006  9800              LDR      r0,[sp,#0]
000008  f7fffffe          BL       GUI_ALLOC_h2p
00000c  0006              MOVS     r6,r0
;;;190      if (pObj) {
00000e  d029              BEQ      |L2.100|
;;;191        switch (Key) {
000010  2c13              CMP      r4,#0x13
000012  d02a              BEQ      |L2.106|
000014  dc06              BGT      |L2.36|
000016  2c10              CMP      r4,#0x10
000018  d03a              BEQ      |L2.144|
00001a  2c11              CMP      r4,#0x11
00001c  d016              BEQ      |L2.76|
00001e  2c12              CMP      r4,#0x12
000020  d14a              BNE      |L2.184|
000022  e031              B        |L2.136|
                  |L2.36|
000024  2c2b              CMP      r4,#0x2b
000026  d009              BEQ      |L2.60|
000028  2c2d              CMP      r4,#0x2d
00002a  d145              BNE      |L2.184|
;;;192          case '+':
;;;193            if (pObj->CursorPos == 0) {
;;;194              _MakePositive(pObj, hObj);
;;;195              _IncrementCursor(pObj);
;;;196            }
;;;197            break;
;;;198          case '-':
;;;199            if (pObj->CursorPos == 0) {
00002c  6c30              LDR      r0,[r6,#0x40]
00002e  2800              CMP      r0,#0
000030  d118              BNE      |L2.100|
;;;200              _MakeNegative(pObj, hObj);
000032  4630              MOV      r0,r6
000034  9900              LDR      r1,[sp,#0]
000036  f7fffffe          BL       _MakeNegative
;;;201              _IncrementCursor(pObj);
00003a  e025              B        |L2.136|
                  |L2.60|
00003c  6c30              LDR      r0,[r6,#0x40]         ;193
00003e  2800              CMP      r0,#0                 ;193
000040  d178              BNE      |L2.308|
000042  4630              MOV      r0,r6                 ;194
000044  9900              LDR      r1,[sp,#0]            ;194
000046  f7fffffe          BL       _MakePositive
00004a  e01d              B        |L2.136|
                  |L2.76|
;;;202            }
;;;203            break;
;;;204          #if EDIT_DEC_DIGITONLY
;;;205            case GUI_KEY_UP:
;;;206              c = EDIT__GetCurrentChar(pObj);
;;;207              if ((c == '-') || (c == '+')) {
;;;208                _SwapSign(pObj, hObj);
;;;209              } else {
;;;210                int Digit = GetCurrentDigit(pObj) + 1;
;;;211                if (Digit > 9)
;;;212                  Digit = 0;
;;;213                _EditDec(Digit, pObj, hObj);
;;;214              }
;;;215              break;
;;;216            case GUI_KEY_DOWN:
;;;217              c = EDIT__GetCurrentChar(pObj);
;;;218              if ((c == '-') || (c == '+')) {
;;;219                _SwapSign(pObj, hObj);
;;;220              } else {
;;;221                int Digit = GetCurrentDigit(pObj) - 1;
;;;222                if (Digit < 0)
;;;223                  Digit = 9;
;;;224                _EditDec(Digit, pObj, hObj);
;;;225              }
;;;226              break;
;;;227          #else
;;;228            case GUI_KEY_UP:
;;;229              c = EDIT__GetCurrentChar(pObj);
00004c  4630              MOV      r0,r6
00004e  f7fffffe          BL       EDIT__GetCurrentChar
000052  b2c0              UXTB     r0,r0
;;;230              if ((c == '-') || (c == '+')) {
000054  282d              CMP      r0,#0x2d
000056  d001              BEQ      |L2.92|
000058  282b              CMP      r0,#0x2b
00005a  d104              BNE      |L2.102|
                  |L2.92|
;;;231                _SwapSign(pObj, hObj);
00005c  4630              MOV      r0,r6
00005e  9900              LDR      r1,[sp,#0]
000060  f7fffffe          BL       _SwapSign
                  |L2.100|
000064  e066              B        |L2.308|
                  |L2.102|
;;;232              } else {
;;;233                _AddPosition(pObj, hObj, 1);
000066  2201              MOVS     r2,#1
000068  e009              B        |L2.126|
                  |L2.106|
;;;234              }
;;;235              break;
;;;236            case GUI_KEY_DOWN:
;;;237              c = EDIT__GetCurrentChar(pObj);
00006a  4630              MOV      r0,r6
00006c  f7fffffe          BL       EDIT__GetCurrentChar
000070  b2c0              UXTB     r0,r0
;;;238              if ((c == '-') || (c == '+')) {
000072  282d              CMP      r0,#0x2d
000074  d0f2              BEQ      |L2.92|
000076  282b              CMP      r0,#0x2b
000078  d0f0              BEQ      |L2.92|
;;;239                _SwapSign(pObj, hObj);
;;;240              } else {
;;;241                _AddPosition(pObj, hObj, -1);
00007a  f04f32ff          MOV      r2,#0xffffffff
                  |L2.126|
00007e  4630              MOV      r0,r6                 ;233
000080  9900              LDR      r1,[sp,#0]            ;233
000082  f7fffffe          BL       _AddPosition
000086  e055              B        |L2.308|
                  |L2.136|
;;;242              }
;;;243              break;
;;;244          #endif
;;;245          case GUI_KEY_RIGHT:
;;;246            _IncrementCursor(pObj);
000088  4630              MOV      r0,r6
00008a  f7fffffe          BL       _IncrementCursor
;;;247            break;
00008e  e051              B        |L2.308|
                  |L2.144|
;;;248          case GUI_KEY_LEFT:
;;;249            EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
000090  6c31              LDR      r1,[r6,#0x40]
000092  4630              MOV      r0,r6
000094  1e49              SUBS     r1,r1,#1
000096  f7fffffe          BL       EDIT__SetCursorPos
;;;250            if (EDIT__GetCurrentChar(pObj) == '.') {
00009a  4630              MOV      r0,r6
00009c  f7fffffe          BL       EDIT__GetCurrentChar
0000a0  282e              CMP      r0,#0x2e
0000a2  d147              BNE      |L2.308|
;;;251              if (pObj->CursorPos > 0) {
0000a4  6c31              LDR      r1,[r6,#0x40]
0000a6  2900              CMP      r1,#0
0000a8  dd01              BLE      |L2.174|
;;;252                EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
0000aa  1e49              SUBS     r1,r1,#1
0000ac  e000              B        |L2.176|
                  |L2.174|
;;;253              } else {
;;;254                EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
0000ae  1c49              ADDS     r1,r1,#1
                  |L2.176|
0000b0  4630              MOV      r0,r6
0000b2  f7fffffe          BL       EDIT__SetCursorPos
0000b6  e03d              B        |L2.308|
                  |L2.184|
;;;255              }
;;;256            }
;;;257            break;
;;;258          default:
;;;259            {
;;;260              char c = EDIT__GetCurrentChar(pObj);
0000b8  4630              MOV      r0,r6
0000ba  f7fffffe          BL       EDIT__GetCurrentChar
0000be  b2c0              UXTB     r0,r0
;;;261              if ((c != '-') && (c != '+')) {
0000c0  282d              CMP      r0,#0x2d
0000c2  d037              BEQ      |L2.308|
0000c4  282b              CMP      r0,#0x2b
0000c6  d035              BEQ      |L2.308|
;;;262                int Digit = _DecChar2Int(Key);
0000c8  4620              MOV      r0,r4
0000ca  f7fffffe          BL       _DecChar2Int
0000ce  f1b00800          SUBS     r8,r0,#0
;;;263                if (Digit >= 0) {
0000d2  db2f              BLT      |L2.308|
0000d4  2400              MOVS     r4,#0
0000d6  4625              MOV      r5,r4
0000d8  f9b60028          LDRSH    r0,[r6,#0x28]
0000dc  f7fffffe          BL       GUI_ALLOC_h2p
0000e0  4682              MOV      r10,r0
0000e2  2700              MOVS     r7,#0
0000e4  f8dfb058          LDR      r11,|L2.320|
0000e8  e01b              B        |L2.290|

⌨️ 快捷键说明

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