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

📄 gui.txt

📁 工厂环境污染控制数据采集器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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 + -