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

📄 lcd.txt

📁 针对STM32F103的UCOS移植
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0005b0  f240193f          MOV      r9,#0x13f
;;;381            index = 0;
0005b4  2700              MOVS     r7,#0
                  |L1.1462|
;;;382          }
;;;383          /* Display one character on LCD */
;;;384          LCD_DisplayChar(Line, refcolumn, *ptr);
0005b6  7822              LDRB     r2,[r4,#0]
0005b8  4649              MOV      r1,r9
0005ba  4650              MOV      r0,r10
0005bc  f7fffffe          BL       LCD_DisplayChar
;;;385    
;;;386          /* Increment character number in one line */
;;;387          index++;
0005c0  1c7f              ADDS     r7,r7,#1
;;;388    
;;;389          /* Decrement the column position by 16 */
;;;390          refcolumn -= 16;
0005c2  f1a90010          SUB      r0,r9,#0x10
0005c6  fa1ff980          UXTH     r9,r0
;;;391          /* Point on the next character */
;;;392          ptr++;
;;;393          /* Increment the number of character after the last space */
;;;394          spaceindex++;
0005ca  1c6d              ADDS     r5,r5,#1
;;;395          if(*ptr == 0x20)
0005cc  f8140f01          LDRB     r0,[r4,#1]!
0005d0  2820              CMP      r0,#0x20
0005d2  d102              BNE      |L1.1498|
;;;396          {
;;;397            spaceindex = 0;
0005d4  2500              MOVS     r5,#0
;;;398            column = refcolumn - 16;
0005d6  f1a90610          SUB      r6,r9,#0x10
                  |L1.1498|
0005da  f1b80801          SUBS     r8,r8,#1              ;359
0005de  d2ca              BCS      |L1.1398|
                  |L1.1504|
;;;399          }
;;;400        }
;;;401      }
;;;402    }
0005e0  e8bd87f0          POP      {r4-r10,pc}
;;;403    
                          ENDP

                  LCD_ScrollText PROC
