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

📄 128_lcd.lst

📁 ssd1325控制器液晶的驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0B24 9456      LSR	R5
    0B25 9447      ROR	R4
    0B26 9456      LSR	R5
    0B27 9447      ROR	R4
    0B28 9456      LSR	R5
    0B29 9447      ROR	R4
    0B2A 0C42      ADD	R4,R2
    0B2B 1C53      ADC	R5,R3
    0B2C E788      LDI	R24,0x78
    0B2D E091      LDI	R25,1
    0B2E 01FA      MOVW	R30,R20
    0B2F 70E7      ANDI	R30,7
    0B30 70F0      ANDI	R31,0
    0B31 0FE8      ADD	R30,R24
    0B32 1FF9      ADC	R31,R25
    0B33 91E4      LPM	R30,0(Z)
    0B34 01D2      MOVW	R26,R4
    0B35 902C      LD	R2,0(X)
    0B36 2A2E      OR	R2,R30
    0B37 922C      ST	R2,0(X)
    0B38 C020      RJMP	0x0B59
(0458)       else  gui_disp_buf[y0][x0>>3] &= (~DCB_HEX_TAB[x0&0x07]);
    0B39 E100      LDI	R16,0x10
    0B3A E010      LDI	R17,0
    0B3B 019B      MOVW	R18,R22
    0B3C 940E3B85  CALL	empy16s
    0B3E 0118      MOVW	R2,R16
    0B3F E48E      LDI	R24,0x4E
    0B40 E091      LDI	R25,1
    0B41 0E28      ADD	R2,R24
    0B42 1E39      ADC	R3,R25
    0B43 012A      MOVW	R4,R20
    0B44 9456      LSR	R5
    0B45 9447      ROR	R4
    0B46 9456      LSR	R5
    0B47 9447      ROR	R4
    0B48 9456      LSR	R5
    0B49 9447      ROR	R4
    0B4A 0C42      ADD	R4,R2
    0B4B 1C53      ADC	R5,R3
    0B4C E788      LDI	R24,0x78
    0B4D E091      LDI	R25,1
    0B4E 01FA      MOVW	R30,R20
    0B4F 70E7      ANDI	R30,7
    0B50 70F0      ANDI	R31,0
    0B51 0FE8      ADD	R30,R24
    0B52 1FF9      ADC	R31,R25
    0B53 91E4      LPM	R30,0(Z)
    0B54 95E0      COM	R30
    0B55 01D2      MOVW	R26,R4
    0B56 902C      LD	R2,0(X)
    0B57 222E      AND	R2,R30
    0B58 922C      ST	R2,0(X)
(0459)    LCD_UpdatePoint(x0, y0);
    0B59 019B      MOVW	R18,R22
    0B5A 018A      MOVW	R16,R20
    0B5B DE53      RCALL	_LCD_UpdatePoint
    0B5C 9621      ADIW	R28,1
    0B5D 940E3B9E  CALL	pop_gset5
    0B5F 9508      RET
_GUI_RLine:
  bak                  --> R14
  color                --> R20
  y1                   --> R22
  y0                   --> R10
  x0                   --> R12
    0B60 940E3BA1  CALL	push_gset5
    0B62 0159      MOVW	R10,R18
    0B63 0168      MOVW	R12,R16
    0B64 9721      SBIW	R28,1
    0B65 856B      LDD	R22,Y+11
    0B66 857C      LDD	R23,Y+12
    0B67 854D      LDD	R20,Y+13
