📄 gui.txt
字号:
000270 ebfffffe BL LCM12864_WriteCMD
;;;1590 for(y=0; y<64; y++)
000274 e3a06000 MOV r6,#0
000278 ea000003 B |L1.652|
|L1.636|
;;;1591 {
;;;1592 LCM12864_WritEDAta(filldata);
00027c e1a00004 MOV r0,r4
000280 ebfffffe BL LCM12864_WritEDAta
000284 e2860001 ADD r0,r6,#1 ;1590
000288 e20060ff AND r6,r0,#0xff ;1590
|L1.652|
00028c e3560040 CMP r6,#0x40 ;1590
000290 bafffff9 BLT |L1.636|
000294 e2850001 ADD r0,r5,#1 ;1586
000298 e20050ff AND r5,r0,#0xff ;1586
|L1.668|
00029c e3550008 CMP r5,#8 ;1586
0002a0 baffffee BLT |L1.608|
;;;1593 }
;;;1594 }
;;;1595
;;;1596
;;;1597 L_LCM12864_CSA();
0002a4 e3a00301 MOV r0,#0x4000000
0002a8 e59f1d50 LDR r1,|L1.4096|
0002ac e581000c STR r0,[r1,#0xc]
;;;1598 H_LCM12864_CSB();
0002b0 e3a00401 MOV r0,#0x1000000
0002b4 e5810004 STR r0,[r1,#4]
;;;1599 H_LCM12864_CSC();
0002b8 e3a00102 MOV r0,#0x80000000
0002bc e5810014 STR r0,[r1,#0x14]
;;;1600
;;;1601 }
0002c0 e8bd4070 POP {r4-r6,lr}
0002c4 e12fff1e BX lr
;;;1602
ENDP
LCM12864_DispIni PROC
;;;1609 void LCM12864_DispIni(void)
;;;1610 {
0002c8 e92d4010 PUSH {r4,lr}
;;;1611 uint32 i;
;;;1612
;;;1613 /* 选择LPC213X/214X的相关引脚为GPIO用来模拟总线驱动LCM12864 */
;;;1614 // PINSEL0&=~((uint32)0x03<<22); // P0.11选择为GPIO
;;;1615 // PINSEL1&=~((uint32)0x3fc<<2); // P0.17~P0.20选择为GPIO
;;;1616 // PINSEL2&=~((uint32)0x01<<3); // P1.16~P1.25选择为GPIO
;;;1617
;;;1618 /* 设置用来模拟总线用的GPIO方向为输出 */
;;;1619 IODIR0|=((uint32)0x01<<LCM12864_RS) | ((uint32)0x01<<LCM12864_CSA) | ((uint32)0x01<<LCM12864_CSB) |
0002cc e59f0d2c LDR r0,|L1.4096|
0002d0 e5900008 LDR r0,[r0,#8]
0002d4 e3800407 ORR r0,r0,#0x7000000
0002d8 e3800030 ORR r0,r0,#0x30
0002dc e59f1d1c LDR r1,|L1.4096|
0002e0 e5810008 STR r0,[r1,#8]
;;;1620 ((uint32)0x01<<LCM12864_RST) | ((uint32)0x01<<LCM12864_BLK);
;;;1621
;;;1622 IODIR1|=((uint32)0x01<<LCM12864_RW) | ((uint32)0x01<<HC595_DS) |
0002e4 e1a00001 MOV r0,r1
0002e8 e5900018 LDR r0,[r0,#0x18]
0002ec e3800102 ORR r0,r0,#0x80000000
0002f0 e3800607 ORR r0,r0,#0x700000
0002f4 e5810018 STR r0,[r1,#0x18]
;;;1623 ((uint32)0x01<<HC595_STCP) | ((uint32)0x01<<HC595_SHCP);
;;;1624
;;;1625
;;;1626 //FIO2DIR|=((uint32)0x01<<LCM12864_D0) | ((uint32)0x01<<LCM12864_D1) | ((uint32)0x01<<LCM12864_D2) |
;;;1627 // ((uint32)0x01<<LCM12864_D3) | ((uint32)0x01<<LCM12864_D4) | ((uint32)0x01<<LCM12864_D5) |
;;;1628 // ((uint32)0x01<<LCM12864_D6) | ((uint32)0x01<<LCM12864_D7) | ((uint32)0x01<<LCM12864_E);
;;;1629
;;;1630 FIO2DIR|=((uint32)0x01<<LCM12864_E);
0002f8 e59f0d04 LDR r0,|L1.4100|
0002fc e5900040 LDR r0,[r0,#0x40]
000300 e3800c01 ORR r0,r0,#0x100
000304 e59f1cf8 LDR r1,|L1.4100|
000308 e5810040 STR r0,[r1,#0x40]
;;;1631
;;;1632
;;;1633 H_LCM12864_BLK(); // 打开背光
00030c e3a00020 MOV r0,#0x20
000310 e59f1ce8 LDR r1,|L1.4096|
000314 e5810004 STR r0,[r1,#4]
;;;1634 L_LCM12864_RW(); // 只写数据到总线
000318 e3a00102 MOV r0,#0x80000000
00031c e581001c STR r0,[r1,#0x1c]
;;;1635
;;;1636 /* 复位LCM */
;;;1637 L_LCM12864_RST();
000320 e3a00010 MOV r0,#0x10
000324 e581000c STR r0,[r1,#0xc]
;;;1638 for(i=0; i<5000; i++);
000328 e3a04000 MOV r4,#0
00032c ea000000 B |L1.820|
|L1.816|
000330 e2844001 ADD r4,r4,#1
|L1.820|
000334 e59f0cd0 LDR r0,|L1.4108|
000338 e1540000 CMP r4,r0
00033c 3afffffb BCC |L1.816|
;;;1639 H_LCM12864_RST();
000340 e3a00010 MOV r0,#0x10
000344 e59f1cb4 LDR r1,|L1.4096|
000348 e5810004 STR r0,[r1,#4]
;;;1640 for(i=0; i<5000; i++);
00034c e3a04000 MOV r4,#0
000350 ea000000 B |L1.856|
|L1.852|
000354 e2844001 ADD r4,r4,#1
|L1.856|
000358 e59f0cac LDR r0,|L1.4108|
00035c e1540000 CMP r4,r0
000360 3afffffb BCC |L1.852|
;;;1641 ////////
;;;1642 L_LCM12864_CSA(); L_LCM12864_CSB(); L_LCM12864_CSC(); // 选中左半屏及右半屏
000364 e3a00301 MOV r0,#0x4000000
000368 e59f1c90 LDR r1,|L1.4096|
00036c e581000c STR r0,[r1,#0xc]
000370 e3a00401 MOV r0,#0x1000000
000374 e581000c STR r0,[r1,#0xc]
000378 e3a00102 MOV r0,#0x80000000
00037c e581001c STR r0,[r1,#0x1c]
;;;1643
;;;1644
;;;1645 LCM12864_WriteCMD(LCM12864_DISPON); // 打开显示
000380 e3a0003f MOV r0,#0x3f
000384 ebfffffe BL LCM12864_WriteCMD
;;;1646 LCM12864_WriteCMD(LCM12864_STARTROW); // 设置显示起始行为0
000388 e3a000c0 MOV r0,#0xc0
00038c ebfffffe BL LCM12864_WriteCMD
;;;1647
;;;1648 LCM12864_WriteCMD(LCM12864_ADDRSTRX); // 设置页地址,即X
000390 e3a000b8 MOV r0,#0xb8
000394 ebfffffe BL LCM12864_WriteCMD
;;;1649 LCM12864_WriteCMD(LCM12864_ADDRSTRY); // 设置列地址,即Y
000398 e3a00040 MOV r0,#0x40
00039c ebfffffe BL LCM12864_WriteCMD
;;;1650
;;;1651 }
0003a0 e8bd4010 POP {r4,lr}
0003a4 e12fff1e BX lr
;;;1652
ENDP
GUI_FillSCR PROC
;;;1659 void GUI_FillSCR(TCOLOR data)
;;;1660 {
0003a8 e92d4070 PUSH {r4-r6,lr}
0003ac e1a04000 MOV r4,r0
;;;1661 uint8 i,j;
;;;1662
;;;1663 // 填充显示缓冲区
;;;1664 for(i=0; i<(GUI_LCM_YMAX/8); i++)
0003b0 e3a05000 MOV r5,#0
0003b4 ea00000b B |L1.1000|
|L1.952|
;;;1665 {
;;;1666 for(j=0; j<GUI_LCM_XMAX; j++)
0003b8 e3a06000 MOV r6,#0
0003bc ea000005 B |L1.984|
|L1.960|
;;;1667 {
;;;1668 gui_disp_buf[i][j] = data;
0003c0 e0850085 ADD r0,r5,r5,LSL #1
0003c4 e59f1c3c LDR r1,|L1.4104|
0003c8 e0810300 ADD r0,r1,r0,LSL #6
0003cc e7c04006 STRB r4,[r0,r6]
0003d0 e2860001 ADD r0,r6,#1 ;1666
0003d4 e20060ff AND r6,r0,#0xff ;1666
|L1.984|
0003d8 e35600c0 CMP r6,#0xc0 ;1666
0003dc bafffff7 BLT |L1.960|
0003e0 e2850001 ADD r0,r5,#1 ;1664
0003e4 e20050ff AND r5,r0,#0xff ;1664
|L1.1000|
0003e8 e3550008 CMP r5,#8 ;1664
0003ec bafffff1 BLT |L1.952|
;;;1669 }
;;;1670 }
;;;1671
;;;1672 LCM12864_DispFill(data); // 填充LCM12864
0003f0 e1a00004 MOV r0,r4
0003f4 ebfffffe BL LCM12864_DispFill
;;;1673 }
0003f8 e8bd4070 POP {r4-r6,lr}
0003fc e12fff1e BX lr
;;;1674
ENDP
GUI_Initialize PROC
;;;1681 void GUI_Initialize(void)
;;;1682 {
000400 e52de004 PUSH {lr}
;;;1683 LCM12864_DispIni(); // 初始化LCM12864模块工作模式,纯图形模式
000404 ebfffffe BL LCM12864_DispIni
;;;1684 GUI_FillSCR(0x00); // 初始化缓冲区为0x00,并输出屏幕(清屏)
000408 e3a00000 MOV r0,#0
00040c ebfffffe BL GUI_FillSCR
;;;1685 }
000410 e49de004 POP {lr}
000414 e12fff1e BX lr
;;;1686
ENDP
GUI_Point PROC
;;;1696 uint8 GUI_Point(uint8 x, uint8 y, TCOLOR color)
;;;1697 {
000418 e92d40f0 PUSH {r4-r7,lr}
00041c e1a04000 MOV r4,r0
000420 e1a05001 MOV r5,r1
000424 e1a07002 MOV r7,r2
;;;1698 uint8 bak;
;;;1699
;;;1700 /* 参数过滤 */
;;;1701 if(x>=GUI_LCM_XMAX) return(0);
000428 e35400c0 CMP r4,#0xc0
00042c ba000002 BLT |L1.1084|
000430 e3a00000 MOV r0,#0
|L1.1076|
000434 e8bd40f0 POP {r4-r7,lr}
;;;1702 if(y>=GUI_LCM_YMAX) return(0);
;;;1703
;;;1704 /* 设置相应的点为1或0 */
;;;1705 bak = LCM12864_ReadByte(x,y);
;;;1706 if(0==color)
;;;1707 {
;;;1708 bak &= (~DEC_HEX_TAB[y&0x07]);
;;;1709 }
;;;1710 else
;;;1711 {
;;;1712 bak |= DEC_HEX_TAB[y&0x07];
;;;1713 }
;;;1714
;;;1715 LCM12864_WriteByte(x, y, bak); // 刷新显示
;;;1716 return(1);
;;;1717 }
000438 e12fff1e BX lr
|L1.1084|
00043c e3550040 CMP r5,#0x40 ;1702
000440 ba000001 BLT |L1.1100|
000444 e3a00000 MOV r0,#0 ;1702
000448 eafffff9 B |L1.1076|
|L1.1100|
00044c e1a01005 MOV r1,r5 ;1705
000450 e1a00004 MOV r0,r4 ;1705
000454 ebfffffe BL LCM12864_ReadByte
000458 e1a06000 MOV r6,r0 ;1705
00045c e3570000 CMP r7,#0 ;1706
000460 1a000004 BNE |L1.1144|
000464 e2050007 AND r0,r5,#7 ;1708
000468 e59f1ba0 LDR r1,|L1.4112|
00046c e7d10000 LDRB r0,[r1,r0] ;1708
000470 e1c66000 BIC r6,r6,r0 ;1708
000474 ea000003 B |L1.1160|
|L1.1144|
000478 e2050007 AND r0,r5,#7 ;1712
00047c e59f1b8c LDR r1,|L1.4112|
000480 e7d10000 LDRB r0,[r1,r0] ;1712
000484 e1866000 ORR r6,r6,r0 ;1712
|L1.1160|
000488 e1a02006 MOV r2,r6 ;1715
00048c e1a01005 MOV r1,r5 ;1715
000490 e1a00004 MOV r0,r4 ;1715
000494 ebfffffe BL LCM12864_WriteByte
000498 e3a00001 MOV r0,#1 ;1716
00049c eaffffe4 B |L1.1076|
;;;1718
ENDP
GUI_ReadPoint PROC
;;;1728 uint8 GUI_ReadPoint(uint8 x, uint8 y, TCOLOR *ret)
;;;1729 {
0004a0 e92d40f0 PUSH {r4-r7,lr}
0004a4 e1a04000 MOV r4,r0
0004a8 e1a05001 MOV r5,r1
0004ac e1a07002 MOV r7,r2
;;;1730 uint8 bak;
;;;1731
;;;1732 /* 参数过滤 */
;;;1733 if(x>=GUI_LCM_XMAX) return(0);
0004b0 e35400c0 CMP r4,#0xc0
0004b4 ba000002 BLT |L1.1220|
0004b8 e3a00000 MOV r0,#0
|L1.1212|
0004bc e8bd40f0 POP {r4-r7,lr}
;;;1734 if(y>=GUI_LCM_YMAX) return(0);
;;;1735
;;;1736 bak = LCM12864_ReadByte(x,y);
;;;1737 if( (bak & (DEC_HEX_TAB[y&0x07])) == 0 )
;;;1738 *ret = 0x00;
;;;1739 else
;;;1740 *ret = 0x01;
;;;1741
;;;1742 return(1);
;;;1743 }
0004c0 e12fff1e BX lr
|L1.1220|
0004c4 e3550040 CMP r5,#0x40 ;1734
0004c8 ba000001 BLT |L1.1236|
0004cc e3a00000 MOV r0,#0 ;1734
0004d0 eafffff9 B |L1.1212|
|L1.1236|
0004d4 e1a01005 MOV r1,r5 ;1736
0004d8 e1a00004 MOV r0,r4 ;1736
0004dc ebfffffe BL LCM12864_ReadByte
0004e0 e1a06000 MOV r6,r0 ;1736
0004e4 e2050007 AND r0,r5,#7 ;1737
0004e8 e59f1b20 LDR r1,|L1.4112|
0004ec e7d11000 LDRB r1,[r1,r0] ;1737
0004f0 e1110006 TST r1,r6 ;1737
0004f4 1a000002 BNE |L1.1284|
0004f8 e3a00000 MOV r0,#0 ;1738
0004fc e5c70000 STRB r0,[r7,#0] ;1738
000500 ea000001 B |L1.1292|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -