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

📄 lcd_rotate180.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_rotate180.o --depend=.\Obj\lcd_rotate180.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_Rotate180.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  e9dd710e          LDRD     r7,r1,[sp,#0x38]
000008  f8b18000          LDRH     r8,[r1,#0]
;;;40       LCD_PIXELINDEX Index1 = *(pTrans+1);
00000c  f8b19002          LDRH     r9,[r1,#2]
000010  461c              MOV      r4,r3                 ;38
;;;41       x -= Diff;
;;;42       switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000012  492d              LDR      r1,|L1.200|
000014  1b06              SUBS     r6,r0,r4              ;41
000016  4615              MOV      r5,r2                 ;38
000018  7b08              LDRB     r0,[r1,#0xc]  ; GUI_Context
;;;43       case 0:
;;;44         do {
;;;45           LCDDEV_L0_SetPixelIndex(x--, y, (*p & (0x80 >> Diff)) ? Index1 : Index0);
00001a  2280              MOVS     r2,#0x80
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  4690              MOV      r8,r2
00002c  468a              MOV      r10,r1                ;42
;;;46     			if (++Diff == 8) {
;;;47             Diff = 0;
;;;48     				p++;
;;;49     			}
;;;50     		} while (--xsize);
;;;51         break;
;;;52       case LCD_DRAWMODE_TRANS:
;;;53         do {
00002e  e018              B        |L1.98|
                  |L1.48|
000030  4693              MOV      r11,r2                ;45
000032  468a              MOV      r10,r1                ;42
                  |L1.52|
000034  7828              LDRB     r0,[r5,#0]            ;45
000036  fa2bf104          LSR      r1,r11,r4             ;45
00003a  464a              MOV      r2,r9                 ;45
00003c  4208              TST      r0,r1                 ;45
00003e  d100              BNE      |L1.66|
000040  4642              MOV      r2,r8                 ;45
                  |L1.66|
000042  f8da1048          LDR      r1,[r10,#0x48]        ;45  ; GUI_Context
000046  4630              MOV      r0,r6                 ;45
000048  6a4b              LDR      r3,[r1,#0x24]         ;45
00004a  1e76              SUBS     r6,r6,#1              ;45
00004c  9901              LDR      r1,[sp,#4]            ;45
00004e  4798              BLX      r3                    ;45
000050  1c64              ADDS     r4,r4,#1              ;46
000052  2c08              CMP      r4,#8                 ;46
000054  d101              BNE      |L1.90|
000056  2400              MOVS     r4,#0                 ;47
000058  1c6d              ADDS     r5,r5,#1              ;48
                  |L1.90|
00005a  1e7f              SUBS     r7,r7,#1              ;50
00005c  d1ea              BNE      |L1.52|
                  |L1.94|
;;;54       		if (*p & (0x80 >> Diff))
;;;55             LCDDEV_L0_SetPixelIndex(x, y, Index1);
;;;56           x--;
;;;57     			if (++Diff == 8) {
;;;58             Diff = 0;
;;;59     				p++;
;;;60     			}
;;;61     		} while (--xsize);
;;;62         break;
;;;63       case LCD_DRAWMODE_XOR:;
;;;64         do {
;;;65       		if (*p & (0x80 >> Diff)) {
;;;66             int Pixel = LCD_L0_GetPixelIndex(x, y);
;;;67             LCDDEV_L0_SetPixelIndex(x, y, LCD_NUM_COLORS - 1 - Pixel);
;;;68           }
;;;69           x--;
;;;70     			if (++Diff == 8) {
;;;71             Diff = 0;
;;;72     				p++;
;;;73     			}
;;;74     		} while (--xsize);
;;;75         break;
;;;76     	}
;;;77     }
00005e  e8bd9fff          POP      {r0-r12,pc}
                  |L1.98|
000062  7828              LDRB     r0,[r5,#0]            ;54
000064  fa28f104          LSR      r1,r8,r4              ;54
000068  4208              TST      r0,r1                 ;54
00006a  d006              BEQ      |L1.122|
00006c  f8da0048          LDR      r0,[r10,#0x48]        ;55  ; GUI_Context
000070  464a              MOV      r2,r9                 ;55
000072  6a43              LDR      r3,[r0,#0x24]         ;55
000074  4630              MOV      r0,r6                 ;55
000076  9901              LDR      r1,[sp,#4]            ;55
000078  4798              BLX      r3                    ;55
                  |L1.122|
00007a  1e76              SUBS     r6,r6,#1              ;56
00007c  1c64              ADDS     r4,r4,#1              ;57
00007e  2c08              CMP      r4,#8                 ;57
000080  d101              BNE      |L1.134|
000082  2400              MOVS     r4,#0                 ;58
000084  1c6d              ADDS     r5,r5,#1              ;59
                  |L1.134|
000086  1e7f              SUBS     r7,r7,#1              ;61
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           ;67
                  |L1.148|
000094  7829              LDRB     r1,[r5,#0]            ;65
000096  fa29f004          LSR      r0,r9,r4              ;65
00009a  4201              TST      r1,r0                 ;65
00009c  d00b              BEQ      |L1.182|
00009e  4630              MOV      r0,r6                 ;66
0000a0  9901              LDR      r1,[sp,#4]            ;66
0000a2  f7fffffe          BL       LCD_L0_GetPixelIndex
0000a6  ebaa0200          SUB      r2,r10,r0             ;67
0000aa  f8d80048          LDR      r0,[r8,#0x48]         ;67  ; GUI_Context
0000ae  9901              LDR      r1,[sp,#4]            ;67
0000b0  6a43              LDR      r3,[r0,#0x24]         ;67
0000b2  4630              MOV      r0,r6                 ;67
0000b4  4798              BLX      r3                    ;67
                  |L1.182|
0000b6  1e76              SUBS     r6,r6,#1              ;69
0000b8  1c64              ADDS     r4,r4,#1              ;70
0000ba  2c08              CMP      r4,#8                 ;70
0000bc  d101              BNE      |L1.194|
0000be  2400              MOVS     r4,#0                 ;71
0000c0  1c6d              ADDS     r5,r5,#1              ;72
                  |L1.194|
0000c2  1e7f              SUBS     r7,r7,#1              ;74
0000c4  d1e6              BNE      |L1.148|
0000c6  e7ca              B        |L1.94|
;;;78     
                          ENDP

                  |L1.200|
                          DCD      GUI_Context

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

                  _DrawBitmap180 PROC
;;;155    */
;;;156    static void _DrawBitmap180(int x0, int y0, int xsize, int ysize, int xMul, int yMul,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;157                               int BitsPerPixel, int BytesPerLine,
;;;158                               const U8 GUI_UNI_PTR * pPixel, const LCD_PIXELINDEX* pTrans)
;;;159    {
000004  b087              SUB      sp,sp,#0x1c
;;;160      U8  Data = 0;
;;;161      int x1, y1;
;;;162      /* Handle the optional Y-magnification */
;;;163      y1 = y0 + ysize - 1;
000006  9908              LDR      r1,[sp,#0x20]
000008  469a              MOV      r10,r3                ;159
00000a  18c8              ADDS     r0,r1,r3
00000c  1e40              SUBS     r0,r0,#1
;;;164      x1 = x0 + xsize - 1;
00000e  9005              STR      r0,[sp,#0x14]
000010  9907              LDR      r1,[sp,#0x1c]
000012  9809              LDR      r0,[sp,#0x24]
000014  2500              MOVS     r5,#0                 ;160
000016  4408              ADD      r0,r0,r1
000018  1e40              SUBS     r0,r0,#1
;;;165      /* Rotate positions */
;;;166      _TransformPoint180(&x0, &y0);
00001a  9006              STR      r0,[sp,#0x18]
00001c  f8ddb058          LDR      r11,[sp,#0x58]        ;163
000020  9e18              LDR      r6,[sp,#0x60]         ;163
000022  a908              ADD      r1,sp,#0x20
000024  a807              ADD      r0,sp,#0x1c
000026  f7fffffe          BL       _TransformPoint180
;;;167      _TransformPoint180(&x1, &y1);
00002a  a905              ADD      r1,sp,#0x14
00002c  a806              ADD      r0,sp,#0x18
00002e  f7fffffe          BL       _TransformPoint180
;;;168      /*  Handle BITMAP without magnification */
;;;169      if ((xMul == 1) && (yMul == 1)) {
000032  9814              LDR      r0,[sp,#0x50]
000034  2801              CMP      r0,#1
000036  d154              BNE      |L2.226|
000038  9815              LDR      r0,[sp,#0x54]
00003a  2801              CMP      r0,#1
00003c  d151              BNE      |L2.226|
;;;170        int Diff;
;;;171        /* Clip top */
;;;172        if (y0 > GUI_Context.ClipRect.y1) {
00003e  4a55              LDR      r2,|L2.404|
000040  9908              LDR      r1,[sp,#0x20]
000042  f9b2000a          LDRSH    r0,[r2,#0xa]  ; GUI_Context
000046  4288              CMP      r0,r1
000048  da06              BGE      |L2.88|
;;;173          int Diff = y0 - GUI_Context.ClipRect.y1;
00004a  1a09              SUBS     r1,r1,r0
;;;174          y0       = GUI_Context.ClipRect.y1;
;;;175          pPixel  += Diff * BytesPerLine;
00004c  9008              STR      r0,[sp,#0x20]
00004e  9817              LDR      r0,[sp,#0x5c]
;;;176          ysize   -= Diff;
000050  ebaa0a01          SUB      r10,r10,r1
000054  fb016600          MLA      r6,r1,r0,r6           ;175
                  |L2.88|
;;;177        }
;;;178        /* Clip bottom */
;;;179        if (y1 < GUI_Context.ClipRect.y0) {
000058  f9b20006          LDRSH    r0,[r2,#6]  ; GUI_Context
00005c  9905              LDR      r1,[sp,#0x14]
00005e  4288              CMP      r0,r1
000060  dd02              BLE      |L2.104|
;;;180          int Diff = GUI_Context.ClipRect.y0 - y1;
000062  1a40              SUBS     r0,r0,r1
;;;181          ysize -= Diff;
000064  ebaa0a00          SUB      r10,r10,r0
                  |L2.104|
;;;182        }
;;;183        if (ysize <= 0) {
000068  f1ba0f00          CMP      r10,#0
00006c  dd36              BLE      |L2.220|
;;;184    		  return;
;;;185        }
;;;186        /* Clip right side */
;;;187        if (x1 < GUI_Context.ClipRect.x0) {
00006e  f9b20004          LDRSH    r0,[r2,#4]  ; GUI_Context
000072  9906              LDR      r1,[sp,#0x18]
000074  4288              CMP      r0,r1
000076  dd03              BLE      |L2.128|
;;;188          int Diff = GUI_Context.ClipRect.x0 - x1;
000078  1a40              SUBS     r0,r0,r1
;;;189          xsize   -= Diff;
00007a  9909              LDR      r1,[sp,#0x24]
00007c  1a08              SUBS     r0,r1,r0
00007e  9009              STR      r0,[sp,#0x24]
                  |L2.128|
;;;190        }
;;;191        /* Clip left side */
;;;192        Diff = 0;
;;;193        if (x0 > GUI_Context.ClipRect.x1) {
000080  f9b21008          LDRSH    r1,[r2,#8]  ; GUI_Context
000084  9807              LDR      r0,[sp,#0x1c]
000086  2500              MOVS     r5,#0                 ;192
000088  4281              CMP      r1,r0
00008a  da0e              BGE      |L2.170|
;;;194          Diff   = x0 - GUI_Context.ClipRect.x1;
00008c  1a45              SUBS     r5,r0,r1
;;;195    			xsize -= Diff;
00008e  9909              LDR      r1,[sp,#0x24]
000090  1b49              SUBS     r1,r1,r5
;;;196    			switch (BitsPerPixel) {
000092  9109              STR      r1,[sp,#0x24]
000094  f1bb0f01          CMP      r11,#1
000098  d107              BNE      |L2.170|
;;;197    			case 1:

⌨️ 快捷键说明

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