menufunc.lis

来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 209 行

LIS
209
字号
                        .module MenuFunc.C
                        .area text(rom, con, rel)
                        .even
 0000           _DispMenuFuncInit::
 0000 2197              sbiw R28,1
 0002           ; /*这份代码经源码格式软件格式化过
 0002           ;      yang_hx@neusoft.com      */
 0002           ; /******************************************************************************
 0002           ;  * MenuFunc.C - "功能"菜单 条项动态生成代码
 0002           ;  ******************************************************************************/
 0002           ; #include "SYS_Config.h" 
 0002           ; #include "GUI_Config.h" 
 0002           ; #include "GUI.H" 
 0002           ; #include "Menu.H" 
 0002           ; #include "KeyScan.H" 
 0002           ; 
 0002           ; 
 0002           ; //功能
 0002           ; //Bar型菜单
 0002           ; void DispMenuFuncInit()
 0002           ; {
 0002           ;     //--------------------
 0002           ;     GUI_Clear();
 0002 0E940000          xcall _GUI_Clear
 0006           ;     //--------------------
 0006           ;     BarMenu=&MenuFunc[language];
 0006 20900000          lds R2,_language
 000A 85E0              ldi R24,5
 000C 829D              mul R24,R2
 000E 1001              movw R2,R0
 0010 80E0              ldi R24,<_MenuFunc
 0012 90E0              ldi R25,>_MenuFunc
 0014 280E              add R2,R24
 0016 391E              adc R3,R25
 0018 30920100          sts _BarMenu+1,R3
 001C 20920000          sts _BarMenu,R2
 0020           ;     ItemNum=(*BarMenu).TextNum ;
 0020 F101              movw R30,R2
 0022 3296              adiw R30,2
 0024 E491              lpm R30,Z
 0026 E0930000          sts _ItemNum,R30
 002A           ;     DispItem=(*BarMenu).Text ;
 002A F101              movw R30,R2
 002C 0590              lpm R0,Z+
 002E 1490              lpm R1,Z
 0030 F001              movw R30,R0
 0032 F0930100          sts _DispItem+1,R31
 0036 E0930000          sts _DispItem,R30
 003A           ;     
 003A           ;     //显示按键对应的文字提示,1-->"选择"
 003A           ;     GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
 003A 86E3              ldi R24,54
 003C 8883              std y+0,R24
 003E 21E0              ldi R18,1
 0040 20900000          lds R2,_language
 0044 85E0              ldi R24,5
 0046 829D              mul R24,R2
 0048 F001              movw R30,R0
 004A 80E0              ldi R24,<_Tip
 004C 90E0              ldi R25,>_Tip
 004E E80F              add R30,R24
 0050 F91F              adc R31,R25
 0052 0590              lpm R0,Z+
 0054 1490              lpm R1,Z
 0056 F001              movw R30,R0
 0058 0281              ldd R16,z+2
 005A 1381              ldd R17,z+3
 005C 0E940000          xcall _GUI_DispStringAt
 0060           ;     //显示按键对应的文字提示,0-->"退出"
 0060           ;       GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
 0060 86E3              ldi R24,54
 0062 8883              std y+0,R24
 0064 29E4              ldi R18,73
 0066 20900000          lds R2,_language
 006A 85E0              ldi R24,5
 006C 829D              mul R24,R2
 006E F001              movw R30,R0
 0070 80E0              ldi R24,<_Tip
 0072 90E0              ldi R25,>_Tip
 0074 E80F              add R30,R24
 0076 F91F              adc R31,R25
 0078 0590              lpm R0,Z+
 007A 1490              lpm R1,Z
 007C F001              movw R30,R0
 007E 0085              ldd R16,z+8
 0080 1185              ldd R17,z+9
 0082 0E940000          xcall _GUI_DispStringAt
 0086           ;     
 0086           ;       //用户定义的初始化代码请放在这里
 0086           ;     BarMenuInit();
 0086 0E940000          xcall _BarMenuInit
 008A           L1:
 008A 2196              adiw R28,1
 008C                   .dbline 0 ; func end
 008C 0895              ret
                        .even
 008E           _DispMenuFuncUp::
 008E 0E940000          xcall push_gset1
 0092           ;     //调用公共初始化的代码
 0092           ; }
 0092           ; 
 0092           ; void DispMenuFuncUp()
 0092           ; {
 0092           ;     
 0092           ;     switch(Item)
 0092 40910000          lds R20,_Item
 0096 5527              clr R21
 0098 4030              cpi R20,0
 009A 4507              cpc R20,R21
 009C 29F0              breq L6
 009E           X0:
 009E 4130              cpi R20,1
 00A0 E0E0              ldi R30,0
 00A2 5E07              cpc R21,R30
 00A4 69F0              breq L8
 00A6 18C0              xjmp L3
 00A8           X1:
 00A8           ;     {
 00A8           L6:
 00A8           ;         case 0 :
 00A8           ;         {
 00A8           ;             #ifdef DynamicBar 
 00A8           ;                 Jump2Menu(MenuDataIndex,FlashMode_AutoInit);
 00A8           ;             #else 
 00A8           ;                 Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
 00A8 2227              clr R18
 00AA 80E0              ldi R24,<_FatherIndex-1
 00AC 90E0              ldi R25,>_FatherIndex-1
 00AE E0910000          lds R30,_Layer
 00B2 FF27              clr R31
 00B4 E80F              add R30,R24
 00B6 F91F              adc R31,R25
 00B8 0081              ldd R16,z+0
 00BA 0E940000          xcall _Jump2Menu
 00BE           ;             #endif 
 00BE           ;             
 00BE           ;             break ;
 00BE 17C0              xjmp L4
 00C0           L8:
 00C0           ;         }
 00C0           ;         case 1 :
 00C0           ;         {
 00C0           ;             Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
 00C0 2227              clr R18
 00C2 80E0              ldi R24,<_FatherIndex-1
 00C4 90E0              ldi R25,>_FatherIndex-1
 00C6 E0910000          lds R30,_Layer
 00CA FF27              clr R31
 00CC E80F              add R30,R24
 00CE F91F              adc R31,R25
 00D0 0081              ldd R16,z+0
 00D2 0E940000          xcall _Jump2Menu
 00D6           ;             break ;
 00D6 0BC0              xjmp L4
 00D8           L3:
 00D8           ;         }
 00D8           ;         default :
 00D8           ;         {
 00D8           ;             Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
 00D8 2227              clr R18
 00DA 80E0              ldi R24,<_FatherIndex-1
 00DC 90E0              ldi R25,>_FatherIndex-1
 00DE E0910000          lds R30,_Layer
 00E2 FF27              clr R31
 00E4 E80F              add R30,R24
 00E6 F91F              adc R31,R25
 00E8 0081              ldd R16,z+0
 00EA 0E940000          xcall _Jump2Menu
 00EE           ;             break ;
 00EE           L4:
 00EE           L2:
 00EE 0E940000          xcall pop_gset1
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
                        .even
 00F4           _DispMenuFuncDown::
 00F4           ;         }
 00F4           ;     }
 00F4           ;     
 00F4           ; }
 00F4           ; void DispMenuFuncDown()
 00F4           ; {
 00F4           ;     POP();
 00F4 0E940000          xcall _POP
 00F8           L11:
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
                        .even
 00FA           _DispMenuFuncLeft::
 00FA           ; }
 00FA           ; 
 00FA           ; void DispMenuFuncLeft()
 00FA           ; {
 00FA           ;     BarMenuLeft();
 00FA 0E940000          xcall _BarMenuLeft
 00FE           L12:
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
                        .even
 0100           _DispMenuFuncRight::
 0100           ; }
 0100           ; void DispMenuFuncRight()
 0100           ; {
 0100           ;     BarMenuRight();
 0100 0E940000          xcall _BarMenuRight
 0104           L13:
 0104                   .dbline 0 ; func end
 0104 0895              ret

⌨️ 快捷键说明

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