(0460) }
(0461) 
(0462) 
(0463) /****************************************************************************
(0464) * 名称:GUI_RLine()
(0465) * 功能:画垂直线。
(0466) * 入口参数: x0		垂直线起点所在列的位置
(0467) *           y0		垂直线起点所在行的位置
(0468) *           y1      垂直线终点所在行的位置
(0469) *           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
(0470) * 出口参数:无
(0471) * 说明:操作失败原因是指定地址超出缓冲区范围。
(0472) ****************************************************************************/
(0473) void  GUI_RLine(uint32 x0, uint32 y0, uint32 y1, uint8 color) 
(0474) {  uint32  bak;
(0475) 
(0476)    if(y0>y1) 						// 对y0、y1大小进行排列,以便画图
    0B68 156A      CP	R22,R10
    0B69 057B      CPC	R23,R11
    0B6A F418      BCC	0x0B6E
(0477)    {  bak = y1;
    0B6B 017B      MOVW	R14,R22
(0478)       y1 = y0;
    0B6C 01B5      MOVW	R22,R10
(0479)       y0 = bak;
    0B6D 0157      MOVW	R10,R14
(0480)    }
(0481)    if(y0==y1)
    0B6E 16A6      CP	R10,R22
    0B6F 06B7      CPC	R11,R23
    0B70 F429      BNE	0x0B76
(0482)    {  GUI_Point(x0, y0, color);
    0B71 8348      STD	Y+0,R20
    0B72 0195      MOVW	R18,R10
    0B73 0186      MOVW	R16,R12
    0B74 DEA1      RCALL	_GUI_Point
(0483)       return;
    0B75 C00E      RJMP	0x0B84
(0484)    }
(0485)    
(0486)    do
(0487)    {  GUI_Point(x0, y0, color);		// 逐点显示,描出垂直线
    0B76 8348      STD	Y+0,R20
    0B77 0195      MOVW	R18,R10
    0B78 0186      MOVW	R16,R12
    0B79 DE9C      RCALL	_GUI_Point
(0488)       y0++;
    0B7A 01C5      MOVW	R24,R10
    0B7B 9601      ADIW	R24,1
    0B7C 015C      MOVW	R10,R24
(0489)    }while(y1>y0);
    0B7D 16A6      CP	R10,R22
    0B7E 06B7      CPC	R11,R23
    0B7F F3B0      BCS	0x0B76
(0490)    GUI_Point(x0, y0, color);	
    0B80 8348      STD	Y+0,R20
    0B81 0195      MOVW	R18,R10
    0B82 0186      MOVW	R16,R12
    0B83 DE92      RCALL	_GUI_Point
    0B84 9621      ADIW	R28,1
    0B85 940E3B9E  CALL	pop_gset5
    0B87 9508      RET
_GUI_WindowsDraw:
  bak2                 --> R20
  bak1                 --> R22
  str                  --> R10
  bak                  --> R12
  win                  --> R14
    0B88 940E3BA1  CALL	push_gset5
    0B8A 0178      MOVW	R14,R16
    0B8B 9725      SBIW	R28,5
FILE: G:\IccPro\mega128_lcd\ZLG_GUI\windows.c
(0001) /****************************************************************************************
(0002) * 文件名:WINDOW.C
(0003) * 功能:窗口管理。将进行各种窗口的给制及窗口内部控制。
(0004) * 作者:黄绍斌
(0005) * 日期:2004.02.26
(0006) * 备注:
(0007) ****************************************************************************************/
(0008) #include "config.h"
(0009) 
(0010) #if  GUI_WINDOW_EN==1
(0011) /****************************************************************************
(0012) * 名称:GUI_WindowsDraw()
(0013) * 功能:显示窗口。根据提供的窗口参数进行画窗口。
(0014) * 入口参数:win		窗口句柄
(0015) * 出口参数:返回0表示操作失败,返回1表示操作成功
(0016) ****************************************************************************/
(0017) uint8  GUI_WindowsDraw(WINDOWS *win)
(0018) {  uint8  *str;
(0019)    int32  bak, bak1, bak2;
(0020)    
(0021)    /* 参数过滤,若窗口起出范围,则返回0 */
(0022)    if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0);		// 宽度、高度检查,限制最小窗口
    0B8C 01F7      MOVW	R30,R14
    0B8D 8184      LDD	R24,Z+4
    0B8E 8195      LDD	R25,Z+5
    0B8F 3184      CPI	R24,0x14
    0B90 E0E0      LDI	R30,0
    0B91 079E      CPC	R25,R30
    0B92 F038      BCS	0x0B9A
    0B93 01F7      MOVW	R30,R14
    0B94 8186      LDD	R24,Z+6
    0B95 8197      LDD	R25,Z+7
    0B96 3184      CPI	R24,0x14
    0B97 E0E0      LDI	R30,0
    0B98 079E      CPC	R25,R30
    0B99 F410      BCC	0x0B9C
    0B9A 2700      CLR	R16
    0B9B C142      RJMP	0x0CDE
(0023)    if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0);			// 窗口宽度是否溢出
    0B9C 01F7      MOVW	R30,R14
    0B9D 8024      LDD	R2,Z+4
    0B9E 8035      LDD	R3,Z+5
    0B9F 01F7      MOVW	R30,R14
    0BA0 8040      LDD	R4,Z+0
    0BA1 8051      LDD	R5,Z+1
    0BA2 0C42      ADD	R4,R2
    0BA3 1C53      ADC	R5,R3
    0BA4 EF80      LDI	R24,0xF0
    0BA5 E090      LDI	R25,0
    0BA6 1584      CP	R24,R4
    0BA7 0595      CPC	R25,R5
    0BA8 F410      BCC	0x0BAB
    0BA9 2700      CLR	R16
    0BAA C133      RJMP	0x0CDE
