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 + -
显示快捷键?