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

📄 windows.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0220 840D              add R24,R4
 0222 951D              adc R25,R5
 0224 0197              sbiw R24,1
 0226 9983              std y+1,R25
 0228 8883              std y+0,R24
 022A F701              movw R30,R14
 022C 4680              ldd R4,z+6
 022E 5780              ldd R5,z+7
 0230 F701              movw R30,R14
 0232 2281              ldd R18,z+2
 0234 3381              ldd R19,z+3
 0236 240D              add R18,R4
 0238 351D              adc R19,R5
 023A 2B50              subi R18,11
 023C 3040              sbci R19,0
 023E 8101              movw R16,R2
 0240 0E940000          xcall _GUI_HLine
 0244                   .dbline 58
 0244           ;       
 0244           ;       str = win->state;
 0244 F701              movw R30,R14
 0246 A284              ldd R10,z+10
 0248 B384              ldd R11,z+11
 024A                   .dbline 59
 024A           ;       bak = win->x + 3;
 024A F701              movw R30,R14
 024C 8081              ldd R24,z+0
 024E 9181              ldd R25,z+1
 0250 0396              adiw R24,3
 0252 6C01              movw R12,R24
 0254                   .dbline 60
 0254           ;       bak1 = win->y + win->hight - 9;
 0254 2680              ldd R2,z+6
 0256 3780              ldd R3,z+7
 0258 F701              movw R30,R14
 025A 6281              ldd R22,z+2
 025C 7381              ldd R23,z+3
 025E 620D              add R22,R2
 0260 731D              adc R23,R3
 0262 6950              subi R22,9
 0264 7040              sbci R23,0
 0266                   .dbline 61
 0266           ;       bak2 = win->x + win->with -1;
 0266 F701              movw R30,R14
 0268 2480              ldd R2,z+4
 026A 3580              ldd R3,z+5
 026C F701              movw R30,R14
 026E 4081              ldd R20,z+0
 0270 5181              ldd R21,z+1
 0272 420D              add R20,R2
 0274 531D              adc R21,R3
 0276 4150              subi R20,1
 0278 5040              sbci R21,0
 027A 16C0              xjmp L29
 027C           L28:
 027C                   .dbline 64
 027C           ;       
 027C           ;       while(1)                                                
 027C           ;       {  if( (bak+8) > bak2 ) break;                                                          // 判断标题是否溢出
 027C                   .dbline 64
 027C C601              movw R24,R12
 027E 0896              adiw R24,8
 0280 4817              cp R20,R24
 0282 5907              cpc R21,R25
 0284 0CF4              brge L31
 0286                   .dbline 64
 0286 11C0              xjmp L30
 0288           L31:
 0288                   .dbline 65
 0288           ;          if(*str=='\0') break;                                                                                // 判断字符串是否结束
 0288 F501              movw R30,R10
 028A 2080              ldd R2,z+0
 028C 2220              tst R2
 028E 09F4              brne L33
 0290                   .dbline 65
 0290 0CC0              xjmp L30
 0292           L33:
 0292                   .dbline 67
 0292 F501              movw R30,R10
 0294 2190              ld R2,Z+
 0296 5F01              movw R10,R30
 0298 2882              std y+0,R2
 029A 9B01              movw R18,R22
 029C 8601              movw R16,R12
 029E 0E940000          xcall _GUI_PutChar
 02A2                   .dbline 68
 02A2 C601              movw R24,R12
 02A4 0696              adiw R24,6
 02A6 6C01              movw R12,R24
 02A8                   .dbline 69
 02A8           L29:
 02A8                   .dbline 63
 02A8 E9CF              xjmp L28
 02AA           L30:
 02AA                   .dbline 70
 02AA           ;          
 02AA           ;          GUI_PutChar(bak, bak1, *str++);                                                      // 显示标题
 02AA           ;          bak += 6;
 02AA           ;       }      
 02AA           ;    }
 02AA           L24:
 02AA                   .dbline 72
 02AA           ;    
 02AA           ;    return(1);
 02AA 01E0              ldi R16,1
 02AC                   .dbline -2
 02AC           L7:
 02AC 2596              adiw R28,5
 02AE 0E940000          xcall pop_gset5
 02B2                   .dbline 0 ; func end
 02B2 0895              ret
 02B4                   .dbsym r bak2 20 I
 02B4                   .dbsym r bak1 22 I
 02B4                   .dbsym r str 10 pc
 02B4                   .dbsym r bak 12 I
 02B4                   .dbsym r win 14 pX
 02B4                   .dbend
 02B4                   .dbfunc e GUI_WindowsHide _GUI_WindowsHide fc
 02B4           ;            win -> R20,R21
                        .even
 02B4           _GUI_WindowsHide::
 02B4 0E940000          xcall push_gset1
 02B8 A801              movw R20,R16
 02BA 2597              sbiw R28,5
 02BC                   .dbline -1
 02BC                   .dbline 84
 02BC           ; 
 02BC           ; }
 02BC           ; 
 02BC           ; 
 02BC           ; /****************************************************************************
 02BC           ; * 名称:GUI_WindowsHide()
 02BC           ; * 功能:消隐窗口。
 02BC           ; * 入口参数:win               窗口句柄
 02BC           ; * 出口参数:返回0表示操作失败,返回1表示操作成功
 02BC           ; ****************************************************************************/
 02BC           ; uint8  GUI_WindowsHide(WINDOWS *win)
 02BC           ; {  /* 参数过滤,若窗口起出范围,则返回0 */
 02BC                   .dbline 85
 02BC FA01              movw R30,R20
 02BE 8481              ldd R24,z+4
 02C0 9581              ldd R25,z+5
 02C2 8431              cpi R24,20
 02C4 E0E0              ldi R30,0
 02C6 9E07              cpc R25,R30
 02C8 38F0              brlo L38
 02CA FA01              movw R30,R20
 02CC 8681              ldd R24,z+6
 02CE 9781              ldd R25,z+7
 02D0 8431              cpi R24,20
 02D2 E0E0              ldi R30,0
 02D4 9E07              cpc R25,R30
 02D6 10F4              brsh L36
 02D8           L38:
 02D8                   .dbline 85
 02D8           ;    if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0);         // 宽度、高度检查,限制最小窗口
 02D8 0027              clr R16
 02DA 3DC0              xjmp L35
 02DC           L36:
 02DC                   .dbline 86
 02DC           ;    if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0);                      // 窗口宽度是否溢出
 02DC FA01              movw R30,R20
 02DE 2480              ldd R2,z+4
 02E0 3580              ldd R3,z+5
 02E2 FA01              movw R30,R20
 02E4 4080              ldd R4,z+0
 02E6 5180              ldd R5,z+1
 02E8 420C              add R4,R2
 02EA 531C              adc R5,R3
 02EC 80EF              ldi R24,240
 02EE 90E0              ldi R25,0
 02F0 8415              cp R24,R4
 02F2 9505              cpc R25,R5
 02F4 10F4              brsh L39
 02F6                   .dbline 86
 02F6 0027              clr R16
 02F8 2EC0              xjmp L35
 02FA           L39:
 02FA                   .dbline 87
 02FA           ;    if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0);                     // 窗口高度是否溢出
 02FA FA01              movw R30,R20
 02FC 2680              ldd R2,z+6
 02FE 3780              ldd R3,z+7
 0300 FA01              movw R30,R20
 0302 4280              ldd R4,z+2
 0304 5380              ldd R5,z+3
 0306 420C              add R4,R2
 0308 531C              adc R5,R3
 030A 80E8              ldi R24,128
 030C 90E0              ldi R25,0
 030E 8415              cp R24,R4
 0310 9505              cpc R25,R5
 0312 10F4              brsh L41
 0314                   .dbline 87
 0314 0027              clr R16
 0316 1FC0              xjmp L35
 0318           L41:
 0318                   .dbline 90
 0318           ;     
 0318           ;    /* 消隐窗口 */
 0318           ;    GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
 0318 20900000          lds R2,_back_color
 031C 2C82              std y+4,R2
 031E FA01              movw R30,R20
 0320 2280              ldd R2,z+2
 0322 3380              ldd R3,z+3
 0324 FA01              movw R30,R20
 0326 4680              ldd R4,z+6
 0328 5780              ldd R5,z+7
 032A C101              movw R24,R2
 032C 840D              add R24,R4
 032E 951D              adc R25,R5
 0330 0197              sbiw R24,1
 0332 9B83              std y+3,R25
 0334 8A83              std y+2,R24
 0336 FA01              movw R30,R20
 0338 4080              ldd R4,z+0
 033A 5180              ldd R5,z+1
 033C 6480              ldd R6,z+4
 033E 7580              ldd R7,z+5
 0340 C201              movw R24,R4
 0342 860D              add R24,R6
 0344 971D              adc R25,R7
 0346 0197              sbiw R24,1
 0348 9983              std y+1,R25
 034A 8883              std y+0,R24
 034C 9101              movw R18,R2
 034E 8201              movw R16,R4
 0350 0E940000          xcall _GUI_RectangleFill
 0354                   .dbline 91
 0354           ;    return(1);
 0354 01E0              ldi R16,1
 0356                   .dbline -2
 0356           L35:
 0356 2596              adiw R28,5
 0358 0E940000          xcall pop_gset1
 035C                   .dbline 0 ; func end
 035C 0895              ret
 035E                   .dbsym r win 20 pX
 035E                   .dbend
 035E                   .dbfunc e GUI_WindowsClr _GUI_WindowsClr fV
 035E           ;             x1 -> R10
 035E           ;             y0 -> R22
 035E           ;             x0 -> R20
 035E           ;             y1 -> R12
 035E           ;            win -> R14,R15
                        .even
 035E           _GUI_WindowsClr::
 035E 0E940000          xcall push_gset5
 0362 7801              movw R14,R16
 0364 2597              sbiw R28,5
 0366                   .dbline -1
 0366                   .dbline 104
 0366           ; }
 0366           ; 
 0366           ; 
 0366           ; 
 0366           ; /****************************************************************************
 0366           ; * 名称:GUI_WindowsClr()
 0366           ; * 功能:清屏窗口。
 0366           ; * 入口参数:win               窗口句柄
 0366           ; * 出口参数:无
 0366           ; * 说明:使用此函数前要先使用GUI_WindowsDraw()将窗口画出。
 0366           ; ****************************************************************************/
 0366           ; void  GUI_WindowsClr(WINDOWS *win)
 0366           ; {  uint8  x0, y0;
 0366                   .dbline 108
 0366           ;    uint8  x1, y1;
 0366           ;  
 0366           ;    /* 设置要清屏的区域 */
 0366           ;    x0 = win->x + 1;
 0366 F701              movw R30,R14
 0368 4081              ldd R20,z+0
 036A 4F5F              subi R20,255  ; offset = 1
 036C 5F4F              sbci R21,255
 036E                   .dbline 109
 036E           ;    x1 = win->x + win->with - 2;
 036E 2480              ldd R2,z+4
 0370 3580              ldd R3,z+5
 0372 F701              movw R30,R14
 0374 8081              ldd R24,z+0
 0376 9181              ldd R25,z+1
 0378 820D              add R24,R2
 037A 931D              adc R25,R3
 037C 0297              sbiw R24,2
 037E A82E              mov R10,R24
 0380                   .dbline 110
 0380           ;    y0 = win->y + 13;
 0380 6281              ldd R22,z+2
 0382 635F              subi R22,243  ; offset = 13
 0384 7F4F              sbci R23,255
 0386                   .dbline 111
 0386           ;    y1 = win->y + win->hight - 2;
 0386 F701              movw R30,R14
 0388 2680              ldd R2,z+6
 038A 3780              ldd R3,z+7
 038C F701              movw R30,R14
 038E 8281              ldd R24,z+2
 0390 9381              ldd R25,z+3
 0392 820D              add R24,R2
 0394 931D              adc R25,R3
 0396 0297              sbiw R24,2
 0398 C82E              mov R12,R24
 039A                   .dbline 112
 039A           ;    if( win->state != NULL )                   // 判断是否有状态栏                             
 039A F701              movw R30,R14
 039C 2284              ldd R2,z+10
 039E 3384              ldd R3,z+11
 03A0 2220              tst R2
 03A2 11F4              brne X4
 03A4 3320              tst R3
 03A6 89F0              breq L44
 03A8           X4:
 03A8                   .dbline 113
 03A8           ;    {  if( win->hight >= 60)
 03A8                   .dbline 113
 03A8 F701              movw R30,R14
 03AA 8681              ldd R24,z+6
 03AC 9781              ldd R25,z+7
 03AE 8C33              cpi R24,60
 03B0 E0E0              ldi R30,0
 03B2 9E07              cpc R25,R30
 03B4 50F0              brlo L46
 03B6                   .dbline 114
 03B6           ;       {  y1 = win->y + win->hight - 12;
 03B6                   .dbline 114
 03B6 F701              movw R30,R14
 03B8 2680              ldd R2,z+6
 03BA 3780              ldd R3,z+7
 03BC F701              movw R30,R14
 03BE 8281              ldd R24,z+2
 03C0 9381              ldd R25,z+3
 03C2 820D              add R24,R2
 03C4 931D              adc R25,R3
 03C6 0C97              sbiw R24,12
 03C8 C82E              mov R12,R24
 03CA                   .dbline 115
 03CA           ;       }
 03CA           L46:
 03CA                   .dbline 116
 03CA           ;    }
 03CA           L44:
 03CA                   .dbline 119
 03CA           ; 
 03CA           ;    /* 使用填充矩形实现清屏 */
 03CA           ;    GUI_RectangleFill(x0, y0, x1, y1, back_color);
 03CA 20900000          lds R2,_back_color
 03CE 2C82              std y+4,R2
 03D0 2C2C              mov R2,R12
 03D2 3324              clr R3
 03D4 3B82              std y+3,R3
 03D6 2A82              std y+2,R2
 03D8 2A2C              mov R2,R10
 03DA 3324              clr R3
 03DC 3982              std y+1,R3
 03DE 2882              std y+0,R2
 03E0 262F              mov R18,R22
 03E2 3327              clr R19
 03E4 042F              mov R16,R20
 03E6 1127              clr R17
 03E8 0E940000          xcall _GUI_RectangleFill
 03EC                   .dbline -2
 03EC           L43:
 03EC 2596              adiw R28,5
 03EE 0E940000          xcall pop_gset5
 03F2                   .dbline 0 ; func end
 03F2 0895              ret
 03F4                   .dbsym r x1 10 c
 03F4                   .dbsym r y0 22 c
 03F4                   .dbsym r x0 20 c
 03F4                   .dbsym r y1 12 c
 03F4                   .dbsym r win 14 pX
 03F4                   .dbend

⌨️ 快捷键说明

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