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

📄 lcd.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                          AREA ||i.LCD_DisplayChar||, CODE, READONLY, ALIGN=2

                  LCD_DisplayChar PROC
000000  3a20              SUBS     r2,r2,#0x20
000002  b2d2              UXTB     r2,r2
000004  4b03              LDR      r3,|L11.20|
000006  eb020242          ADD      r2,r2,r2,LSL #1
00000a  eb031202          ADD      r2,r3,r2,LSL #4
00000e  f7ffbffe          B.W      LCD_DrawChar
                          ENDP

000012  0000              DCW      0x0000
                  |L11.20|
000014  00000000          DCD      ||.constdata||

                          AREA ||i.LCD_DisplayStringLine||, CODE, READONLY, ALIGN=1

                  LCD_DisplayStringLine PROC
;;;282    void LCD_DisplayStringLine(u8 Line, u8 *ptr)
;;;283    {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;284      u32 i = 0;
000004  2400              MOVS     r4,#0
000006  4680              MOV      r8,r0                 ;283
000008  460d              MOV      r5,r1                 ;283
;;;285      u16 refcolumn = 319;
00000a  f240163f          MOV      r6,#0x13f
00000e  2701              MOVS     r7,#1
000010  e007              B        |L12.34|
                  |L12.18|
;;;286    
;;;287      /* Send the string character by character on lCD */
;;;288      while ((*ptr != 0) & (i < 20))
;;;289      {
;;;290        /* Display one character on LCD */
;;;291        LCD_DisplayChar(Line, refcolumn, *ptr);
000012  4631              MOV      r1,r6
000014  4640              MOV      r0,r8
000016  f7fffffe          BL       LCD_DisplayChar
;;;292        /* Decrement the column position by 16 */
;;;293        refcolumn -= 16;
00001a  3e10              SUBS     r6,r6,#0x10
;;;294        /* Point on the next character */
;;;295        ptr++;
00001c  1c6d              ADDS     r5,r5,#1
00001e  b2b6              UXTH     r6,r6                 ;293
;;;296        /* Increment the character counter */
;;;297        i++;
000020  1c64              ADDS     r4,r4,#1
                  |L12.34|
000022  782a              LDRB     r2,[r5,#0]            ;288
000024  b10a              CBZ      r2,|L12.42|
000026  2001              MOVS     r0,#1                 ;288
000028  e000              B        |L12.44|
                  |L12.42|
00002a  2000              MOVS     r0,#0                 ;288
                  |L12.44|
00002c  4639              MOV      r1,r7                 ;288
00002e  2c14              CMP      r4,#0x14              ;288
000030  d300              BCC      |L12.52|
000032  2100              MOVS     r1,#0                 ;288
                  |L12.52|
000034  4208              TST      r0,r1                 ;288
000036  d1ec              BNE      |L12.18|
;;;298      }
;;;299    }
000038  e8bd81f0          POP      {r4-r8,pc}
;;;300    
                          ENDP


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

                  LCD_ClearLine PROC
;;;177    {
;;;178      LCD_DisplayStringLine(Line, "                    ");
000000  a101              ADR      r1,|L13.8|
000002  f7ffbffe          B.W      LCD_DisplayStringLine
;;;179    }
;;;180    
                          ENDP

000006  0000              DCW      0x0000
                  |L13.8|
000008  202020202020202020202020202020202020202000        DCB      "                    ",0
00001d  00                DCB      0
00001e  00                DCB      0
00001f  00                DCB      0

                          AREA ||i.LCD_Clear||, CODE, READONLY, ALIGN=1

                  LCD_Clear PROC
;;;188    void LCD_Clear(u16 Color)
;;;189    {
000000  b530              PUSH     {r4,r5,lr}
000002  4605              MOV      r5,r0
;;;190      u32 index = 0;
000004  2400              MOVS     r4,#0
;;;191      
;;;192      LCD_SetCursor(0x00, 0x013F); 
000006  f240113f          MOV      r1,#0x13f
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       LCD_SetCursor
000010  2122              MOVS     r1,#0x22
000012  f04f40d8          MOV      r0,#0x6c000000
000016  8001              STRH     r1,[r0,#0]
000018  f44f3196          MOV      r1,#0x12c00
                  |L14.28|
;;;193    
;;;194      LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;195    
;;;196      for(index = 0; index < 76800; index++)
;;;197      {
;;;198        LCD->LCD_RAM = Color;
00001c  8045              STRH     r5,[r0,#2]
00001e  1c64              ADDS     r4,r4,#1              ;196
000020  428c              CMP      r4,r1                 ;196
000022  d3fb              BCC      |L14.28|
;;;199      }  
;;;200    }
000024  bd30              POP      {r4,r5,pc}
;;;201    
                          ENDP


                          AREA ||i.LCD_SetDisplayWindow||, CODE, READONLY, ALIGN=1

                  LCD_SetDisplayWindow PROC
;;;311    void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
;;;312    {
000000  b470              PUSH     {r4-r6}
000002  2650              MOVS     r6,#0x50
000004  2500              MOVS     r5,#0
000006  f04f44d8          MOV      r4,#0x6c000000
;;;313      /* Horizontal GRAM Start Address */
;;;314      if(Xpos >= Height)
00000a  4290              CMP      r0,r2
00000c  d304              BCC      |L15.24|
;;;315      {
;;;316        LCD_WriteReg(R80, (Xpos - Height + 1));
00000e  1a82              SUBS     r2,r0,r2
000010  1c52              ADDS     r2,r2,#1
000012  8026              STRH     r6,[r4,#0]
000014  8062              STRH     r2,[r4,#2]
000016  e001              B        |L15.28|
                  |L15.24|
000018  8026              STRH     r6,[r4,#0]
00001a  8065              STRH     r5,[r4,#2]
                  |L15.28|
00001c  2251              MOVS     r2,#0x51
00001e  8022              STRH     r2,[r4,#0]
000020  8060              STRH     r0,[r4,#2]
000022  2652              MOVS     r6,#0x52
;;;317      }
;;;318      else
;;;319      {
;;;320        LCD_WriteReg(R80, 0);
;;;321      }
;;;322      /* Horizontal GRAM End Address */
;;;323      LCD_WriteReg(R81, Xpos);
;;;324      /* Vertical GRAM Start Address */
;;;325      if(Ypos >= Width)
000024  4299              CMP      r1,r3
000026  d304              BCC      |L15.50|
;;;326      {
;;;327        LCD_WriteReg(R82, (Ypos - Width + 1));
000028  1aca              SUBS     r2,r1,r3
00002a  1c52              ADDS     r2,r2,#1
00002c  8026              STRH     r6,[r4,#0]
00002e  8062              STRH     r2,[r4,#2]
000030  e001              B        |L15.54|
                  |L15.50|
000032  8026              STRH     r6,[r4,#0]
000034  8065              STRH     r5,[r4,#2]
                  |L15.54|
000036  2253              MOVS     r2,#0x53
000038  8022              STRH     r2,[r4,#0]
00003a  8061              STRH     r1,[r4,#2]
;;;328      }  
;;;329      else
;;;330      {
;;;331        LCD_WriteReg(R82, 0);
;;;332      }
;;;333      /* Vertical GRAM End Address */
;;;334      LCD_WriteReg(R83, Ypos);
;;;335    
;;;336      LCD_SetCursor(Xpos, Ypos);
00003c  bc70              POP      {r4-r6}
00003e  f7ffbffe          B.W      LCD_SetCursor
;;;337    }
;;;338    
                          ENDP


                          AREA ||i.LCD_WindowModeDisable||, CODE, READONLY, ALIGN=1

                  LCD_WindowModeDisable PROC
;;;346    void LCD_WindowModeDisable(void)
;;;347    {
000000  b500              PUSH     {lr}
;;;348      LCD_SetDisplayWindow(239, 0x13F, 240, 320);
000002  f44f73a0          MOV      r3,#0x140
000006  22f0              MOVS     r2,#0xf0
000008  1e59              SUBS     r1,r3,#1
00000a  20ef              MOVS     r0,#0xef
00000c  f7fffffe          BL       LCD_SetDisplayWindow
000010  2103              MOVS     r1,#3
000012  f04f40d8          MOV      r0,#0x6c000000
000016  8001              STRH     r1,[r0,#0]
000018  f2410118          MOV      r1,#0x1018
00001c  8041              STRH     r1,[r0,#2]
;;;349      LCD_WriteReg(R3, 0x1018);    
;;;350    }
00001e  bd00              POP      {pc}
;;;351    /*******************************************************************************
                          ENDP


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

                  LCD_DrawLine PROC
;;;363    void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction)
;;;364    {
000000  e92d4ff0          PUSH     {r4-r11,lr}
000004  4605              MOV      r5,r0
000006  468a              MOV      r10,r1
000008  4616              MOV      r6,r2
00000a  469b              MOV      r11,r3
;;;365      u32 i = 0;
00000c  2400              MOVS     r4,#0
;;;366      
;;;367      LCD_SetCursor(Xpos, Ypos);
00000e  f7fffffe          BL       LCD_SetCursor
000012  f8df8048          LDR      r8,|L17.92|
000016  f04f0922          MOV      r9,#0x22
00001a  f04f47d8          MOV      r7,#0x6c000000
;;;368    
;;;369      if(Direction == Horizontal)
00001e  f1bb0f00          CMP      r11,#0
000022  d117              BNE      |L17.84|
000024  f8a79000          STRH     r9,[r7,#0]
;;;370      {
;;;371        LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;372        for(i = 0; i < Length; i++)
000028  e004              B        |L17.52|
;;;373        {
;;;374          LCD_WriteRAM(TextColor);
00002a  bf00              NOP      
                  |L17.44|
00002c  f8b80000          LDRH     r0,[r8,#0]  ; TextColor
000030  8078              STRH     r0,[r7,#2]
000032  1c64              ADDS     r4,r4,#1              ;372
                  |L17.52|
000034  42b4              CMP      r4,r6                 ;372
000036  d3f9              BCC      |L17.44|
                  |L17.56|
;;;375        }
;;;376      }
;;;377      else
;;;378      {
;;;379        for(i = 0; i < Length; i++)
;;;380        {
;;;381          LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;382          LCD_WriteRAM(TextColor);
;;;383          Xpos++;
;;;384          LCD_SetCursor(Xpos, Ypos);
;;;385        }
;;;386      }
;;;387    }
000038  e8bd8ff0          POP      {r4-r11,pc}
                  |L17.60|
00003c  f8a79000          STRH     r9,[r7,#0]
000040  f8b80000          LDRH     r0,[r8,#0]            ;382  ; TextColor
000044  8078              STRH     r0,[r7,#2]            ;382
000046  1c6d              ADDS     r5,r5,#1              ;383
000048  b2ed              UXTB     r5,r5                 ;383
00004a  4651              MOV      r1,r10                ;384
00004c  4628              MOV      r0,r5                 ;384
00004e  f7fffffe          BL       LCD_SetCursor
000052  1c64              ADDS     r4,r4,#1              ;379
                  |L17.84|
000054  42b4              CMP      r4,r6                 ;379
000056  d3f1              BCC      |L17.60|
000058  e7ee              B        |L17.56|
;;;388    
                          ENDP

00005a  0000              DCW      0x0000
                  |L17.92|
00005c  00000000          DCD      ||.data||

                          AREA ||i.LCD_DrawRect||, CODE, READONLY, ALIGN=1

                  LCD_DrawRect PROC
;;;399    void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
;;;400    {
000000  b5f0              PUSH     {r4-r7,lr}
000002  461e              MOV      r6,r3
000004  4615              MOV      r5,r2
000006  4604              MOV      r4,r0
000008  460f              MOV      r7,r1
;;;401      LCD_DrawLine(Xpos, Ypos, Width, Horizontal);
00000a  2300              MOVS     r3,#0
00000c  4632              MOV      r2,r6
00000e  f7fffffe          BL       LCD_DrawLine
;;;402      LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal);
000012  1960              ADDS     r0,r4,r5
000014  b2c0              UXTB     r0,r0

⌨️ 快捷键说明

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