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

📄 menu.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module menu.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\IccPro\mega128_lcd\ZLG_GUI\menu.c
 0000                   .dbfunc e GUI_MMenuDraw _GUI_MMenuDraw fc
 0000           ;              i -> R20
 0000           ;             xx -> R22
 0000           ;           mwin -> R10,R11
 0000           ;            men -> R12,R13
                        .even
 0000           _GUI_MMenuDraw::
 0000 0E940000          xcall push_gset4
 0004 6801              movw R12,R16
 0006 2397              sbiw R28,3
 0008                   .dbline -1
 0008                   .dbline 19
 0008           ; /****************************************************************************************
 0008           ; * 文件名:MENU.C
 0008           ; * 功能:菜单显示及操作(下拉式菜单)。
 0008           ; * 作者:黄绍斌
 0008           ; * 日期:2004.02.26
 0008           ; * 备注:使用GUI_SetBackColor()函数设置显示颜色及背景色。
 0008           ; ****************************************************************************************/
 0008           ; #include "config.h"
 0008           ; 
 0008           ; 
 0008           ; #if  GUI_MenuDown_EN==1
 0008           ; /****************************************************************************
 0008           ; * 名称:GUI_MMenuDraw()
 0008           ; * 功能:显示主菜单,加上边框。
 0008           ; * 入口参数:men               主菜单句柄
 0008           ; * 出口参数:返回0表示操作失败,返回1表示操作成功
 0008           ; ****************************************************************************/
 0008           ; uint8  GUI_MMenuDraw(MMENU *men)
 0008           ; {  WINDOWS  *mwin;
 0008                   .dbline 24
 0008           ;    uint8  i;
 0008           ;    uint8  xx;
 0008           ; 
 0008           ;    /* 参数过滤 */
 0008           ;    if( (men->no)==0 ) return(0);
 0008 F601              movw R30,R12
 000A 2280              ldd R2,z+2
 000C 2220              tst R2
 000E 11F4              brne L8
 0010                   .dbline 24
 0010 0027              clr R16
 0012 70C0              xjmp L7
 0014           L8:
 0014                   .dbline 26
 0014           ;    
 0014           ;    mwin = men->win;                                           // 取得窗口句柄
 0014 F601              movw R30,R12
 0016 A080              ldd R10,z+0
 0018 B180              ldd R11,z+1
 001A                   .dbline 28
 001A           ;    /* 判断是否可以显示主菜单 */
 001A           ;    if( (mwin->hight)<50 ) return(0);
 001A F501              movw R30,R10
 001C 8681              ldd R24,z+6
 001E 9781              ldd R25,z+7
 0020 8233              cpi R24,50
 0022 E0E0              ldi R30,0
 0024 9E07              cpc R25,R30
 0026 10F4              brsh L10
 0028                   .dbline 28
 0028 0027              clr R16
 002A 64C0              xjmp L7
 002C           L10:
 002C                   .dbline 29
 002C           ;    if( (mwin->with)<50 ) return(0);
 002C F501              movw R30,R10
 002E 8481              ldd R24,z+4
 0030 9581              ldd R25,z+5
 0032 8233              cpi R24,50
 0034 E0E0              ldi R30,0
 0036 9E07              cpc R25,R30
 0038 10F4              brsh L12
 003A                   .dbline 29
 003A 0027              clr R16
 003C 5BC0              xjmp L7
 003E           L12:
 003E                   .dbline 32
 003E           ;    
 003E           ;    /* 画菜单条,并显示菜主单 */
 003E           ;    GUI_HLine(mwin->x, mwin->y + 22, mwin->x + mwin->with - 1, disp_color);
 003E 20900000          lds R2,_disp_color
 0042 2A82              std y+2,R2
 0044 F501              movw R30,R10
 0046 2080              ldd R2,z+0
 0048 3180              ldd R3,z+1
 004A 4480              ldd R4,z+4
 004C 5580              ldd R5,z+5
 004E C101              movw R24,R2
 0050 840D              add R24,R4
 0052 951D              adc R25,R5
 0054 0197              sbiw R24,1
 0056 9983              std y+1,R25
 0058 8883              std y+0,R24
 005A F501              movw R30,R10
 005C 2281              ldd R18,z+2
 005E 3381              ldd R19,z+3
 0060 2A5E              subi R18,234  ; offset = 22
 0062 3F4F              sbci R19,255
 0064 8101              movw R16,R2
 0066 0E940000          xcall _GUI_HLine
 006A                   .dbline 34
 006A           ;    
 006A           ;    xx = mwin->x;
 006A F501              movw R30,R10
 006C 6081              ldd R22,z+0
 006E                   .dbline 35
 006E           ;    for(i=0; i<(men->no); i++)
 006E 4427              clr R20
 0070 3BC0              xjmp L17
 0072           L14:
 0072                   .dbline 36
 0072           ;    {  if( (xx+MMENU_WIDTH) > (mwin->x + mwin->with) ) return(0);
 0072                   .dbline 36
 0072 F501              movw R30,R10
 0074 2480              ldd R2,z+4
 0076 3580              ldd R3,z+5
 0078 F501              movw R30,R10
 007A 4080              ldd R4,z+0
 007C 5180              ldd R5,z+1
 007E 420C              add R4,R2
 0080 531C              adc R5,R3
 0082 862F              mov R24,R22
 0084 9927              clr R25
 0086 8296              adiw R24,34
 0088 4816              cp R4,R24
 008A 5906              cpc R5,R25
 008C 10F4              brsh L18
 008E                   .dbline 36
 008E 0027              clr R16
 0090 31C0              xjmp L7
 0092           L18:
 0092                   .dbline 38
 0092 84E0              ldi R24,4
 0094 8A83              std y+2,R24
 0096 82E0              ldi R24,2
 0098 849F              mul R24,R20
 009A F001              movw R30,R0
 009C C601              movw R24,R12
 009E 0396              adiw R24,3
 00A0 E80F              add R30,R24
 00A2 F91F              adc R31,R25
 00A4 2080              ldd R2,z+0
 00A6 3180              ldd R3,z+1
 00A8 3982              std y+1,R3
 00AA 2882              std y+0,R2
 00AC F501              movw R30,R10
 00AE 2281              ldd R18,z+2
 00B0 3381              ldd R19,z+3
 00B2 225F              subi R18,242  ; offset = 14
 00B4 3F4F              sbci R19,255
 00B6 062F              mov R16,R22
 00B8 1127              clr R17
 00BA 0E5F              subi R16,254  ; offset = 2
 00BC 1F4F              sbci R17,255
 00BE 0E940000          xcall _GUI_PutNoStr
 00C2                   .dbline 39
 00C2 6E5D              subi R22,222    ; addi 34
 00C4                   .dbline 40
 00C4 20900000          lds R2,_disp_color
 00C8 2A82              std y+2,R2
 00CA F501              movw R30,R10
 00CC 2280              ldd R2,z+2
 00CE 3380              ldd R3,z+3
 00D0 C101              movw R24,R2
 00D2 4696              adiw R24,22
 00D4 9983              std y+1,R25
 00D6 8883              std y+0,R24
 00D8 9101              movw R18,R2
 00DA 245F              subi R18,244  ; offset = 12
 00DC 3F4F              sbci R19,255
 00DE 062F              mov R16,R22
 00E0 1127              clr R17
 00E2 0E940000          xcall _GUI_RLine
 00E6                   .dbline 41
 00E6           L15:
 00E6                   .dbline 35
 00E6 4395              inc R20
 00E8           L17:
 00E8                   .dbline 35
 00E8 F601              movw R30,R12
 00EA 2280              ldd R2,z+2
 00EC 4215              cp R20,R2
 00EE 08F4              brsh X0
 00F0 C0CF              xjmp L14
 00F2           X0:
 00F2                   .dbline 43
 00F2           ;       
 00F2           ;       GUI_PutNoStr(xx+2, mwin->y + 14, men->str[i], 4);                       // 书写主菜单文字
 00F2           ;       xx += MMENU_WIDTH;
 00F2           ;       GUI_RLine(xx, mwin->y + 12, mwin->y + 22, disp_color);  // 显示主菜单分界线      
 00F2           ;    }
 00F2           ;    
 00F2           ;    return(1);
 00F2 01E0              ldi R16,1
 00F4                   .dbline -2
 00F4           L7:
 00F4 2396              adiw R28,3
 00F6 0E940000          xcall pop_gset4
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r i 20 c
 00FC                   .dbsym r xx 22 c
 00FC                   .dbsym r mwin 10 pX
 00FC                   .dbsym r men 12 pX
 00FC                   .dbend
 00FC                   .dbfunc e GUI_MMenuSelect _GUI_MMenuSelect fV
 00FC           ;             xx -> R20
 00FC           ;           mwin -> R22,R23
 00FC           ;             no -> R20
 00FC           ;            men -> R22,R23
                        .even
 00FC           _GUI_MMenuSelect::
 00FC 0E940000          xcall push_gset2
 0100 422F              mov R20,R18
 0102 B801              movw R22,R16
 0104 2397              sbiw R28,3
 0106                   .dbline -1
 0106                   .dbline 55
 0106           ; }
 0106           ; 
 0106           ; 
 0106           ; /****************************************************************************
 0106           ; * 名称:GUI_MMenuSelect()
 0106           ; * 功能:当前主菜单,加下划线,表示当前主菜单。
 0106           ; * 入口参数:men               主菜单句柄
 0106           ; *          no         所选的主菜单项
 0106           ; * 出口参数:无
 0106           ; ****************************************************************************/
 0106           ; void  GUI_MMenuSelect(MMENU *men, uint8 no)
 0106           ; {  WINDOWS  *mwin;
 0106                   .dbline 59
 0106           ;    uint8  xx;
 0106           ; 
 0106           ;    /* 参数过滤 */
 0106           ;    if( (men->no)==0 ) return;
 0106 FB01              movw R30,R22
 0108 2280              ldd R2,z+2
 010A 2220              tst R2
 010C 09F4              brne L21
 010E                   .dbline 59
 010E 33C0              xjmp L20
 0110           L21:
 0110                   .dbline 60
 0110           ;    if( no>(men->no) ) return;
 0110 FB01              movw R30,R22
 0112 2280              ldd R2,z+2
 0114 2416              cp R2,R20
 0116 08F4              brsh L23
 0118                   .dbline 60
 0118 2EC0              xjmp L20
 011A           L23:
 011A                   .dbline 62
 011A           ;   
 011A           ;    mwin = men->win;                                           // 取得窗口句柄
 011A FB01              movw R30,R22
 011C 6081              ldd R22,z+0
 011E 7181              ldd R23,z+1
 0120                   .dbline 64
 0120           ;    /* 判断是否可以显示主菜单 */
 0120           ;    if( (mwin->hight)<50 ) return;
 0120 FB01              movw R30,R22
 0122 8681              ldd R24,z+6
 0124 9781              ldd R25,z+7
 0126 8233              cpi R24,50
 0128 E0E0              ldi R30,0
 012A 9E07              cpc R25,R30
 012C 08F4              brsh L25
 012E                   .dbline 64
 012E 23C0              xjmp L20
 0130           L25:
 0130                   .dbline 65
 0130           ;    if( (mwin->with)<50 ) return;
 0130 FB01              movw R30,R22
 0132 8481              ldd R24,z+4
 0134 9581              ldd R25,z+5
 0136 8233              cpi R24,50
 0138 E0E0              ldi R30,0
 013A 9E07              cpc R25,R30
 013C 08F4              brsh L27
 013E                   .dbline 65
 013E 1BC0              xjmp L20
 0140           L27:
 0140                   .dbline 68
 0140           ;    
 0140           ;    /* 显示下划线 */
 0140           ;    xx = mwin->x + no*MMENU_WIDTH;
 0140 82E2              ldi R24,34
 0142 849F              mul R24,R20
 0144 FB01              movw R30,R22
 0146 4081              ldd R20,z+0
 0148 400D              add R20,R0
 014A 511D              adc R21,R1
 014C                   .dbline 69
 014C           ;    GUI_HLine(xx+1, mwin->y + 22-1, xx+MMENU_WIDTH- 1, disp_color);
 014C 20900000          lds R2,_disp_color
 0150 2A82              std y+2,R2
 0152 842F              mov R24,R20
 0154 9927              clr R25
 0156 8296              adiw R24,34
 0158 0197              sbiw R24,1
 015A 9983              std y+1,R25
 015C 8883              std y+0,R24
 015E 2281              ldd R18,z+2
 0160 3381              ldd R19,z+3
 0162 2A5E              subi R18,234  ; offset = 22
 0164 3F4F              sbci R19,255
 0166 2150              subi R18,1
 0168 3040              sbci R19,0
 016A 042F              mov R16,R20
 016C 1127              clr R17
 016E 0F5F              subi R16,255  ; offset = 1
 0170 1F4F              sbci R17,255
 0172 0E940000          xcall _GUI_HLine
 0176                   .dbline -2
 0176           L20:
 0176 2396              adiw R28,3
 0178 0E940000          xcall pop_gset2
 017C                   .dbline 0 ; func end
 017C 0895              ret
 017E                   .dbsym r xx 20 c
 017E                   .dbsym r mwin 22 pX
 017E                   .dbsym r no 20 c
 017E                   .dbsym r men 22 pX
 017E                   .dbend

⌨️ 快捷键说明

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