(0024)    if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0);			// 窗口高度是否溢出
    0BAB 01F7      MOVW	R30,R14
    0BAC 8026      LDD	R2,Z+6
    0BAD 8037      LDD	R3,Z+7
    0BAE 01F7      MOVW	R30,R14
    0BAF 8042      LDD	R4,Z+2
    0BB0 8053      LDD	R5,Z+3
    0BB1 0C42      ADD	R4,R2
    0BB2 1C53      ADC	R5,R3
    0BB3 E880      LDI	R24,0x80
    0BB4 E090      LDI	R25,0
    0BB5 1584      CP	R24,R4
    0BB6 0595      CPC	R25,R5
    0BB7 F410      BCC	0x0BBA
    0BB8 2700      CLR	R16
    0BB9 C124      RJMP	0x0CDE
(0025)     
(0026)    /* 开始画窗口 */
(0027)    GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
    0BBA 9020054E  LDS	R2,back_color
    0BBC 822C      STD	Y+4,R2
    0BBD 01F7      MOVW	R30,R14
    0BBE 8022      LDD	R2,Z+2
    0BBF 8033      LDD	R3,Z+3
    0BC0 01F7      MOVW	R30,R14
    0BC1 8046      LDD	R4,Z+6
    0BC2 8057      LDD	R5,Z+7
    0BC3 01C1      MOVW	R24,R2
    0BC4 0D84      ADD	R24,R4
    0BC5 1D95      ADC	R25,R5
    0BC6 9701      SBIW	R24,1
    0BC7 839B      STD	Y+3,R25
    0BC8 838A      STD	Y+2,R24
    0BC9 01F7      MOVW	R30,R14
    0BCA 8040      LDD	R4,Z+0
    0BCB 8051      LDD	R5,Z+1
    0BCC 8064      LDD	R6,Z+4
    0BCD 8075      LDD	R7,Z+5
    0BCE 01C2      MOVW	R24,R4
    0BCF 0D86      ADD	R24,R6
    0BD0 1D97      ADC	R25,R7
    0BD1 9701      SBIW	R24,1
    0BD2 8399      STD	Y+1,R25
    0BD3 8388      STD	Y+0,R24
    0BD4 0191      MOVW	R18,R2
    0BD5 0182      MOVW	R16,R4
    0BD6 940E103E  CALL	_GUI_RectangleFill
(0028)    GUI_Rectangle(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, disp_color);	// 画窗口
    0BD8 9020054F  LDS	R2,disp_color
    0BDA 822C      STD	Y+4,R2
    0BDB 01F7      MOVW	R30,R14
    0BDC 8022      LDD	R2,Z+2
    0BDD 8033      LDD	R3,Z+3
    0BDE 01F7      MOVW	R30,R14
    0BDF 8046      LDD	R4,Z+6
    0BE0 8057      LDD	R5,Z+7
    0BE1 01C1      MOVW	R24,R2
    0BE2 0D84      ADD	R24,R4
    0BE3 1D95      ADC	R25,R5
    0BE4 9701      SBIW	R24,1
    0BE5 839B      STD	Y+3,R25
    0BE6 838A      STD	Y+2,R24
    0BE7 01F7      MOVW	R30,R14
    0BE8 8040      LDD	R4,Z+0
    0BE9 8051      LDD	R5,Z+1
    0BEA 8064      LDD	R6,Z+4
    0BEB 8075      LDD	R7,Z+5
    0BEC 01C2      MOVW	R24,R4
    0BED 0D86      ADD	R24,R6
    0BEE 1D97      ADC	R25,R7
    0BEF 9701      SBIW	R24,1
    0BF0 8399      STD	Y+1,R25
    0BF1 8388      STD	Y+0,R24
    0BF2 0191      MOVW	R18,R2
    0BF3 0182      MOVW	R16,R4
    0BF4 940E100E  CALL	_GUI_Rectangle