;;;411    void LCD_ScrollText(u8 Line, u8 *ptr)
;;;412    {
0005e4  e92d47f0          PUSH     {r4-r10,lr}
0005e8  4682              MOV      r10,r0
0005ea  460c              MOV      r4,r1
;;;413      u32 i = 0, length = 0, x = 0;
0005ec  2500              MOVS     r5,#0
0005ee  2700              MOVS     r7,#0
;;;414      u16 refcolumn = 319;
0005f0  f240163f          MOV      r6,#0x13f
;;;415    
;;;416      /* Get the string length */
;;;417      length = StrLength(ptr);
0005f4  4620              MOV      r0,r4
0005f6  f7fffffe          BL       StrLength
0005fa  4680              MOV      r8,r0
;;;418    
;;;419      while(1)
0005fc  f240193f          MOV      r9,#0x13f
                  |L1.1536|
;;;420      {
;;;421        /* Send the string character by character on lCD */
;;;422        while ((*ptr != 0) & (i < 20))
000600  7820              LDRB     r0,[r4,#0]
000602  b100              CBZ      r0,|L1.1542|
000604  2001              MOVS     r0,#1
                  |L1.1542|
000606  2d14              CMP      r5,#0x14
000608  d201              BCS      |L1.1550|
00060a  2101              MOVS     r1,#1
00060c  e000              B        |L1.1552|
                  |L1.1550|
00060e  2100              MOVS     r1,#0
                  |L1.1552|
000610  4208              TST      r0,r1
000612  d015              BEQ      |L1.1600|
                  |L1.1556|
;;;423        {
;;;424          /* Display one character on LCD */
;;;425          LCD_DisplayChar(Line, refcolumn, *ptr);
000614  7822              LDRB     r2,[r4,#0]
000616  4631              MOV      r1,r6
000618  4650              MOV      r0,r10
00061a  f7fffffe          BL       LCD_DisplayChar
;;;426          /* Decrement the column position by 16 */
;;;427          refcolumn -= 16;
00061e  f1a60010          SUB      r0,r6,#0x10
000622  b286              UXTH     r6,r0
;;;428          /* Point on the next character */
;;;429          ptr++;
;;;430          /* Increment the character counter */
;;;431          i++;
000624  1c6d              ADDS     r5,r5,#1
000626  f8140f01          LDRB     r0,[r4,#1]!           ;422
00062a  b108              CBZ      r0,|L1.1584|
00062c  2101              MOVS     r1,#1                 ;422
00062e  e000              B        |L1.1586|
                  |L1.1584|
000630  2100              MOVS     r1,#0                 ;422
                  |L1.1586|
000632  2d14              CMP      r5,#0x14              ;422
000634  d201              BCS      |L1.1594|
000636  2001              MOVS     r0,#1                 ;422
000638  e000              B        |L1.1596|
                  |L1.1594|
00063a  2000              MOVS     r0,#0                 ;422
                  |L1.1596|
00063c  4201              TST      r1,r0                 ;422
00063e  d1e9              BNE      |L1.1556|
                  |L1.1600|
;;;432        }
;;;433    
;;;434        Delay(10);
000640  200a              MOVS     r0,#0xa
000642  f7fffffe          BL       Delay
;;;435    
;;;436        i = 0;
000646  2500              MOVS     r5,#0
;;;437        ptr -= length;
000648  eba40408          SUB      r4,r4,r8
;;;438        x++;
00064c  1c7f              ADDS     r7,r7,#1
;;;439        if(refcolumn < 16)
00064e  2e10              CMP      r6,#0x10
000650  d200              BCS      |L1.1620|
;;;440        {
;;;441          x = 0;
000652  2700              MOVS     r7,#0
                  |L1.1620|
;;;442        }
;;;443    
;;;444        refcolumn = 319 - (x * 16);
000654  4278              RSBS     r0,r7,#0
000656  eb091000          ADD      r0,r9,r0,LSL #4
00065a  b286              UXTH     r6,r0
00065c  e7d0              B        |L1.1536|
;;;445      }
;;;446    }
;;;447    
                          ENDP

                  LCD_SetDisplayWindow PROC
;;;458    void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
;;;459    {
00065e  e92d41f0          PUSH     {r4-r8,lr}
000662  4606              MOV      r6,r0
000664  460c              MOV      r4,r1
000666  4617              MOV      r7,r2
000668  461d              MOV      r5,r3
;;;460      LCD_WriteReg(R1, 0xD0);
00066a  21d0              MOVS     r1,#0xd0
00066c  2001              MOVS     r0,#1
00066e  f7fffffe          BL       LCD_WriteReg
;;;461      LCD_WriteReg(R5, 0x14);
000672  2114              MOVS     r1,#0x14
000674  2005              MOVS     r0,#5
000676  f7fffffe          BL       LCD_WriteReg
;;;462    
;;;463      LCD_WriteReg(R69, (Xpos - Height + 1));
00067a  1bf0              SUBS     r0,r6,r7
00067c  1c40              ADDS     r0,r0,#1
00067e  b2c1              UXTB     r1,r0
000680  2045              MOVS     r0,#0x45
000682  f7fffffe          BL       LCD_WriteReg
;;;464      LCD_WriteReg(R70, Xpos);
000686  4631              MOV      r1,r6
000688  2046              MOVS     r0,#0x46
00068a  f7fffffe          BL       LCD_WriteReg
;;;465    
;;;466      LCD_WriteReg(R71, (((Ypos - Width + 1) & 0x100)>> 8));
00068e  1b60              SUBS     r0,r4,r5
000690  1c45              ADDS     r5,r0,#1
000692  f3c52100          UBFX     r1,r5,#8,#1
000696  2047              MOVS     r0,#0x47
000698  f7fffffe          BL       LCD_WriteReg
;;;467      LCD_WriteReg(R72, ((Ypos - Width + 1) & 0xFF));
00069c  b2e9              UXTB     r1,r5
00069e  2048              MOVS     r0,#0x48
0006a0  f7fffffe          BL       LCD_WriteReg
;;;468    
;;;469      LCD_WriteReg(R73, ((Ypos & 0x100)>> 8));
0006a4  f3c42100          UBFX     r1,r4,#8,#1
0006a8  2049              MOVS     r0,#0x49
0006aa  f7fffffe          BL       LCD_WriteReg
;;;470      LCD_WriteReg(R74, (Ypos & 0xFF));
0006ae  b2e1              UXTB     r1,r4
0006b0  204a              MOVS     r0,#0x4a
0006b2  f7fffffe          BL       LCD_WriteReg
;;;471    
;;;472      LCD_SetCursor(Xpos, Ypos);
0006b6  4621              MOV      r1,r4
0006b8  4630              MOV      r0,r6
0006ba  e8bd41f0          POP      {r4-r8,lr}
0006be  e7fe              B        LCD_SetCursor
;;;473    }
;;;474    
                          ENDP

                  LCD_DrawLine PROC
;;;487    void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction)
;;;488    {
0006c0  e92d47f0          PUSH     {r4-r10,lr}
0006c4  4606              MOV      r6,r0
0006c6  4688              MOV      r8,r1
0006c8  4615              MOV      r5,r2
0006ca  4699              MOV      r9,r3
;;;489      u32 i = 0;
0006cc  2400              MOVS     r4,#0
;;;490    
;;;491      LCD_SetCursor(Xpos, Ypos);
0006ce  4641              MOV      r1,r8
0006d0  4630              MOV      r0,r6
0006d2  f7fffffe          BL       LCD_SetCursor
;;;492    
;;;493      if(Direction == Horizontal)
0006d6  4f4f              LDR      r7,|L1.2068|
0006d8  f1b90f00          CMP      r9,#0
0006dc  d109              BNE      |L1.1778|
;;;494      {
;;;495        for(i = 0; i < Length; i++)
0006de  2d00              CMP      r5,#0
0006e0  d905              BLS      |L1.1774|
                  |L1.1762|
;;;496        {
;;;497          LCD_WriteRAM(TextColor);
0006e2  8838              LDRH     r0,[r7,#0]  ; TextColor
0006e4  f7fffffe          BL       LCD_WriteRAM
0006e8  1c64              ADDS     r4,r4,#1              ;495
0006ea  42ac              CMP      r4,r5                 ;495
0006ec  d3f9              BCC      |L1.1762|
                  |L1.1774|
;;;498        }
;;;499      }
;;;500      else
;;;501      {
;;;502       for(i = 0; i < Length; i++)
;;;503        {
;;;504    
;;;505          LCD_WriteRAM(TextColor);
;;;506          Xpos++;
;;;507          LCD_SetCursor(Xpos, Ypos);
;;;508        }
;;;509      }
;;;510    }
0006ee  e8bd87f0          POP      {r4-r10,pc}
                  |L1.1778|
0006f2  2d00              CMP      r5,#0                 ;502
0006f4  d9fb              BLS      |L1.1774|
                  |L1.1782|
0006f6  8838              LDRH     r0,[r7,#0]            ;505  ; TextColor
0006f8  f7fffffe          BL       LCD_WriteRAM
0006fc  1c70              ADDS     r0,r6,#1              ;506
0006fe  b2c6              UXTB     r6,r0                 ;506
000700  4641              MOV      r1,r8                 ;507
000702  4630              MOV      r0,r6                 ;507
000704  f7fffffe          BL       LCD_SetCursor
000708  1c64              ADDS     r4,r4,#1              ;502
00070a  42ac              CMP      r4,r5                 ;502
00070c  d3f3              BCC      |L1.1782|
00070e  e8bd87f0          POP      {r4-r10,pc}
;;;511    
                          ENDP

                  LCD_DrawRect PROC
;;;522    void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
;;;523    {
000712  e92d41f0          PUSH     {r4-r8,lr}
000716  4604              MOV      r4,r0
000718  460e              MOV      r6,r1
00071a  4615              MOV      r5,r2
00071c  461f              MOV      r7,r3
;;;524      LCD_DrawLine(Xpos, Ypos, Width, Horizontal);
00071e  2300              MOVS     r3,#0
000720  463a              MOV      r2,r7
000722  4631              MOV      r1,r6
000724  4620              MOV      r0,r4
000726  f7fffffe          BL       LCD_DrawLine
;;;525      LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal);
00072a  1960              ADDS     r0,r4,r5
00072c  b2c0              UXTB     r0,r0
00072e  2300              MOVS     r3,#0
000730  463a              MOV      r2,r7
000732  4631              MOV      r1,r6
000734  f7fffffe          BL       LCD_DrawLine
;;;526    
;;;527      LCD_DrawLine(Xpos, Ypos, Height, Vertical);
000738  2301              MOVS     r3,#1
00073a  462a              MOV      r2,r5
00073c  4631              MOV      r1,r6
00073e  4620              MOV      r0,r4
000740  f7fffffe          BL       LCD_DrawLine
;;;528      LCD_DrawLine(Xpos, (Ypos - Width + 1), Height, Vertical);
000744  1bf0              SUBS     r0,r6,r7
000746  1c40              ADDS     r0,r0,#1
000748  b281              UXTH     r1,r0
00074a  462a              MOV      r2,r5
00074c  4620              MOV      r0,r4
00074e  e8bd41f0          POP      {r4-r8,lr}
000752  2301              MOVS     r3,#1
000754  e7fe              B        LCD_DrawLine
;;;529    }
;;;530    
                          ENDP

                  LCD_DrawCircle PROC
;;;541    void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius)
;;;542    {
000756  e92d4ff0          PUSH     {r4-r11,lr}
00075a  b083              SUB      sp,sp,#0xc
00075c  4607              MOV      r7,r0
00075e  4688              MOV      r8,r1
;;;543      s32  D;/* Decision Variable */
;;;544      u32  CurX;/* Current X Value */
;;;545      u32  CurY;/* Current Y Value */
;;;546    
;;;547      D = 3 - (Radius << 1);

⌨️ 快捷键说明

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