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

📄 lcd_rotatecw.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\lcd_rotatecw.o --depend=.\Obj\lcd_rotatecw.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\Core\LCD_RotateCW.c]
                          THUMB

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

                  _DrawBitLine1BPP PROC
;;;37     */
;;;38     static void  _DrawBitLine1BPP(int x, int y, U8 const GUI_UNI_PTR *p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;39       LCD_PIXELINDEX Index0 = *(pTrans+0);
000004  e9dd700e          LDRD     r7,r0,[sp,#0x38]
;;;40       LCD_PIXELINDEX Index1 = *(pTrans+1);
;;;41       y -= Diff;
000008  1ace              SUBS     r6,r1,r3
;;;42       switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
00000a  492f              LDR      r1,|L1.200|
00000c  f8b08000          LDRH     r8,[r0,#0]            ;39
000010  f8b09002          LDRH     r9,[r0,#2]            ;40
000014  4615              MOV      r5,r2                 ;38
000016  7b08              LDRB     r0,[r1,#0xc]  ; GUI_Context
;;;43       case 0:
;;;44         do {
;;;45           LCDDEV_L0_SetPixelIndex(x, y, (*p & (0x80 >> Diff)) ? Index1 : Index0);
000018  2280              MOVS     r2,#0x80
00001a  461c              MOV      r4,r3                 ;38
00001c  f0100003          ANDS     r0,r0,#3              ;42
000020  d006              BEQ      |L1.48|
000022  2801              CMP      r0,#1                 ;42
000024  d032              BEQ      |L1.140|
000026  2802              CMP      r0,#2                 ;42
000028  d119              BNE      |L1.94|
00002a  4692              MOV      r10,r2
00002c  4688              MOV      r8,r1                 ;42
;;;46           y++;
;;;47     			if (++Diff == 8) {
;;;48             Diff = 0;
;;;49     				p++;
;;;50     			}
;;;51     		} while (--xsize);
;;;52         break;
;;;53       case LCD_DRAWMODE_TRANS:
;;;54         do {
00002e  e018              B        |L1.98|
                  |L1.48|
000030  4692              MOV      r10,r2                ;45
000032  468b              MOV      r11,r1                ;42
                  |L1.52|
000034  7829              LDRB     r1,[r5,#0]            ;45
000036  fa2af004          LSR      r0,r10,r4             ;45
00003a  464a              MOV      r2,r9                 ;45
00003c  4201              TST      r1,r0                 ;45
00003e  d100              BNE      |L1.66|
000040  4642              MOV      r2,r8                 ;45
                  |L1.66|
000042  f8db0048          LDR      r0,[r11,#0x48]        ;45  ; GUI_Context
000046  4631              MOV      r1,r6                 ;45
000048  6a43              LDR      r3,[r0,#0x24]         ;45
00004a  9800              LDR      r0,[sp,#0]            ;45
00004c  4798              BLX      r3                    ;45
00004e  1c76              ADDS     r6,r6,#1              ;46
000050  1c64              ADDS     r4,r4,#1              ;47
000052  2c08              CMP      r4,#8                 ;47
000054  d101              BNE      |L1.90|
000056  2400              MOVS     r4,#0                 ;48
000058  1c6d              ADDS     r5,r5,#1              ;49
                  |L1.90|
00005a  1e7f              SUBS     r7,r7,#1              ;51
00005c  d1ea              BNE      |L1.52|
                  |L1.94|
;;;55       		if (*p & (0x80 >> Diff))
;;;56             LCDDEV_L0_SetPixelIndex(x, y, Index1);
;;;57           y++;
;;;58     			if (++Diff == 8) {
;;;59             Diff = 0;
;;;60     				p++;
;;;61     			}
;;;62     		} while (--xsize);
;;;63         break;
;;;64       case LCD_DRAWMODE_XOR:;
;;;65         do {
;;;66       		if (*p & (0x80 >> Diff)) {
;;;67             int Pixel = LCD_L0_GetPixelIndex(x, y);
;;;68             LCDDEV_L0_SetPixelIndex(x, y, LCD_NUM_COLORS - 1 - Pixel);
;;;69           }
;;;70           y++;
;;;71     			if (++Diff == 8) {
;;;72             Diff = 0;
;;;73     				p++;
;;;74     			}
;;;75     		} while (--xsize);
;;;76         break;
;;;77     	}
;;;78     }
00005e  e8bd9fff          POP      {r0-r12,pc}
                  |L1.98|
000062  7828              LDRB     r0,[r5,#0]            ;55
000064  fa2af104          LSR      r1,r10,r4             ;55
000068  4208              TST      r0,r1                 ;55
00006a  d006              BEQ      |L1.122|
00006c  f8d80048          LDR      r0,[r8,#0x48]         ;56  ; GUI_Context
000070  464a              MOV      r2,r9                 ;56
000072  6a43              LDR      r3,[r0,#0x24]         ;56
000074  4631              MOV      r1,r6                 ;56
000076  9800              LDR      r0,[sp,#0]            ;56
000078  4798              BLX      r3                    ;56
                  |L1.122|
00007a  1c76              ADDS     r6,r6,#1              ;57
00007c  1c64              ADDS     r4,r4,#1              ;58
00007e  2c08              CMP      r4,#8                 ;58
000080  d101              BNE      |L1.134|
000082  2400              MOVS     r4,#0                 ;59
000084  1c6d              ADDS     r5,r5,#1              ;60
                  |L1.134|
000086  1e7f              SUBS     r7,r7,#1              ;62
000088  d1eb              BNE      |L1.98|
00008a  e7e8              B        |L1.94|
                  |L1.140|
00008c  4691              MOV      r9,r2                 ;45
00008e  4688              MOV      r8,r1                 ;42
000090  f64f7aff          MOV      r10,#0xffff           ;68
                  |L1.148|
000094  7829              LDRB     r1,[r5,#0]            ;66
000096  fa29f004          LSR      r0,r9,r4              ;66
00009a  4201              TST      r1,r0                 ;66
00009c  d00b              BEQ      |L1.182|
00009e  4631              MOV      r1,r6                 ;67
0000a0  9800              LDR      r0,[sp,#0]            ;67
0000a2  f7fffffe          BL       LCD_L0_GetPixelIndex
0000a6  ebaa0200          SUB      r2,r10,r0             ;68
0000aa  f8d80048          LDR      r0,[r8,#0x48]         ;68  ; GUI_Context
0000ae  4631              MOV      r1,r6                 ;68
0000b0  6a43              LDR      r3,[r0,#0x24]         ;68
0000b2  9800              LDR      r0,[sp,#0]            ;68
0000b4  4798              BLX      r3                    ;68
                  |L1.182|
0000b6  1c76              ADDS     r6,r6,#1              ;70
0000b8  1c64              ADDS     r4,r4,#1              ;71
0000ba  2c08              CMP      r4,#8                 ;71
0000bc  d101              BNE      |L1.194|
0000be  2400              MOVS     r4,#0                 ;72
0000c0  1c6d              ADDS     r5,r5,#1              ;73
                  |L1.194|
0000c2  1e7f              SUBS     r7,r7,#1              ;75
0000c4  d1e6              BNE      |L1.148|
0000c6  e7ca              B        |L1.94|
;;;79     
                          ENDP

                  |L1.200|
                          DCD      GUI_Context

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

                  _DrawBitmapCW PROC
;;;162    */
;;;163    static void _DrawBitmapCW(int x0, int y0, int xsize, int ysize, int xMul, int yMul,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;164                               int BitsPerPixel, int BytesPerLine,
;;;165                               const U8 GUI_UNI_PTR * pPixel, const LCD_PIXELINDEX* pTrans)
;;;166    {
000004  b089              SUB      sp,sp,#0x24
;;;167      U8  Data = 0;
;;;168      int x1, y1;
;;;169      /* Handle the optional Y-magnification */
;;;170      y1 = y0 + ysize - 1;
000006  990a              LDR      r1,[sp,#0x28]
000008  f8dd8068          LDR      r8,[sp,#0x68]
00000c  18c8              ADDS     r0,r1,r3
00000e  1e40              SUBS     r0,r0,#1
;;;171      x1 = x0 + xsize - 1;
000010  9006              STR      r0,[sp,#0x18]
000012  9909              LDR      r1,[sp,#0x24]
000014  980b              LDR      r0,[sp,#0x2c]
000016  469b              MOV      r11,r3                ;166
000018  4408              ADD      r0,r0,r1
00001a  1e40              SUBS     r0,r0,#1
;;;172      /* Rotate positions */
;;;173      _TransformPointCW(&x0, &y0);
00001c  9007              STR      r0,[sp,#0x1c]
00001e  2500              MOVS     r5,#0                 ;167
000020  f8dda060          LDR      r10,[sp,#0x60]        ;170
000024  a90a              ADD      r1,sp,#0x28
000026  a809              ADD      r0,sp,#0x24
000028  f7fffffe          BL       _TransformPointCW
;;;174      _TransformPointCW(&x1, &y1);
00002c  a906              ADD      r1,sp,#0x18
00002e  a807              ADD      r0,sp,#0x1c
000030  f7fffffe          BL       _TransformPointCW
;;;175      /*  Handle BITMAP without magnification */
;;;176      if ((xMul == 1) && (yMul == 1)) {
000034  9816              LDR      r0,[sp,#0x58]
000036  2801              CMP      r0,#1
000038  d157              BNE      |L2.234|
00003a  9817              LDR      r0,[sp,#0x5c]
00003c  2801              CMP      r0,#1
00003e  d154              BNE      |L2.234|
;;;177        int Diff = 0;
;;;178        /* Clip top */
;;;179        if (y1 > GUI_Context.ClipRect.y1) {
000040  4a55              LDR      r2,|L2.408|
000042  9906              LDR      r1,[sp,#0x18]
000044  f9b2000a          LDRSH    r0,[r2,#0xa]  ; GUI_Context
000048  4288              CMP      r0,r1
00004a  da03              BGE      |L2.84|
;;;180          int Diff = y1 - GUI_Context.ClipRect.y1; 
;;;181          xsize -= Diff;
00004c  9b0b              LDR      r3,[sp,#0x2c]
00004e  1a09              SUBS     r1,r1,r0              ;180
000050  1a59              SUBS     r1,r3,r1
000052  910b              STR      r1,[sp,#0x2c]
                  |L2.84|
;;;182        }
;;;183        /* Clip bottom */
;;;184        if (y0 < GUI_Context.ClipRect.y0) {
000054  f9b23006          LDRSH    r3,[r2,#6]  ; GUI_Context
000058  990a              LDR      r1,[sp,#0x28]
00005a  428b              CMP      r3,r1
00005c  dd0e              BLE      |L2.124|
;;;185          Diff = GUI_Context.ClipRect.y1 - y0;
00005e  1a45              SUBS     r5,r0,r1
;;;186    			xsize -= Diff;
000060  980b              LDR      r0,[sp,#0x2c]
000062  1b40              SUBS     r0,r0,r5
;;;187    			switch (BitsPerPixel) {
000064  900b              STR      r0,[sp,#0x2c]
000066  f1ba0f01          CMP      r10,#1
00006a  d107              BNE      |L2.124|
;;;188    			case 1:
;;;189      			pPixel += (Diff >> 3); y0 -= (Diff >> 3) << 3; Diff &= 7;
00006c  f0250007          BIC      r0,r5,#7
000070  eb0808e5          ADD      r8,r8,r5,ASR #3
000074  1a08              SUBS     r0,r1,r0
000076  f0050507          AND      r5,r5,#7
00007a  900a              STR      r0,[sp,#0x28]
                  |L2.124|
;;;190    				break;
;;;191    			}
;;;192        }
;;;193        if (ysize <=0) {
00007c  f1bb0f00          CMP      r11,#0
000080  dd30              BLE      |L2.228|
;;;194    		  return;
;;;195        }
;;;196        /* Clip right side */
;;;197        if (x0 > GUI_Context.ClipRect.x1) {
000082  f9b20008          LDRSH    r0,[r2,#8]  ; GUI_Context
000086  9909              LDR      r1,[sp,#0x24]
000088  4288              CMP      r0,r1
00008a  da07              BGE      |L2.156|
;;;198          int Diff = x0 - GUI_Context.ClipRect.x1;
00008c  1a08              SUBS     r0,r1,r0
;;;199          ysize -= Diff;
;;;200          x0 -= Diff;
;;;201          pPixel += Diff * BytesPerLine;
00008e  9b19              LDR      r3,[sp,#0x64]
000090  1a09              SUBS     r1,r1,r0              ;200
000092  fb008803          MLA      r8,r0,r3,r8
000096  ebab0b00          SUB      r11,r11,r0            ;199
00009a  9109              STR      r1,[sp,#0x24]
                  |L2.156|
;;;202        }
;;;203        /* Clip left side */
;;;204        if (x1 < GUI_Context.ClipRect.x0) {
00009c  f9b20004          LDRSH    r0,[r2,#4]  ; GUI_Context
0000a0  9907              LDR      r1,[sp,#0x1c]
0000a2  4288              CMP      r0,r1
0000a4  dd04              BLE      |L2.176|
;;;205          int Diff = GUI_Context.ClipRect.x0 - x1;
0000a6  1a40              SUBS     r0,r0,r1
;;;206          x1 += Diff;
0000a8  4401              ADD      r1,r1,r0
;;;207          ysize -= Diff;
0000aa  ebab0b00          SUB      r11,r11,r0
0000ae  9107              STR      r1,[sp,#0x1c]

⌨️ 快捷键说明

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