(0029)    GUI_HLine(win->x, win->y + 12, win->x + win->with - 1, disp_color);							// 画标题目栏
    0BF6 9020054F  LDS	R2,disp_color
    0BF8 822A      STD	Y+2,R2
    0BF9 01F7      MOVW	R30,R14
    0BFA 8020      LDD	R2,Z+0
    0BFB 8031      LDD	R3,Z+1
    0BFC 8044      LDD	R4,Z+4
    0BFD 8055      LDD	R5,Z+5
    0BFE 01C1      MOVW	R24,R2
    0BFF 0D84      ADD	R24,R4
    0C00 1D95      ADC	R25,R5
    0C01 9701      SBIW	R24,1
    0C02 8399      STD	Y+1,R25
    0C03 8388      STD	Y+0,R24
    0C04 01F7      MOVW	R30,R14
    0C05 8122      LDD	R18,Z+2
    0C06 8133      LDD	R19,Z+3
    0C07 5F24      SUBI	R18,0xF4
    0C08 4F3F      SBCI	R19,0xFF
    0C09 0181      MOVW	R16,R2
    0C0A 940E0AAF  CALL	_GUI_HLine
(0030)    GUI_RLine(win->x + 12, win->y, win->y + 12, disp_color);										// 画关闭窗号按钮
    0C0C 9020054F  LDS	R2,disp_color
    0C0E 822A      STD	Y+2,R2
    0C0F 01F7      MOVW	R30,R14
    0C10 8022      LDD	R2,Z+2
    0C11 8033      LDD	R3,Z+3
    0C12 01C1      MOVW	R24,R2
    0C13 960C      ADIW	R24,0xC
    0C14 8399      STD	Y+1,R25
    0C15 8388      STD	Y+0,R24
    0C16 0191      MOVW	R18,R2
    0C17 01F7      MOVW	R30,R14
    0C18 8100      LDD	R16,Z+0
    0C19 8111      LDD	R17,Z+1
    0C1A 5F04      SUBI	R16,0xF4
    0C1B 4F1F      SBCI	R17,0xFF
    0C1C 940E0B60  CALL	_GUI_RLine
(0031)    GUI_Line(win->x, win->y, win->x + 12, win->y + 12, disp_color);
    0C1E 9020054F  LDS	R2,disp_color
    0C20 822C      STD	Y+4,R2
    0C21 01F7      MOVW	R30,R14
    0C22 8022      LDD	R2,Z+2
    0C23 8033      LDD	R3,Z+3
    0C24 01C1      MOVW	R24,R2
    0C25 960C      ADIW	R24,0xC
    0C26 839B      STD	Y+3,R25
    0C27 838A      STD	Y+2,R24
    0C28 01F7      MOVW	R30,R14
    0C29 8040      LDD	R4,Z+0
    0C2A 8051      LDD	R5,Z+1
    0C2B 01C2      MOVW	R24,R4
    0C2C 960C      ADIW	R24,0xC
    0C2D 8399      STD	Y+1,R25
    0C2E 8388      STD	Y+0,R24
    0C2F 0191      MOVW	R18,R2
    0C30 0182      MOVW	R16,R4
    0C31 940E10B5  CALL	_GUI_Line
(0032)    GUI_Line(win->x + 12, win->y, win->x, win->y + 12, disp_color);
    0C33 9020054F  LDS	R2,disp_color
    0C35 822C      STD	Y+4,R2
    0C36 01F7      MOVW	R30,R14
    0C37 8022      LDD	R2,Z+2
    0C38 8033      LDD	R3,Z+3
    0C39 01C1      MOVW	R24,R2
    0C3A 960C      ADIW	R24,0xC
    0C3B 839B      STD	Y+3,R25
    0C3C 838A      STD	Y+2,R24
    0C3D 01F7      MOVW	R30,R14
    0C3E 8040      LDD	R4,Z+0
    0C3F 8051      LDD	R5,Z+1
    0C40 8259      STD	Y+1,R5
    0C41 8248      STD	Y+0,R4
    0C42 0191      MOVW	R18,R2
    0C43 0182      MOVW	R16,R4
    0C44 5F04      SUBI	R16,0xF4
    0C45 4F1F      SBCI	R17,0xFF
    0C46 940E10B5  CALL	_GUI_Line
(0033)    
(0034) 
(0035)    /* 写标题 */
(0036)    if( win->title != NULL ) 
    0C48 01F7    

⌨️ 快捷键说明

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