📄 lcd.txt
字号:
000760 2003 MOVS r0,#3
000762 eba00642 SUB r6,r0,r2,LSL #1
;;;548 CurX = 0;
000766 2400 MOVS r4,#0
;;;549 CurY = Radius;
000768 4615 MOV r5,r2
;;;550
;;;551 while (CurX <= CurY)
00076a f8df90a8 LDR r9,|L1.2068|
|L1.1902|
;;;552 {
;;;553 LCD_SetCursor(Xpos + CurX, Ypos + CurY);
00076e eb080a05 ADD r10,r8,r5
000772 eb070b04 ADD r11,r7,r4
000776 fa1ff18a UXTH r1,r10
00077a f00b00ff AND r0,r11,#0xff
00077e f7fffffe BL LCD_SetCursor
;;;554 LCD_WriteRAM(TextColor);
000782 f8b90000 LDRH r0,[r9,#0] ; TextColor
000786 f7fffffe BL LCD_WriteRAM
;;;555 LCD_SetCursor(Xpos + CurX, Ypos - CurY);
00078a eba80005 SUB r0,r8,r5
00078e b281 UXTH r1,r0
000790 9002 STR r0,[sp,#8]
000792 f00b00ff AND r0,r11,#0xff
000796 f7fffffe BL LCD_SetCursor
;;;556 LCD_WriteRAM(TextColor);
00079a f8b90000 LDRH r0,[r9,#0] ; TextColor
00079e f7fffffe BL LCD_WriteRAM
;;;557 LCD_SetCursor(Xpos - CurX, Ypos + CurY);
0007a2 fa1ff18a UXTH r1,r10
0007a6 eba70a04 SUB r10,r7,r4
0007aa f00a00ff AND r0,r10,#0xff
0007ae f7fffffe BL LCD_SetCursor
;;;558 LCD_WriteRAM(TextColor);
0007b2 f8b90000 LDRH r0,[r9,#0] ; TextColor
0007b6 f7fffffe BL LCD_WriteRAM
;;;559 LCD_SetCursor(Xpos - CurX, Ypos - CurY);
0007ba 9802 LDR r0,[sp,#8]
0007bc b281 UXTH r1,r0
0007be f00a00ff AND r0,r10,#0xff
0007c2 f7fffffe BL LCD_SetCursor
;;;560 LCD_WriteRAM(TextColor);
0007c6 f8b90000 LDRH r0,[r9,#0] ; TextColor
0007ca f7fffffe BL LCD_WriteRAM
;;;561 LCD_SetCursor(Xpos + CurY, Ypos + CurX);
0007ce eb080004 ADD r0,r8,r4
0007d2 b281 UXTH r1,r0
0007d4 eb070a05 ADD r10,r7,r5
0007d8 9001 STR r0,[sp,#4]
0007da f00a00ff AND r0,r10,#0xff
0007de f7fffffe BL LCD_SetCursor
;;;562 LCD_WriteRAM(TextColor);
0007e2 f8b90000 LDRH r0,[r9,#0] ; TextColor
0007e6 f7fffffe BL LCD_WriteRAM
;;;563 LCD_SetCursor(Xpos + CurY, Ypos - CurX);
0007ea eba80b04 SUB r11,r8,r4
0007ee fa1ff18b UXTH r1,r11
0007f2 f00a00ff AND r0,r10,#0xff
0007f6 f7fffffe BL LCD_SetCursor
;;;564 LCD_WriteRAM(TextColor);
0007fa f8b90000 LDRH r0,[r9,#0] ; TextColor
0007fe f7fffffe BL LCD_WriteRAM
;;;565 LCD_SetCursor(Xpos - CurY, Ypos + CurX);
000802 9801 LDR r0,[sp,#4]
000804 b281 UXTH r1,r0
000806 e021 B |L1.2124|
|L1.2056|
000808 40011400 DCD 0x40011400
|L1.2060|
00080c 40010c00 DCD 0x40010c00
|L1.2064|
000810 40003800 DCD 0x40003800
|L1.2068|
000814 00000000 DCD ||.data||
|L1.2072|
000818 00000000 DCD ||.constdata||
|L1.2076|
00081c 202020202020202020202020202020202020202000 DCB " ",0
000831 00 DCB 0
000832 00 DCB 0
000833 00 DCB 0
|L1.2100|
000834 202020537472696e6720746f6f206c6f6e67202000 DCB " String too long ",0
000849 00 DCB 0
00084a 00 DCB 0
00084b 00 DCB 0
|L1.2124|
00084c eba70a05 SUB r10,r7,r5
000850 f00a00ff AND r0,r10,#0xff
000854 f7fffffe BL LCD_SetCursor
;;;566 LCD_WriteRAM(TextColor);
000858 f8b90000 LDRH r0,[r9,#0] ; TextColor
00085c f7fffffe BL LCD_WriteRAM
;;;567 LCD_SetCursor(Xpos - CurY, Ypos - CurX);
000860 fa1ff18b UXTH r1,r11
000864 f00a00ff AND r0,r10,#0xff
000868 f7fffffe BL LCD_SetCursor
;;;568 LCD_WriteRAM(TextColor);
00086c f8b90000 LDRH r0,[r9,#0] ; TextColor
000870 f7fffffe BL LCD_WriteRAM
;;;569
;;;570 if (D < 0)
000874 2e00 CMP r6,#0
000876 da03 BGE |L1.2176|
;;;571 {
;;;572 D += (CurX << 2) + 6;
000878 eb060084 ADD r0,r6,r4,LSL #2
00087c 1d86 ADDS r6,r0,#6
00087e e005 B |L1.2188|
|L1.2176|
;;;573 }
;;;574 else
;;;575 {
;;;576 D += ((CurX - CurY) << 2) + 10;
000880 1b60 SUBS r0,r4,r5
000882 eb060080 ADD r0,r6,r0,LSL #2
000886 f100060a ADD r6,r0,#0xa
;;;577 CurY--;
00088a 1e6d SUBS r5,r5,#1
|L1.2188|
;;;578 }
;;;579 CurX++;
00088c 1c64 ADDS r4,r4,#1
00088e 42ac CMP r4,r5 ;551
000890 f67faf6d BLS |L1.1902|
;;;580 }
;;;581 }
000894 b003 ADD sp,sp,#0xc
000896 e8bd8ff0 POP {r4-r11,pc}
;;;582
ENDP
LCD_DrawMonoPict PROC
;;;590 void LCD_DrawMonoPict(uc32 *Pict)
;;;591 {
00089a e92d41f0 PUSH {r4-r8,lr}
00089e 4606 MOV r6,r0
;;;592 u32 index = 0, i = 0;
0008a0 2500 MOVS r5,#0
;;;593
;;;594 LCD_SetCursor(0, 319);
0008a2 f240113f MOV r1,#0x13f
0008a6 2000 MOVS r0,#0
0008a8 f7fffffe BL LCD_SetCursor
;;;595
;;;596 for(index = 0; index < 2400; index++)
0008ac 4f3f LDR r7,|L1.2476|
0008ae f04f0801 MOV r8,#1
|L1.2226|
;;;597 {
;;;598 for(i = 0; i < 32; i++)
0008b2 2400 MOVS r4,#0
|L1.2228|
;;;599 {
;;;600 if((Pict[index] & (1 << i)) == 0x00)
0008b4 f8560025 LDR r0,[r6,r5,LSL #2]
0008b8 fa08f104 LSL r1,r8,r4
0008bc 4208 TST r0,r1
0008be d103 BNE |L1.2248|
;;;601 {
;;;602 LCD_WriteRAM(BackColor);
0008c0 8878 LDRH r0,[r7,#2] ; BackColor
0008c2 f7fffffe BL LCD_WriteRAM
0008c6 e002 B |L1.2254|
|L1.2248|
;;;603 }
;;;604 else
;;;605 {
;;;606 LCD_WriteRAM(TextColor);
0008c8 8838 LDRH r0,[r7,#0] ; TextColor
0008ca f7fffffe BL LCD_WriteRAM
|L1.2254|
0008ce 1c64 ADDS r4,r4,#1 ;598
0008d0 2c20 CMP r4,#0x20 ;598
0008d2 d3ef BCC |L1.2228|
0008d4 1c6d ADDS r5,r5,#1 ;596
0008d6 f5b56f16 CMP r5,#0x960 ;596
0008da d3ea BCC |L1.2226|
;;;607 }
;;;608 }
;;;609 }
;;;610 }
0008dc e8bd81f0 POP {r4-r8,pc}
;;;611
ENDP
LCD_PowerOn PROC
;;;667 void LCD_PowerOn(void)
;;;668 {
0008e0 b510 PUSH {r4,lr}
;;;669 /* Power On Set */
;;;670 LCD_WriteReg(R28, 0x73);
0008e2 2173 MOVS r1,#0x73
0008e4 201c MOVS r0,#0x1c
0008e6 f7fffffe BL LCD_WriteReg
;;;671 LCD_WriteReg(R36, 0x74);
0008ea 2174 MOVS r1,#0x74
0008ec 2024 MOVS r0,#0x24
0008ee f7fffffe BL LCD_WriteReg
;;;672 LCD_WriteReg(R30, 0x01);
0008f2 2101 MOVS r1,#1
0008f4 201e MOVS r0,#0x1e
0008f6 f7fffffe BL LCD_WriteReg
;;;673 LCD_WriteReg(R24, 0xC1);
0008fa 21c1 MOVS r1,#0xc1
0008fc 2018 MOVS r0,#0x18
0008fe f7fffffe BL LCD_WriteReg
;;;674 Delay(1); /* Delay 10 ms */
000902 2001 MOVS r0,#1
000904 f7fffffe BL Delay
;;;675 LCD_WriteReg(R24, 0xE1);
000908 21e1 MOVS r1,#0xe1
00090a 2018 MOVS r0,#0x18
00090c f7fffffe BL LCD_WriteReg
;;;676 LCD_WriteReg(R24, 0xF1);
000910 21f1 MOVS r1,#0xf1
000912 2018 MOVS r0,#0x18
000914 f7fffffe BL LCD_WriteReg
;;;677 Delay(6); /* Delay 60 ms */
000918 2006 MOVS r0,#6
00091a f7fffffe BL Delay
;;;678 LCD_WriteReg(R24, 0xF5);
00091e 21f5 MOVS r1,#0xf5
000920 2018 MOVS r0,#0x18
000922 f7fffffe BL LCD_WriteReg
;;;679 Delay(6); /* Delay 60 ms */
000926 2006 MOVS r0,#6
000928 f7fffffe BL Delay
;;;680 LCD_WriteReg(R27, 0x09);
00092c 2109 MOVS r1,#9
00092e 201b MOVS r0,#0x1b
000930 f7fffffe BL LCD_WriteReg
;;;681 Delay(1); /* Delay 10 ms */
000934 2001 MOVS r0,#1
000936 f7fffffe BL Delay
;;;682 LCD_WriteReg(R31, 0x11);
00093a 2111 MOVS r1,#0x11
00093c 201f MOVS r0,#0x1f
00093e f7fffffe BL LCD_WriteReg
;;;683 LCD_WriteReg(R32, 0x0E);
000942 210e MOVS r1,#0xe
000944 2020 MOVS r0,#0x20
000946 f7fffffe BL LCD_WriteReg
;;;684 LCD_WriteReg(R30, 0x81);
00094a 2181 MOVS r1,#0x81
00094c 201e MOVS r0,#0x1e
00094e f7fffffe BL LCD_WriteReg
;;;685 Delay(1); /* Delay 10 ms */
000952 e8bd4010 POP {r4,lr}
000956 2001 MOVS r0,#1
000958 f7ffbffe B.W Delay
;;;686 }
;;;687
ENDP
LCD_DisplayOn PROC
;;;695 void LCD_DisplayOn(void)
;;;696 {
00095c b510 PUSH {r4,lr}
;;;697 LCD_WriteReg(R1, 0x50);
00095e 2150 MOVS r1,#0x50
000960 2001 MOVS r0,#1
000962 f7fffffe BL LCD_WriteReg
;;;698 LCD_WriteReg(R5, 0x04);
000966 2104 MOVS r1,#4
000968 2005 MOVS r0,#5
00096a f7fffffe BL LCD_WriteReg
;;;699
;;;700 /* Display On */
;;;701 LCD_WriteReg(R0, 0x80);
00096e 2180 MOVS r1,#0x80
000970 2000 MOVS r0,#0
000972 f7fffffe BL LCD_WriteReg
;;;702 LCD_WriteReg(R59, 0x01);
000976 2101 MOVS r1,#1
000978 203b MOVS r0,#0x3b
00097a f7fffffe BL LCD_WriteReg
;;;703 Delay(4); /* Delay 40 ms */
00097e 2004 MOVS r0,#4
000980 f7fffffe BL Delay
;;;704 LCD_WriteReg(R0, 0x20);
000984 2120 MOVS r1,#0x20
000986 e8bd4010 POP {r4,lr}
00098a 2000 MOVS r0,#0
00098c f7ffbffe B.W LCD_WriteReg
;;;705 }
;;;706
ENDP
LCD_DisplayOff PROC
;;;714 void LCD_DisplayOff(void)
;;;715 {
000990 b510 PUSH {r4,lr}
;;;716 /* Display Off */
;;;717 LCD_WriteReg(R0, 0xA0);
000992 21a0 MOVS r1,#0xa0
000994 2000 MOVS r0,#0
000996 f7fffffe BL LCD_WriteReg
;;;718 Delay(4); /* Delay 40 ms */
00099a 2004 MOVS r0,#4
00099c f7fffffe BL Delay
;;;719 LCD_WriteReg(R59, 0x00);
0009a0 2100 MOVS r1,#0
0009a2 e8bd4010 POP {r4,lr}
0009a6 203b MOVS r0,#0x3b
0009a8 f7ffbffe B.W LCD_WriteReg
;;;720 }
;;;721
ENDP
|L1.2476|
0009ac 00000000 DCD ||.data||
AREA ||.data||, DATA, ALIGN=1
TextColor
000000 0000 DCW 0x0000
BackColor
000002 ffff DCW 0xffff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -