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

📄 menu.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 017E                   .dbfunc e GUI_MMenuNSelect _GUI_MMenuNSelect fV
 017E           ;             xx -> R20
 017E           ;           mwin -> R22,R23
 017E           ;             no -> R20
 017E           ;            men -> R22,R23
                        .even
 017E           _GUI_MMenuNSelect::
 017E 0E940000          xcall push_gset2
 0182 422F              mov R20,R18
 0184 B801              movw R22,R16
 0186 2397              sbiw R28,3
 0188                   .dbline -1
 0188                   .dbline 81
 0188           ; }
 0188           ; 
 0188           ; 
 0188           ; /****************************************************************************
 0188           ; * 名称:GUI_MMenuNSelect()
 0188           ; * 功能:取消当前主菜单,去除下划线。
 0188           ; * 入口参数:men               主菜单句柄
 0188           ; *          no         所选的主菜单项
 0188           ; * 出口参数:无
 0188           ; ****************************************************************************/
 0188           ; void  GUI_MMenuNSelect(MMENU *men, uint8 no)
 0188           ; {  WINDOWS  *mwin;
 0188                   .dbline 85
 0188           ;    uint8  xx;
 0188           ; 
 0188           ;    /* 参数过滤 */
 0188           ;    if( (men->no)==0 ) return;
 0188 FB01              movw R30,R22
 018A 2280              ldd R2,z+2
 018C 2220              tst R2
 018E 09F4              brne L30
 0190                   .dbline 85
 0190 33C0              xjmp L29
 0192           L30:
 0192                   .dbline 86
 0192           ;    if( no>(men->no) ) return;
 0192 FB01              movw R30,R22
 0194 2280              ldd R2,z+2
 0196 2416              cp R2,R20
 0198 08F4              brsh L32
 019A                   .dbline 86
 019A 2EC0              xjmp L29
 019C           L32:
 019C                   .dbline 88
 019C           ;   
 019C           ;    mwin = men->win;                                           // 取得窗口句柄
 019C FB01              movw R30,R22
 019E 6081              ldd R22,z+0
 01A0 7181              ldd R23,z+1
 01A2                   .dbline 90
 01A2           ;    /* 判断是否可以显示主菜单 */
 01A2           ;    if( (mwin->hight)<50 ) return;
 01A2 FB01              movw R30,R22
 01A4 8681              ldd R24,z+6
 01A6 9781              ldd R25,z+7
 01A8 8233              cpi R24,50
 01AA E0E0              ldi R30,0
 01AC 9E07              cpc R25,R30
 01AE 08F4              brsh L34
 01B0                   .dbline 90
 01B0 23C0              xjmp L29
 01B2           L34:
 01B2                   .dbline 91
 01B2           ;    if( (mwin->with)<50 ) return;
 01B2 FB01              movw R30,R22
 01B4 8481              ldd R24,z+4
 01B6 9581              ldd R25,z+5
 01B8 8233              cpi R24,50
 01BA E0E0              ldi R30,0
 01BC 9E07              cpc R25,R30
 01BE 08F4              brsh L36
 01C0                   .dbline 91
 01C0 1BC0              xjmp L29
 01C2           L36:
 01C2                   .dbline 94
 01C2           ;    
 01C2           ;    /* 显示下划线 */
 01C2           ;    xx = mwin->x + no*MMENU_WIDTH;
 01C2 82E2              ldi R24,34
 01C4 849F              mul R24,R20
 01C6 FB01              movw R30,R22
 01C8 4081              ldd R20,z+0
 01CA 400D              add R20,R0
 01CC 511D              adc R21,R1
 01CE                   .dbline 95
 01CE           ;    GUI_HLine(xx+1, mwin->y + 22-1, xx+MMENU_WIDTH- 1, back_color);
 01CE 20900000          lds R2,_back_color
 01D2 2A82              std y+2,R2
 01D4 842F              mov R24,R20
 01D6 9927              clr R25
 01D8 8296              adiw R24,34
 01DA 0197              sbiw R24,1
 01DC 9983              std y+1,R25
 01DE 8883              std y+0,R24
 01E0 2281              ldd R18,z+2
 01E2 3381              ldd R19,z+3
 01E4 2A5E              subi R18,234  ; offset = 22
 01E6 3F4F              sbci R19,255
 01E8 2150              subi R18,1
 01EA 3040              sbci R19,0
 01EC 042F              mov R16,R20
 01EE 1127              clr R17
 01F0 0F5F              subi R16,255  ; offset = 1
 01F2 1F4F              sbci R17,255
 01F4 0E940000          xcall _GUI_HLine
 01F8                   .dbline -2
 01F8           L29:
 01F8 2396              adiw R28,3
 01FA 0E940000          xcall pop_gset2
 01FE                   .dbline 0 ; func end
 01FE 0895              ret
 0200                   .dbsym r xx 20 c
 0200                   .dbsym r mwin 22 pX
 0200                   .dbsym r no 20 c
 0200                   .dbsym r men 22 pX
 0200                   .dbend
 0200                   .dbfunc e GUI_SMenuDraw _GUI_SMenuDraw fc
 0200           ;           mwin -> R22,R23
 0200           ;             xx -> R20,R21
 0200           ;              i -> R22
 0200           ;             yy -> R10,R11
 0200           ;            men -> R12,R13
                        .even
 0200           _GUI_SMenuDraw::
 0200 0E940000          xcall push_gset4
 0204 6801              movw R12,R16
 0206 2597              sbiw R28,5
 0208                   .dbline -1
 0208                   .dbline 107
 0208           ; }
 0208           ; 
 0208           ; 
 0208           ; 
 0208           ; /****************************************************************************
 0208           ; * 名称:GUI_SMenuDraw()
 0208           ; * 功能:显示子菜单,加上边框。
 0208           ; * 入口参数:men               子菜单句柄
 0208           ; * 出口参数:返回0表示操作失败,返回1表示操作成功
 0208           ; ****************************************************************************/
 0208           ; uint8  GUI_SMenuDraw(SMENU *men)
 0208           ; {  WINDOWS  *mwin;
 0208                   .dbline 111
 0208           ;    uint32   xx, yy;
 0208           ;    uint8    i;
 0208           ; 
 0208           ;    mwin = men->win;
 0208 F601              movw R30,R12
 020A 6081              ldd R22,z+0
 020C 7181              ldd R23,z+1
 020E                   .dbline 113
 020E           ;    /* 判断是否可以显示主菜单 */
 020E           ;    if( (mwin->hight)<50 ) return(0);
 020E FB01              movw R30,R22
 0210 8681              ldd R24,z+6
 0212 9781              ldd R25,z+7
 0214 8233              cpi R24,50
 0216 E0E0              ldi R30,0
 0218 9E07              cpc R25,R30
 021A 10F4              brsh L39
 021C                   .dbline 113
 021C 0027              clr R16
 021E 2EC1              xjmp L38
 0220           L39:
 0220                   .dbline 114
 0220           ;    if( (mwin->with)<50 ) return(0);
 0220 FB01              movw R30,R22
 0222 8481              ldd R24,z+4
 0224 9581              ldd R25,z+5
 0226 8233              cpi R24,50
 0228 E0E0              ldi R30,0
 022A 9E07              cpc R25,R30
 022C 10F4              brsh L41
 022E                   .dbline 114
 022E 0027              clr R16
 0230 25C1              xjmp L38
 0232           L41:
 0232                   .dbline 117
 0232           ;     
 0232           ;    /* 画菜子单项。下拉子菜单,以向左下拉为原则,若右边溢出则以右下拉显示 */
 0232           ;    xx = mwin->x;
 0232 FB01              movw R30,R22
 0234 4081              ldd R20,z+0
 0236 5181              ldd R21,z+1
 0238                   .dbline 118
 0238           ;    xx += (men->mmenu_no)*MMENU_WIDTH;
 0238 F601              movw R30,R12
 023A 2280              ldd R2,z+2
 023C 82E2              ldi R24,34
 023E 829D              mul R24,R2
 0240 400D              add R20,R0
 0242 511D              adc R21,R1
 0244                   .dbline 119
 0244           ;    yy = mwin->y + 22;
 0244 FB01              movw R30,R22
 0246 8281              ldd R24,z+2
 0248 9381              ldd R25,z+3
 024A 4696              adiw R24,22
 024C 5C01              movw R10,R24
 024E                   .dbline 120
 024E           ;    yy +=  (men->no) * 11 + 2;
 024E F601              movw R30,R12
 0250 2380              ldd R2,z+3
 0252 8BE0              ldi R24,11
 0254 829D              mul R24,R2
 0256 C001              movw R24,R0
 0258 0296              adiw R24,2
 025A A80E              add R10,R24
 025C B91E              adc R11,R25
 025E                   .dbline 121
 025E           ;    if( (xx+SMENU_WIDTH) <= (mwin->x + mwin->with - 1) ) 
 025E FB01              movw R30,R22
 0260 2480              ldd R2,z+4
 0262 3580              ldd R3,z+5
 0264 FB01              movw R30,R22
 0266 8081              ldd R24,z+0
 0268 9181              ldd R25,z+1
 026A 820D              add R24,R2
 026C 931D              adc R25,R3
 026E 0197              sbiw R24,1
 0270 FA01              movw R30,R20
 0272 EE5B              subi R30,190  ; offset = 66
 0274 FF4F              sbci R31,255
 0276 8E17              cp R24,R30
 0278 9F07              cpc R25,R31
 027A 08F4              brsh X1
 027C 45C0              xjmp L43
 027E           X1:
 027E                   .dbline 122
 027E           ;    {  /* 以左下拉为原则显示子菜单 */
 027E                   .dbline 123
 027E           ;       if( (men->mmenu_no) == 0 )
 027E F601              movw R30,R12
 0280 2280              ldd R2,z+2
 0282 2220              tst R2
 0284 E1F4              brne L45
 0286                   .dbline 124
 0286           ;       {  GUI_RLine(xx+SMENU_WIDTH, mwin->y + 22, yy, disp_color);
 0286                   .dbline 124
 0286 20900000          lds R2,_disp_color
 028A 2A82              std y+2,R2
 028C B982              std y+1,R11
 028E A882              std y+0,R10
 0290 FB01              movw R30,R22
 0292 2281              ldd R18,z+2
 0294 3381              ldd R19,z+3
 0296 2A5E              subi R18,234  ; offset = 22
 0298 3F4F              sbci R19,255
 029A 8A01              movw R16,R20
 029C 0E5B              subi R16,190  ; offset = 66
 029E 1F4F              sbci R17,255
 02A0 0E940000          xcall _GUI_RLine
 02A4                   .dbline 125
 02A4           ;          GUI_HLine(xx, yy, xx+SMENU_WIDTH, disp_color);
 02A4 20900000          lds R2,_disp_color
 02A8 2A82              std y+2,R2
 02AA CA01              movw R24,R20
 02AC 8E5B              subi R24,190  ; offset = 66
 02AE 9F4F              sbci R25,255
 02B0 9983              std y+1,R25
 02B2 8883              std y+0,R24
 02B4 9501              movw R18,R10
 02B6 8A01              movw R16,R20
 02B8 0E940000          xcall _GUI_HLine
 02BC                   .dbline 126
 02BC           ;       }
 02BC 12C0              xjmp L46
 02BE           L45:
 02BE                   .dbline 128
 02BE           ;       else
 02BE           ;       {  GUI_Rectangle(xx, mwin->y + 22, xx+SMENU_WIDTH, yy, disp_color);
 02BE                   .dbline 128
 02BE 20900000          lds R2,_disp_color
 02C2 2C82              std y+4,R2
 02C4 BB82              std y+3,R11
 02C6 AA82              std y+2,R10
 02C8 CA01              movw R24,R20
 02CA 8E5B              subi R24,190  ; offset = 66
 02CC 9F4F              sbci R25,255
 02CE 9983              std y+1,R25
 02D0 8883              std y+0,R24
 02D2 FB01              movw R30,R22
 02D4 2281              ldd R18,z+2
 02D6 3381              ldd R19,z+3
 02D8 2A5E              subi R18,234  ; offset = 22
 02DA 3F4F              sbci R19,255
 02DC 8A01              movw R16,R20
 02DE 0E940000          xcall _GUI_Rectangle
 02E2                   .dbline 129
 02E2           ;       }
 02E2           L46:
 02E2                   .dbline 130
 02E2           ;       GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, back_color);
 02E2 20900000          lds R2,_back_color
 02E6 2A82              std y+2,R2
 02E8 CA01              movw R24,R20
 02EA 8296              adiw R24,34
 02EC 0197              sbiw R24,1
 02EE 9983              std y+1,R25
 02F0 8883              std y+0,R24
 02F2 FB01              movw R30,R22
 02F4 2281              ldd R18,z+2
 02F6 3381              ldd R19,z+3
 02F8 2A5E              subi R18,234  ; offset = 22
 02FA 3F4F              sbci R19,255
 02FC 8A01              movw R16,R20
 02FE 0F5F              subi R16,255  ; offset = 1
 0300 1F4F              sbci R17,255
 0302 0E940000          xcall _GUI_HLine
 0306                   .dbline 132
 0306           ;       
 0306           ;    }
 0306 52C0              xjmp L44
 0308           L43:
 0308                   .dbline 134
 0308           ;    else
 0308           ;    {  /* 以右下拉为原则 */
 0308                   .dbline 135
 0308           ;       if( (xx+MMENU_WIDTH) == (mwin->x + mwin->with - 1) )
 0308 FB01              movw R30,R22
 030A 2480              ldd R2,z+4
 030C 3580              ldd R3,z+5
 030E FB01              movw R30,R22
 0310 8081              ldd R24,z+0
 0312 9181              ldd R25,z+1
 0314 820D              add R24,R2
 0316 931D              adc R25,R3

⌨️ 快捷键说明

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