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

📄 guidev_8.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000074  7038              STRB     r0,[r7,#0]
;;;233            if (pUsage) {
000076  f1bb0f00          CMP      r11,#0
00007a  d006              BEQ      |L2.138|
;;;234              GUI_USAGE_AddPixel(pUsage, x, y);
00007c  f8db0008          LDR      r0,[r11,#8]
000080  4649              MOV      r1,r9
000082  6803              LDR      r3,[r0,#0]
000084  4658              MOV      r0,r11
000086  9a02              LDR      r2,[sp,#8]
000088  4798              BLX      r3
                  |L2.138|
;;;235            }
;;;236          }
;;;237          pDest++;
;;;238          x++;
00008a  06a8              LSLS     r0,r5,#26
00008c  1c7f              ADDS     r7,r7,#1              ;237
;;;239          pixels <<= 2;
00008e  0e05              LSRS     r5,r0,#24
;;;240        } while (--PixelCnt);
000090  1e64              SUBS     r4,r4,#1
000092  f1090901          ADD      r9,r9,#1              ;238
000096  f01404ff          ANDS     r4,r4,#0xff
00009a  d1e6              BNE      |L2.106|
;;;241        if (xsize) {
00009c  2e00              CMP      r6,#0
00009e  d01d              BEQ      |L2.220|
;;;242          PixelCnt = 4;
;;;243          pixels = *(++p);
0000a0  f1080001          ADD      r0,r8,#1
0000a4  2404              MOVS     r4,#4                 ;242
0000a6  4680              MOV      r8,r0
0000a8  7805              LDRB     r5,[r0,#0]
;;;244          goto PixelLoopTrans;
0000aa  e7da              B        |L2.98|
                  |L2.172|
;;;245        }
;;;246        break;
;;;247      case LCD_DRAWMODE_XOR:;
;;;248      PixelLoopXor:
;;;249        if (PixelCnt > xsize)
0000ac  42b4              CMP      r4,r6
0000ae  dd00              BLE      |L2.178|
;;;250          PixelCnt = xsize;
0000b0  b2f4              UXTB     r4,r6
                  |L2.178|
;;;251        xsize -= PixelCnt;
0000b2  1b36              SUBS     r6,r6,r4
                  |L2.180|
;;;252        do {
;;;253          if ((pixels & 0xc0))
0000b4  09a8              LSRS     r0,r5,#6
0000b6  d002              BEQ      |L2.190|
;;;254            *pDest ^= 255;
0000b8  7838              LDRB     r0,[r7,#0]
0000ba  43c0              MVNS     r0,r0
0000bc  7038              STRB     r0,[r7,#0]
                  |L2.190|
;;;255          pDest++;
0000be  06a8              LSLS     r0,r5,#26
0000c0  1c7f              ADDS     r7,r7,#1
;;;256          pixels <<= 2;
0000c2  0e05              LSRS     r5,r0,#24
;;;257        } while (--PixelCnt);
0000c4  1e64              SUBS     r4,r4,#1
0000c6  f01404ff          ANDS     r4,r4,#0xff
0000ca  d1f3              BNE      |L2.180|
;;;258        if (xsize) {
0000cc  2e00              CMP      r6,#0
0000ce  d005              BEQ      |L2.220|
;;;259          PixelCnt = 4;
;;;260          pixels = *(++p);
0000d0  f1080001          ADD      r0,r8,#1
0000d4  2404              MOVS     r4,#4                 ;259
0000d6  4680              MOV      r8,r0
0000d8  7805              LDRB     r5,[r0,#0]
;;;261          goto PixelLoopXor;
0000da  e7e7              B        |L2.172|
                  |L2.220|
;;;262        }
;;;263        break;
;;;264      }
;;;265    }
0000dc  e8bd9fff          POP      {r0-r12,pc}
;;;266    
                          ENDP

                  |L2.224|
                          DCD      GUI_Context

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

                  _DrawBitLine4BPP PROC
;;;270    */
;;;271    static void _DrawBitLine4BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, int xsize,
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;272                                 const LCD_PIXELINDEX* pTrans, PIXELINDEX* pDest)
;;;273    {
000004  468a              MOV      r10,r1
;;;274      U8 pixels;
;;;275      U8 PixelCnt;
;;;276      PixelCnt = 2 - Diff;
000006  e9dd160a          LDRD     r1,r6,[sp,#0x28]
00000a  4693              MOV      r11,r2                ;273
00000c  461f              MOV      r7,r3                 ;273
;;;277      pixels = (*p) << (Diff << 2);
00000e  781b              LDRB     r3,[r3,#0]
;;;278      switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000010  4a4f              LDR      r2,|L3.336|
000012  008d              LSLS     r5,r1,#2              ;277
000014  4681              MOV      r9,r0                 ;273
000016  40ab              LSLS     r3,r3,r5              ;277
000018  7b12              LDRB     r2,[r2,#0xc]  ; GUI_Context
00001a  e9dd840c          LDRD     r8,r4,[sp,#0x30]
00001e  f1c10002          RSB      r0,r1,#2              ;276
000022  b2c0              UXTB     r0,r0                 ;276
000024  b2dd              UXTB     r5,r3                 ;277
000026  f0120203          ANDS     r2,r2,#3
00002a  d01a              BEQ      |L3.98|
00002c  2a01              CMP      r2,#1
00002e  d079              BEQ      |L3.292|
000030  2a02              CMP      r2,#2
000032  d138              BNE      |L3.166|
;;;279    /*
;;;280              * Write mode *
;;;281    */
;;;282      case 0:
;;;283        /* Draw incomplete bytes to the left of center area */
;;;284        if (Diff) {
;;;285          *pDest = *(pTrans + (pixels >> 4));
;;;286          pDest++;
;;;287          xsize--;
;;;288          pixels = *++p;
;;;289        }
;;;290        /* Draw center area (2 pixels in one byte) */
;;;291        if (xsize >= 2) {
;;;292          int i = xsize >> 1;
;;;293          xsize &= 1;
;;;294          do {
;;;295            *pDest     = *(pTrans + (pixels >> 4));   /* Draw 1. (left) pixel */
;;;296            *(pDest+1) = *(pTrans + (pixels & 15));   /* Draw 2. (right) pixel */
;;;297            pDest += 2;
;;;298            pixels = *++p;
;;;299          } while (--i);
;;;300        }
;;;301        /* Draw incomplete bytes to the right of center area */
;;;302        if (xsize) {
;;;303          *pDest = * (pTrans + (pixels >> 4));
;;;304        }
;;;305        break;
;;;306    /*
;;;307              * Transparent draw mode *
;;;308    */
;;;309      case LCD_DRAWMODE_TRANS:
;;;310        /* Draw incomplete bytes to the left of center area */
;;;311        if (Diff) {
000034  2900              CMP      r1,#0
000036  d05f              BEQ      |L3.248|
;;;312          if (pixels & 0xF0) {
000038  0928              LSRS     r0,r5,#4
00003a  d00d              BEQ      |L3.88|
;;;313            *pDest = *(pTrans + (pixels >> 4));
00003c  0929              LSRS     r1,r5,#4
00003e  f8380011          LDRH     r0,[r8,r1,LSL #1]
000042  7020              STRB     r0,[r4,#0]
;;;314            if (pUsage) {
000044  f1b90f00          CMP      r9,#0
000048  d006              BEQ      |L3.88|
;;;315              GUI_USAGE_AddPixel(pUsage, x, y);
00004a  f8d90008          LDR      r0,[r9,#8]
00004e  465a              MOV      r2,r11
000050  6803              LDR      r3,[r0,#0]
000052  4651              MOV      r1,r10
000054  4648              MOV      r0,r9
000056  4798              BLX      r3
                  |L3.88|
;;;316            }
;;;317          }
;;;318          pDest++;
000058  1c64              ADDS     r4,r4,#1
;;;319          x++;
00005a  f10a0a01          ADD      r10,r10,#1
;;;320          xsize--;
00005e  1e76              SUBS     r6,r6,#1
;;;321          pixels = *++p;
000060  e048              B        |L3.244|
                  |L3.98|
000062  b139              CBZ      r1,|L3.116|
000064  0929              LSRS     r1,r5,#4              ;285
000066  f8380011          LDRH     r0,[r8,r1,LSL #1]     ;285
00006a  f8040b01          STRB     r0,[r4],#1            ;285
00006e  f8175f01          LDRB     r5,[r7,#1]!           ;288
000072  1e76              SUBS     r6,r6,#1              ;287
                  |L3.116|
000074  2e02              CMP      r6,#2                 ;291
000076  db10              BLT      |L3.154|
000078  1070              ASRS     r0,r6,#1              ;292
00007a  f0060601          AND      r6,r6,#1              ;293
                  |L3.126|
00007e  0929              LSRS     r1,r5,#4              ;295
000080  f8381011          LDRH     r1,[r8,r1,LSL #1]     ;295
000084  7021              STRB     r1,[r4,#0]            ;295
000086  f005010f          AND      r1,r5,#0xf            ;296
00008a  f8381011          LDRH     r1,[r8,r1,LSL #1]     ;296
00008e  7061              STRB     r1,[r4,#1]            ;296
000090  1ca4              ADDS     r4,r4,#2              ;297
000092  f8175f01          LDRB     r5,[r7,#1]!           ;298
000096  1e40              SUBS     r0,r0,#1              ;299
000098  d1f1              BNE      |L3.126|
                  |L3.154|
00009a  2e00              CMP      r6,#0                 ;302
00009c  d003              BEQ      |L3.166|
00009e  0929              LSRS     r1,r5,#4              ;303
0000a0  f8380011          LDRH     r0,[r8,r1,LSL #1]     ;303
0000a4  7020              STRB     r0,[r4,#0]            ;303
                  |L3.166|
;;;322        }
;;;323        /* Draw center area (2 pixels in one byte) */
;;;324        while (xsize >= 2) {
;;;325          /* Draw 1. (left) pixel */
;;;326          if (pixels & 0xF0) {
;;;327            *pDest = *(pTrans + (pixels >> 4));
;;;328            if (pUsage) {
;;;329              GUI_USAGE_AddPixel(pUsage, x, y);
;;;330            }
;;;331          }
;;;332          /* Draw 2. (right) pixel */
;;;333          if (pixels &= 15) {
;;;334            *(pDest + 1) = *(pTrans + pixels);
;;;335            if (pUsage) {
;;;336              GUI_USAGE_AddPixel(pUsage, x + 1, y);
;;;337            }
;;;338          }
;;;339          pDest += 2;
;;;340          x += 2;
;;;341          xsize -= 2;
;;;342          pixels = *++p;
;;;343        }
;;;344        /* Draw incomplete bytes to the right of center area */
;;;345        if (xsize) {
;;;346          if (pixels >>= 4) {
;;;347            *pDest = *(pTrans + pixels);
;;;348            if (pUsage) {
;;;349              GUI_USAGE_AddPixel(pUsage, x, y);
;;;350            }
;;;351          }
;;;352        }
;;;353        break;
;;;354      case LCD_DRAWMODE_XOR:;
;;;355      PixelLoopXor:
;;;356        if (PixelCnt > xsize)
;;;357          PixelCnt = xsize;
;;;358        xsize -= PixelCnt;
;;;359        do {
;;;360          if ((pixels & 0xc0)) {
;;;361            *pDest ^= 255;
;;;362          }
;;;363          pDest++;
;;;364          pixels <<= 4;
;;;365        } while (--PixelCnt);
;;;366        if (xsize) {
;;;367          PixelCnt = 2;
;;;368          pixels = *(++p);
;;;369          goto PixelLoopXor;
;;;370        }
;;;371        break;
;;;372      }
;;;373    }
0000a6  e8bd9ff0          POP      {r4-r12,pc}
                  |L3.170|
0000aa  0928              LSRS     r0,r5,#4              ;326
0000ac  d00d              BEQ      |L3.202|
0000ae  0928              LSRS     r0,r5,#4              ;327
0000b0  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;327
0000b4  7020              STRB     r0,[r4,#0]            ;327
0000b6  f1b90f00          CMP      r9,#0                 ;328
0000ba  d006              BEQ      |L3.202|
0000bc  f8d90008          LDR      r0,[r9,#8]            ;329
0000c0  465a              MOV      r2,r11                ;329
0000c2  6803              LDR      r3,[r0,#0]            ;329
0000c4  4651              MOV      r1,r10                ;329
0000c6  4648              MOV      r0,r9                 ;329
0000c8  4798              BLX      r3                    ;329
                  |L3.202|
0000ca  f015000f          ANDS     r0,r5,#0xf            ;333
0000ce  d00d              BEQ      |L3.236|
0000d0  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;334
0000d4  7060              STRB     r0,[r4,#1]            ;334
0000d6  f1b90f00          CMP      r9,#0                 ;335
0000da  d007              BEQ      |L3.236|
0000dc  f8d90008          LDR      r0,[r9,#8]            ;336
0000e0  465a              MOV      r2,r11                ;336
0000e2  6803              LDR      r3,[r0,#0]            ;336
0000e4  f10a0101          ADD      r1,r10,#1             ;336
0000e8  4648              MOV      r0,r9                 ;336
0000ea  4798              BLX      r3                    ;336
                  |L3.236|
0000ec  1ca4              ADDS     r4,r4,#2              ;339
0000ee  f10a0a02          ADD      r10,r10,#2            ;340
0000f2  1eb6              SUBS     r6,r6,#2              ;341
                  |L3.244|
0000f4  f8175f01          LDRB     r5,[r7,#1]!           ;321
                  |L3.248|
0000f8  2e02              CMP      r6,#2                 ;324
0000fa  dad6              BGE      |L3.170|
0000fc  2e00              CMP      r6,#0                 ;345
0000fe  d0d2              BEQ      |L3.166|
000100  0928              LSRS     r0,r5,#4              ;346
000102  d0d0              BEQ      |L3.166|
000104  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;347
000108  7020              STRB     r0,[r4,#0]            ;347
00010a  f1b90f00          CMP      r9,#0                 ;348
00010e  d0ca              BEQ      |L3.166|
000110  f8d90008          LDR      r0,[r9,#8]            ;349
000114  465a              MOV      r2,r11                ;349
000116  6803              LDR      r3,[r0,#0]            ;349
000118  4651              MOV      r1,r10                ;349
00011a  4648              MOV      r0,r9                 ;349
00011c  e8bd5ff0          POP      {r4-r12,lr}           ;349
000120  4718              BX       r3                    ;349
000122  e7ff              B        |L3.292|
                  |L3.292|
000124  42b0              CMP      r0,r6                 ;356
000126  dd00              BLE      |L3.298|
000128  b2f0              UXTB     r0,r6                 ;357
                  |L3.298|
00012a  1a36              SUBS     r6,r6,r0              ;358
                  |L3.300|
00012c  09a9              LSRS     r1,r5,#6              ;360
00012e  d002              BEQ      |L3.310|
000130  7821              LDRB     r1,[r4,#0]            ;361
000132  43c9              MVNS     r1,r1                 ;361
000134  7021              STRB     r1,[r4,#0]            ;361
                  |L3.310|
000136  0729              LSLS     r1,r5,#28             ;363
000138  1c64              ADDS     r4,r4,#1              ;363
00013a  0e0d              LSRS     r5,r1,#24             ;364
00013c  1e40              SUBS     r0,r0,#1              ;365
00013e  f01000ff          ANDS     r0,r0,#0xff           ;365
000142  d1f3              BNE      |L3.300|
000144  2e00              CMP      r6,#0                 ;366
000146  d0ae              BEQ      |L3.166|
000148  2002              MOVS     r0,#2                 ;367
00014a  f8175f01          LDRB     r5,[r7,#1]!           ;368

⌨️ 快捷键说明

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