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 + -
显示快捷键?