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

📄 guidev_16.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_16.o --depend=.\Obj\guidev_16.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\MemDev\GUIDEV_16.c]
                          THUMB

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

                  _DrawBitLine1BPP PROC
;;;89     */
;;;90     static void _DrawBitLine1BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, unsigned int xsize,
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;91                                  const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;92     {
000004  4689              MOV      r9,r1
000006  4698              MOV      r8,r3
;;;93       PIXELINDEX Index1;
;;;94       PIXELINDEX IndexMask;
;;;95       unsigned pixels;
;;;96       unsigned PixelCnt;
;;;97       PixelCnt = 8 - Diff;
000008  e9dd170e          LDRD     r1,r7,[sp,#0x38]
;;;98       pixels = LCD_aMirror[*p] >> Diff;
00000c  781b              LDRB     r3,[r3,#0]
00000e  4d3e              LDR      r5,|L1.264|
000010  4683              MOV      r11,r0                ;92
000012  5ced              LDRB     r5,[r5,r3]
000014  f1c10408          RSB      r4,r1,#8              ;97
000018  40cd              LSRS     r5,r5,r1
;;;99     
;;;100      GUI_DEBUG_ERROROUT3_IF( x < pDev->x0, "GUIDEV.c: DrawBitLine1BPP, Act= %d, Border= %d, Clip= %d", x,pDev->x0, GUI_Context.ClipRect.x0);
;;;101    
;;;102      switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
00001a  493c              LDR      r1,|L1.268|
00001c  a810              ADD      r0,sp,#0x40
00001e  c845              LDM      r0,{r0,r2,r6}
000020  7b09              LDRB     r1,[r1,#0xc]  ; GUI_Context
000022  f0110103          ANDS     r1,r1,#3
000026  d006              BEQ      |L1.54|
000028  2901              CMP      r1,#1
00002a  d050              BEQ      |L1.206|
00002c  2902              CMP      r1,#2
00002e  d168              BNE      |L1.258|
;;;103      case 0:    /* Write mode */
;;;104        do {
;;;105          /* Prepare loop */
;;;106          if (PixelCnt > xsize) {
;;;107            PixelCnt = xsize;
;;;108          }
;;;109          xsize -= PixelCnt;
;;;110          /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;111          do {
;;;112            *pDest++ = *(pTrans + (pixels & 1));
;;;113            pixels >>= 1;
;;;114          } while (--PixelCnt);
;;;115          /* Check if an other Source byte needs to be loaded */
;;;116          if (xsize == 0) {
;;;117            return;
;;;118          }
;;;119          PixelCnt = 8;
;;;120          pixels = LCD_aMirror[*++p];
;;;121        } while (1);
;;;122      case LCD_DRAWMODE_TRANS:
;;;123        Index1 = *(pTrans + 1);
000030  f8b0a002          LDRH     r10,[r0,#2]
;;;124        do {
000034  e016              B        |L1.100|
                  |L1.54|
000036  4934              LDR      r1,|L1.264|
                  |L1.56|
000038  42bc              CMP      r4,r7                 ;106
00003a  d900              BLS      |L1.62|
00003c  463c              MOV      r4,r7                 ;107
                  |L1.62|
00003e  1b3f              SUBS     r7,r7,r4              ;109
                  |L1.64|
000040  f0050201          AND      r2,r5,#1              ;112
000044  f8302012          LDRH     r2,[r0,r2,LSL #1]     ;112
000048  086d              LSRS     r5,r5,#1              ;113
00004a  f8262b02          STRH     r2,[r6],#2            ;112
00004e  1e64              SUBS     r4,r4,#1              ;114
000050  d1f6              BNE      |L1.64|
000052  2f00              CMP      r7,#0                 ;116
000054  d055              BEQ      |L1.258|
000056  f1080201          ADD      r2,r8,#1              ;120
00005a  4690              MOV      r8,r2                 ;120
00005c  7812              LDRB     r2,[r2,#0]            ;120
00005e  2408              MOVS     r4,#8                 ;119
000060  5c8d              LDRB     r5,[r1,r2]            ;120
000062  e7e9              B        |L1.56|
                  |L1.100|
;;;125          /* Prepare loop */
;;;126          if (PixelCnt > xsize) {
000064  42bc              CMP      r4,r7
000066  d900              BLS      |L1.106|
;;;127            PixelCnt = xsize;
000068  463c              MOV      r4,r7
                  |L1.106|
;;;128          }
;;;129          xsize -= PixelCnt;
00006a  1b3f              SUBS     r7,r7,r4
;;;130          if (pUsage) {
00006c  f1bb0f00          CMP      r11,#0
000070  d016              BEQ      |L1.160|
                  |L1.114|
;;;131            do {
;;;132              if (pixels == 0) {      /* Early out optimization; not required */
000072  b91d              CBNZ     r5,|L1.124|
;;;133                pDest += PixelCnt;
000074  eb060644          ADD      r6,r6,r4,LSL #1
;;;134                x     += PixelCnt;
000078  44a1              ADD      r9,r9,r4
;;;135                break;
00007a  e01e              B        |L1.186|
                  |L1.124|
;;;136              }
;;;137              if ((pixels & 1)) {
00007c  07e8              LSLS     r0,r5,#31
00007e  d008              BEQ      |L1.146|
;;;138                GUI_USAGE_AddPixel(pUsage, x, y);
000080  f8db0008          LDR      r0,[r11,#8]
000084  4649              MOV      r1,r9
000086  6803              LDR      r3,[r0,#0]
000088  4658              MOV      r0,r11
00008a  9a02              LDR      r2,[sp,#8]
00008c  4798              BLX      r3
;;;139                *pDest = Index1;
00008e  f8a6a000          STRH     r10,[r6,#0]
                  |L1.146|
;;;140              }
;;;141              x++;
;;;142              pDest++;
000092  1cb6              ADDS     r6,r6,#2
000094  f1090901          ADD      r9,r9,#1              ;141
;;;143              if (--PixelCnt == 0) {
000098  1e64              SUBS     r4,r4,#1
00009a  d00e              BEQ      |L1.186|
;;;144                break;
;;;145              }
;;;146              pixels >>= 1;
00009c  086d              LSRS     r5,r5,#1
;;;147            } while (1);
00009e  e7e8              B        |L1.114|
                  |L1.160|
;;;148          } else {
;;;149            do {
;;;150              if (pixels == 0) {      /* Early out optimization; not required */
0000a0  b915              CBNZ     r5,|L1.168|
;;;151                pDest += PixelCnt;
0000a2  eb060644          ADD      r6,r6,r4,LSL #1
;;;152                break;
0000a6  e008              B        |L1.186|
                  |L1.168|
;;;153              }
;;;154              if ((pixels & 1)) {
0000a8  07e8              LSLS     r0,r5,#31
0000aa  d001              BEQ      |L1.176|
;;;155                *pDest = Index1;
0000ac  f8a6a000          STRH     r10,[r6,#0]
                  |L1.176|
;;;156              }
;;;157              pDest++;
0000b0  1cb6              ADDS     r6,r6,#2
;;;158              if (--PixelCnt == 0) {
0000b2  1e64              SUBS     r4,r4,#1
0000b4  d001              BEQ      |L1.186|
;;;159                break;
;;;160              }
;;;161              pixels >>= 1;
0000b6  086d              LSRS     r5,r5,#1
;;;162            } while (1);
0000b8  e7f2              B        |L1.160|
                  |L1.186|
;;;163          }
;;;164          /* Check if an other Source byte needs to be loaded */
;;;165          if (xsize == 0) {
0000ba  2f00              CMP      r7,#0
0000bc  d021              BEQ      |L1.258|
;;;166            return;
;;;167          }
;;;168          PixelCnt = 8;
;;;169          pixels = LCD_aMirror[*(++p)];
0000be  f1080001          ADD      r0,r8,#1
0000c2  4680              MOV      r8,r0
0000c4  7800              LDRB     r0,[r0,#0]
0000c6  4910              LDR      r1,|L1.264|
0000c8  2408              MOVS     r4,#8                 ;168
0000ca  5c0d              LDRB     r5,[r1,r0]
;;;170        } while (1);
0000cc  e7ca              B        |L1.100|
                  |L1.206|
;;;171      case LCD_DRAWMODE_XOR:
;;;172        IndexMask = pDev->pfGetIndexMask();
0000ce  6a50              LDR      r0,[r2,#0x24]
0000d0  4780              BLX      r0
0000d2  490d              LDR      r1,|L1.264|
0000d4  b280              UXTH     r0,r0
                  |L1.214|
;;;173        do {
;;;174          /* Prepare loop */
;;;175          if (PixelCnt > xsize) {
0000d6  42bc              CMP      r4,r7
0000d8  d900              BLS      |L1.220|
;;;176            PixelCnt = xsize;
0000da  463c              MOV      r4,r7
                  |L1.220|
;;;177          }
;;;178          xsize -= PixelCnt;
0000dc  1b3f              SUBS     r7,r7,r4
                  |L1.222|
;;;179          /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;180          do {
;;;181            if ((pixels & 1)) {
0000de  07ea              LSLS     r2,r5,#31
0000e0  d002              BEQ      |L1.232|
;;;182              *pDest ^= IndexMask;
0000e2  8832              LDRH     r2,[r6,#0]
0000e4  4042              EORS     r2,r2,r0
0000e6  8032              STRH     r2,[r6,#0]
                  |L1.232|
;;;183            }
;;;184            *pDest++;
0000e8  1cb6              ADDS     r6,r6,#2
;;;185            pixels >>= 1;
0000ea  086d              LSRS     r5,r5,#1
;;;186          } while (--PixelCnt);
0000ec  1e64              SUBS     r4,r4,#1
0000ee  d1f6              BNE      |L1.222|
;;;187          /* Check if an other Source byte needs to be loaded */
;;;188          if (xsize == 0) {
0000f0  2f00              CMP      r7,#0
0000f2  d006              BEQ      |L1.258|
;;;189            return;
;;;190          }
;;;191          PixelCnt = 8;
;;;192          pixels = LCD_aMirror[*(++p)];
0000f4  f1080201          ADD      r2,r8,#1
0000f8  4690              MOV      r8,r2
0000fa  7812              LDRB     r2,[r2,#0]
0000fc  2408              MOVS     r4,#8                 ;191
0000fe  5c8d              LDRB     r5,[r1,r2]
;;;193        } while (1);
000100  e7e9              B        |L1.214|
                  |L1.258|
;;;194      }
;;;195    }
000102  e8bd9fff          POP      {r0-r12,pc}
;;;196    
                          ENDP

000106  0000              DCW      0x0000
                  |L1.264|
                          DCD      LCD_aMirror
                  |L1.268|
                          DCD      GUI_Context

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

                  _DrawBitLine2BPP PROC
;;;200    */
;;;201    static void _DrawBitLine2BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, int xsize,
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;202                                 const LCD_PIXELINDEX* pTrans, PIXELINDEX* pDest)
;;;203    {
000004  4683              MOV      r11,r0
;;;204      U8 pixels;
;;;205      U8  PixelCnt;
;;;206      PixelCnt = 4 - Diff;
000006  e9dd060e          LDRD     r0,r6,[sp,#0x38]
00000a  4689              MOV      r9,r1                 ;203
00000c  f1c00104          RSB      r1,r0,#4
000010  b2cc              UXTB     r4,r1
;;;207      pixels = (*p) << (Diff << 1);
000012  0042              LSLS     r2,r0,#1
000014  7819              LDRB     r1,[r3,#0]
;;;208      switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000016  4833              LDR      r0,|L2.228|
000018  4091              LSLS     r1,r1,r2              ;207
00001a  7b00              LDRB     r0,[r0,#0xc]  ; GUI_Context
00001c  e9dda710          LDRD     r10,r7,[sp,#0x40]
000020  4698              MOV      r8,r3                 ;203
000022  b2cd              UXTB     r5,r1                 ;207
000024  f0100003          ANDS     r0,r0,#3
000028  d004              BEQ      |L2.52|
00002a  2801              CMP      r0,#1
00002c  d03e              BEQ      |L2.172|
00002e  2802              CMP      r0,#2
000030  d155              BNE      |L2.222|
000032  e016              B        |L2.98|
                  |L2.52|
;;;209      case 0:    /* Write mode */
;;;210      PixelLoopWrite:
;;;211        if (PixelCnt > xsize) {

⌨️ 快捷键说明

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