memdev_drawgraph.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 742 行 · 第 1/3 页

TXT
742
字号
                  |L7.62|
;;;142        } else {
;;;143          I16 yNew;
;;;144          int yD = aDiff - (rand() % aDiff);
00003e  f7fffffe          BL       rand
000042  fb90f1f7          SDIV     r1,r0,r7
000046  fb070011          MLS      r0,r7,r1,r0
00004a  1a3d              SUBS     r5,r7,r0
;;;145          if (rand() & 1) {
00004c  f7fffffe          BL       rand
000050  07c0              LSLS     r0,r0,#31
;;;146            yNew = paY[i-1] + yD;
000052  eb060044          ADD      r0,r6,r4,LSL #1
000056  f8300c02          LDRH     r0,[r0,#-2]
00005a  d001              BEQ      |L7.96|
00005c  4428              ADD      r0,r0,r5
00005e  e000              B        |L7.98|
                  |L7.96|
;;;147          } else {
;;;148            yNew = paY[i-1] - yD;
000060  1b40              SUBS     r0,r0,r5
                  |L7.98|
000062  b200              SXTH     r0,r0
;;;149          }
;;;150          if (yNew > YSIZE) {
000064  288c              CMP      r0,#0x8c
000066  dd01              BLE      |L7.108|
;;;151            yNew -= yD;
000068  1b40              SUBS     r0,r0,r5
00006a  e002              B        |L7.114|
                  |L7.108|
;;;152          } else { if (yNew < 0)
00006c  2800              CMP      r0,#0
00006e  da01              BGE      |L7.116|
;;;153            yNew += yD;
000070  4428              ADD      r0,r0,r5
                  |L7.114|
000072  b200              SXTH     r0,r0
                  |L7.116|
;;;154          }
;;;155          paY[i] = yNew;
000074  f8260014          STRH     r0,[r6,r4,LSL #1]
                  |L7.120|
000078  1c64              ADDS     r4,r4,#1              ;139
                  |L7.122|
00007a  4544              CMP      r4,r8                 ;139
00007c  dbd5              BLT      |L7.42|
;;;156        }
;;;157      }
;;;158    }
00007e  e8bd81f0          POP      {r4-r8,pc}
;;;159    
                          ENDP


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

                  _GetSineData PROC
;;;195    */
;;;196    static void _GetSineData(I16 * paY, int n) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  460e              MOV      r6,r1
;;;197      int i;
;;;198      for (i = 0; i < n; i++) {
000006  2400              MOVS     r4,#0
000008  e01d              B        |L8.70|
                  |L8.10|
;;;199        float s = sin(i * DEG2RAD * 4);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       __aeabi_i2f
000010  490e              LDR      r1,|L8.76|
000012  f7fffffe          BL       __aeabi_fmul
000016  2102              MOVS     r1,#2
000018  f7fffffe          BL       __ARM_scalbnf
00001c  f7fffffe          BL       __aeabi_f2d
000020  f7fffffe          BL       ||sin||
000024  f7fffffe          BL       __aeabi_d2f
;;;200        paY[i] = s * YSIZE / 2 + YSIZE / 2;
000028  4909              LDR      r1,|L8.80|
00002a  f7fffffe          BL       __aeabi_fmul
00002e  f04f31ff          MOV      r1,#0xffffffff
000032  f7fffffe          BL       __ARM_scalbnf
000036  4907              LDR      r1,|L8.84|
000038  f7fffffe          BL       __aeabi_fadd
00003c  f7fffffe          BL       __aeabi_f2iz
000040  f8250014          STRH     r0,[r5,r4,LSL #1]
000044  1c64              ADDS     r4,r4,#1              ;198
                  |L8.70|
000046  42b4              CMP      r4,r6                 ;198
000048  dbdf              BLT      |L8.10|
;;;201      }
;;;202    }
00004a  bd70              POP      {r4-r6,pc}
;;;203    
                          ENDP

                  |L8.76|
                          DCD      0x3c8efa35
                  |L8.80|
                          DCD      0x430c0000
                  |L8.84|
                          DCD      0x428c0000

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

                  _Label PROC
;;;94     */
;;;95     static void _Label(void) {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;96       int x, y;
;;;97       GUI_SetBkColor(GUI_RED);
000004  20ff              MOVS     r0,#0xff
000006  f7fffffe          BL       GUI_SetBkColor
;;;98       GUI_Clear();
00000a  f7fffffe          BL       GUI_Clear
;;;99       GUI_SetColor(GUI_WHITE);
00000e  f06f407f          MVN      r0,#0xff000000
000012  f7fffffe          BL       GUI_SetColor
;;;100      GUI_SetFont(&GUI_Font24_ASCII);
000016  4832              LDR      r0,|L9.224|
000018  f7fffffe          BL       GUI_SetFont
;;;101      GUI_DispStringHCenterAt("MEMDEV_DrawGraph - Sample", 160, 5);
00001c  2205              MOVS     r2,#5
00001e  21a0              MOVS     r1,#0xa0
000020  a030              ADR      r0,|L9.228|
000022  f7fffffe          BL       GUI_DispStringHCenterAt
;;;102      GUI_SetPenSize(1);
000026  2001              MOVS     r0,#1
000028  f7fffffe          BL       GUI_SetPenSize
;;;103      GUI_ClearRect(0, (LCD_YSIZE - 21) - YSIZE, (LCD_XSIZE - 1), (LCD_YSIZE - 1));
00002c  f240143f          MOV      r4,#0x13f
000030  23ef              MOVS     r3,#0xef
000032  4622              MOV      r2,r4
000034  214f              MOVS     r1,#0x4f
000036  2000              MOVS     r0,#0
000038  f7fffffe          BL       GUI_ClearRect
;;;104      GUI_DrawRect(18, (LCD_YSIZE - 21) - YSIZE, (LCD_XSIZE - 1), (LCD_YSIZE - 20));
00003c  23dc              MOVS     r3,#0xdc
00003e  4622              MOV      r2,r4
000040  214f              MOVS     r1,#0x4f
000042  2012              MOVS     r0,#0x12
000044  f7fffffe          BL       GUI_DrawRect
;;;105      GUI_SetFont(&GUI_Font6x8);
000048  482d              LDR      r0,|L9.256|
00004a  f7fffffe          BL       GUI_SetFont
;;;106      for (x = 0; x < (LCD_XSIZE - 20); x += 40) {
00004e  2400              MOVS     r4,#0
;;;107        int xPos = x + 18;
;;;108        GUI_DrawVLine(xPos, (LCD_YSIZE - 20), (LCD_YSIZE - 14));
;;;109        GUI_DispDecAt(x / 40, xPos - 2, (LCD_YSIZE - 9), 1);
000050  2628              MOVS     r6,#0x28
000052  f44f7796          MOV      r7,#0x12c             ;106
000056  bf00              NOP                            ;107
                  |L9.88|
000058  f1040512          ADD      r5,r4,#0x12           ;107
00005c  22e2              MOVS     r2,#0xe2              ;108
00005e  21dc              MOVS     r1,#0xdc              ;108
000060  4628              MOV      r0,r5                 ;108
000062  f7fffffe          BL       GUI_DrawVLine
000066  fb94f0f6          SDIV     r0,r4,r6
00006a  1ead              SUBS     r5,r5,#2
00006c  2301              MOVS     r3,#1
00006e  22e7              MOVS     r2,#0xe7
000070  b229              SXTH     r1,r5
000072  f7fffffe          BL       GUI_DispDecAt
000076  3428              ADDS     r4,r4,#0x28           ;106
000078  42bc              CMP      r4,r7                 ;106
00007a  dbed              BLT      |L9.88|
;;;110      }
;;;111      for (y = 0; y < YSIZE / 2; y += 20) {
00007c  f05f0400          MOVS.W   r4,#0
                  |L9.128|
;;;112        int yPos = (LCD_YSIZE - 20) - YSIZE / 2 + y;
000080  f1040596          ADD      r5,r4,#0x96
;;;113        GUI_DrawHLine(yPos, 13, 18);
000084  2212              MOVS     r2,#0x12
000086  210d              MOVS     r1,#0xd
000088  4628              MOV      r0,r5
00008a  f7fffffe          BL       GUI_DrawHLine
;;;114        if (y) {
00008e  b1dc              CBZ      r4,|L9.200|
;;;115          GUI_GotoXY(1, yPos - 4);
000090  1f29              SUBS     r1,r5,#4
000092  2001              MOVS     r0,#1
000094  f7fffffe          BL       GUI_GotoXY
;;;116          GUI_DispSDec(-y / 20, 2);
000098  4260              RSBS     r0,r4,#0
00009a  2614              MOVS     r6,#0x14
00009c  fb90f0f6          SDIV     r0,r0,r6
0000a0  2102              MOVS     r1,#2
0000a2  f7fffffe          BL       GUI_DispSDec
;;;117          yPos = (LCD_YSIZE - 20) - YSIZE / 2 - y;
0000a6  f1c40596          RSB      r5,r4,#0x96
;;;118          GUI_DrawHLine(yPos, 13, 18);
0000aa  2212              MOVS     r2,#0x12
0000ac  210d              MOVS     r1,#0xd
0000ae  4628              MOV      r0,r5
0000b0  f7fffffe          BL       GUI_DrawHLine
;;;119          GUI_GotoXY(1, yPos - 4);
0000b4  1f29              SUBS     r1,r5,#4
0000b6  2001              MOVS     r0,#1
0000b8  f7fffffe          BL       GUI_GotoXY
;;;120          GUI_DispSDec(y / 20, 2);
0000bc  fb94f0f6          SDIV     r0,r4,r6
0000c0  2102              MOVS     r1,#2
0000c2  f7fffffe          BL       GUI_DispSDec
0000c6  e005              B        |L9.212|
                  |L9.200|
;;;121        } else {
;;;122          GUI_DispCharAt('0', 7, yPos - 4);
0000c8  1f2d              SUBS     r5,r5,#4
0000ca  b22a              SXTH     r2,r5
0000cc  2107              MOVS     r1,#7
0000ce  2030              MOVS     r0,#0x30
0000d0  f7fffffe          BL       GUI_DispCharAt
                  |L9.212|
0000d4  3414              ADDS     r4,r4,#0x14           ;111
0000d6  2c46              CMP      r4,#0x46              ;111
0000d8  dbd2              BLT      |L9.128|
;;;123        }
;;;124      }
;;;125    }
0000da  e8bd81f0          POP      {r4-r8,pc}
;;;126    
                          ENDP

0000de  0000              DCW      0x0000
                  |L9.224|
                          DCD      GUI_Font24_ASCII
                  |L9.228|
0000e4  4d454d4445565f447261774772617068202d2053616d706c6500        DCB      "MEMDEV_DrawGraph - Sample",0
0000fe  00                DCB      0
0000ff  00                DCB      0
                  |L9.256|
                          DCD      GUI_Font6x8

                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

000000  00130050          DCW      0x0013,0x0050
000004  013e00db          DCW      0x013e,0x00db
000008  00130050          DCW      0x0013,0x0050
00000c  013e00db          DCW      0x013e,0x00db
000010  00130050          DCW      0x0013,0x0050
000014  013e00db          DCW      0x013e,0x00db

⌨️ 快捷键说明

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