menu.lis
来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 1,755 行 · 第 1/5 页
LIS
1,755 行
0826 _icos::
0826 0000 .word _function
0828 8001 .word _para
082A 8000 .word _action
082C 0001 .word _menu
082E 8002 .word _time
0830 0003 .word _question
0832 8003 .word _warning
0834 0004 .word _sound
.area text(rom, con, rel)
; FlashMode -> R18
; Index -> R16
.even
0000 _Jump2Menu::
0000 ; #include "SYS_Config.h"
0000 ; #include "Menu.H"
0000 ;
0000 ; #include "PIC.h"
0000 ; //图标
0000 ; /*
0000 ; ----------------------------------------------------------------------------
0000 ; 菜单相关变量
0000 ; ----------------------------------------------------------------------------
0000 ; */
0000 ; INT8U LessCPUUseage=TRUE;
0000 ;
0000 ; INT8U Flash = 0; //跳转进入子菜单 刷新标志 >1刷新
0000 ; INT8U language = EN; //语言标志
0000 ; INT8U KeyFuncIndex = 0; //索引
0000 ; //3个备份数组
0000 ; INT8U FatherIndex[MenuSize+1]; //父菜单备份数组
0000 ; INT8U Layer = 0; //菜单层数
0000 ;
0000 ; INT8U ItemBackup[MenuSize]; //当前菜单项备份
0000 ; INT8U ItemBackup_i = 0; //
0000 ;
0000 ; INT8U WhereBackup[MenuSize]; //反显位置备份
0000 ; INT8U WhereBackup_i = 0; //
0000 ;
0000 ;
0000 ; INT8U KeyPressCount = 0; //用于版本显示
0000 ;
0000 ; INT8U Item; //当前Bar项 范围:[0,ItemNum-1] 包括0 包括ItemNum-1 共包括ItemNum个取值
0000 ; INT8U ItemNum; //Bar项数
0000 ; INT8U Where; //当前反显位置,[0,DispMax-1] 反映反显的Bar在屏幕上的位置
0000 ; //INT8U DispMax = 3; //单屏可以显示的最大项 通常这是个固定值--因为你的液晶的大小决定了你一次可以显示的多少,你也可以在程序中修改,但记得维护它--因为所有的Bar型菜单都是要用到它的
0000 ; #define DispMax 3
0000 ;
0000 ; INT8U DispMin; //ItemNum和DispMax中的小者
0000 ; //当前Bar显示内容指针
0000 ;
0000 ; INT8U **DispItem; //项显示内容指针
0000 ;
0000 ; #ifdef DynamicBar
0000 ; INT8U BarDataMode = FixedData;
0000 ; INT8U ** DynamicBarDispItem; //动态项显示内容指针
0000 ; #endif
0000 ;
0000 ; //菜单资源指针
0000 ; const struct Menu * BarMenu;
0000 ; //Tip指针
0000 ; const struct Menu * TipBar;
0000 ;
0000 ; /*
0000 ; ----------------------------------------------------------------------------
0000 ; |---->指针对象存放地址,也就是{"Function"},{"Parameter"},{"Measure"},等等这些文本存放在哪里
0000 ; | |---->指针存放的位置,是这些字符的首地址应当存放在哪里 因为这是个指针数组存放的内容就是每个字符串的开始地址
0000 ; | |
0000 ; INT8U const * const TopItemEN[]=
0000 ; {
0000 ; {"Function"},
0000 ; {"Parameter"},
0000 ; {"Measure"},
0000 ; {"Language"},
0000 ; {"Test"},
0000 ; };
0000 ; 我们均把这些存放在代码区,以减少对RAM的占用
0000 ;
0000 ; ----------------------------------------------------------------------------
0000 ; */
0000 ;
0000 ;
0000 ; //---------------------------------------------------
0000 ; //各个菜单的资源
0000 ; //命名方式是:
0000 ; //---------------------------------------------------
0000 ; //顶层菜单
0000 ;
0000 ; //INT8U const * const TopItemCN[]=
0000 ; INT8U * TopItemCN[]=
0000 ; {
0000 ; {"功能"},
0000 ; {"参数"},
0000 ; {"测量"},
0000 ; {"语言"},
0000 ; {"设置"},
0000 ; };
0000 ;
0000 ;
0000 ; //INT8U const * const TopItemEN[]=
0000 ; INT8U * TopItemEN[]=
0000 ; {
0000 ; {"Function"},
0000 ; {"Parameter"},
0000 ; {"Measure"},
0000 ; {"Language"},
0000 ; {"Settings"},
0000 ; };
0000 ;
0000 ;
0000 ; //"功能"菜单项的内容和长度
0000 ;
0000 ; //INT8U const * const FuncItemCN[]=
0000 ; INT8U * FuncItemCN[]=
0000 ; {
0000 ; {"读出数据"},
0000 ; {"背光控制"},
0000 ; {"出厂设置"},
0000 ; {"修改密码"},
0000 ; };
0000 ;
0000 ; //INT8U const * const FuncItemEN[]=
0000 ; INT8U * FuncItemEN[]=
0000 ; {
0000 ; {"Read Data"},
0000 ; {"BackLight"},
0000 ; {"Factory Set"},
0000 ; {"Change CODE"}
0000 ; };
0000 ; //"参数"菜单项的内容和长度
0000 ;
0000 ; //INT8U const * const ParaItemCN[]=
0000 ; INT8U * ParaItemCN[]=
0000 ; {
0000 ; {"阈值"},
0000 ; {"时间T"},
0000 ; {"灵敏度K"},
0000 ; {"测量时间"}
0000 ; };
0000 ;
0000 ; //INT8U const * const ParaItemEN[]=
0000 ; INT8U * ParaItemEN[]=
0000 ; {
0000 ; {"Menu0"},
0000 ; {"Menu1"},
0000 ; {"Menu2"},
0000 ; {"Menu3"},
0000 ; {"Menu4"},
0000 ; {"Menu5"},
0000 ; {"Menu6"},
0000 ; {"Menu7"},
0000 ; };
0000 ; //"语言"菜单项的内容和长度
0000 ;
0000 ; //INT8U const * const LanguageItemCN[]=
0000 ; INT8U * LanguageItemCN[]=
0000 ; {
0000 ; {"中文"},
0000 ; {"English"},
0000 ; };
0000 ;
0000 ; //INT8U const * const LanguageItemEN[]=
0000 ; //INT8U * LanguageItemEN[]=
0000 ; //{
0000 ; //{"中文"},
0000 ; //{"English"},
0000 ; //};
0000 ;
0000 ; //测量
0000 ; //INT8U const * const MeasureItemCN[]=
0000 ; INT8U * MeasureItemCN[]=
0000 ; {
0000 ; {"测试1"},
0000 ; {"测试2"},
0000 ; {"测试3"},
0000 ; {"测试4"},
0000 ; {"测试5"},
0000 ; {"测试6"},
0000 ; {"测试7"},
0000 ; };
0000 ;
0000 ; //INT8U const * const MeasureItemEN[]=
0000 ; INT8U * MeasureItemEN[]=
0000 ; {
0000 ; {"PushUp Res"},
0000 ; {"ClearErrCount"},
0000 ; {"OnlineCMD"},
0000 ; {"SysInputTest"},
0000 ; {"SVC TEST"},
0000 ; {"AXis TEST"},
0000 ; {"Relay TEST"},
0000 ; };
0000 ;
0000 ; //设置
0000 ; //INT8U const * const MeasureItemCN[]=
0000 ; INT8U * SetupItemCN[]=
0000 ; {
0000 ; {"时钟设置"},
0000 ; {"设置2"},
0000 ; {"设置3"},
0000 ; {"设置4"},
0000 ; {"设置5"},
0000 ; {"设置6"},
0000 ; };
0000 ;
0000 ; //INT8U const * const MeasureItemEN[]=
0000 ; INT8U * SetupItemEN[]=
0000 ; {
0000 ; {"Time settings"},
0000 ; {"setup 2"},
0000 ; {"setup 3"},
0000 ; {"setup 4"},
0000 ; {"setup 5"},
0000 ; {"setup 6"},
0000 ; };
0000 ;
0000 ;
0000 ; //提示键的文本
0000 ; //INT8U const * const TipCN[]=
0000 ; INT8U * TipCN[]=
0000 ; {
0000 ; {"功能表"},
0000 ; {"选择"},
0000 ; {"确认"},
0000 ; {"取消"},
0000 ; {"退出"},
0000 ; {"捷径"},
0000 ; };
0000 ;
0000 ;
0000 ;
0000 ; //INT8U const * const TipEN[]=
0000 ; INT8U * TipEN[]=
0000 ; {
0000 ; {"Menu"},
0000 ; {"Select"},
0000 ; {"OK"},
0000 ; {"Cancel"},
0000 ; {"Exit"},
0000 ; {"Goto"},
0000 ; };
0000 ;
0000 ; //----------------------------------------
0000 ; //宏定义:
0000 ; #define MenuWhat(n) {(INT8U **)n,(sizeof(n)/sizeof(INT8U *)),0}
0000 ;
0000 ; //图标层
0000 ; const struct Menu IcoMenu[] =
0000 ; {
0000 ; MenuWhat(TopItemCN),
0000 ; MenuWhat(TopItemEN),
0000 ; };
0000 ;
0000 ; //功能菜单
0000 ; const struct Menu MenuFunc[] =
0000 ; {
0000 ; MenuWhat(FuncItemCN),
0000 ; MenuWhat(FuncItemEN),
0000 ; };
0000 ;
0000 ; //参数菜单
0000 ; const struct Menu MenuPara[] =
0000 ; {
0000 ; MenuWhat(ParaItemCN),
0000 ; MenuWhat(ParaItemEN),
0000 ; };
0000 ;
0000 ; //测量菜单
0000 ; const struct Menu MenuMeasure[] =
0000 ; {
0000 ; MenuWhat(MeasureItemCN),
0000 ; MenuWhat(MeasureItemEN),
0000 ; };
0000 ;
0000 ; //语言菜单
0000 ; const struct Menu MenuLanguage[] =
0000 ; {
0000 ; MenuWhat(LanguageItemCN),
0000 ; MenuWhat(LanguageItemCN),
0000 ; };
0000 ;
0000 ; //设置菜单
0000 ; const struct Menu MenuSetup[] =
0000 ; {
0000 ; MenuWhat(SetupItemCN),
0000 ; MenuWhat(SetupItemEN),
0000 ; };
0000 ;
0000 ; //Tip
0000 ; const struct Menu Tip[] =
0000 ; {
0000 ; MenuWhat(TipCN),
0000 ; MenuWhat(TipEN),
0000 ; //{(INT8U **)TipCN,5,0},
0000 ; //{(INT8U **)TipEN,5,0}
0000 ; };
0000 ;
0000 ;
0000 ; //更改密码时询问的图标索引号
0000 ; #define WarningICO 5
0000 ; #define PassICO 0
0000 ; //图标索引
0000 ; const INT8U * const icos[]=
0000 ; {
0000 ; function, //功能
0000 ; para, //参数
0000 ; action, //测量
0000 ; menu, //语言
0000 ; time, //时钟
0000 ; question, //询问
0000 ; warning,
0000 ; sound,
0000 ; };
0000 ;
0000 ; void Jump2Menu(INT8U Index,INT8U FlashMode)
0000 ; {
0000 ; KeyFuncIndex = Index; //jump to Menu index
0000 00930300 sts _KeyFuncIndex,R16
0004 ; if(FlashMode)
0004 2223 tst R18
0006 11F0 breq L72
0008 ; {
0008 ; Flash = FlashMode;
0008 20930100 sts _Flash,R18
000C ; }
000C L72:
000C L71:
000C .dbline 0 ; func end
000C 0895 ret
.area bss(ram, con, rel)
0000 _TipBar::
0000 .blkb 2
0002 _BarMenu::
0002 .blkb 2
0004 _DispItem::
0004 .blkb 2
0006 _DispMin::
0006 .blkb 1
0007 _Where::
0007 .blkb 1
0008 _ItemNum::
0008 .blkb 1
0009 _Item::
0009 .blkb 1
000A _WhereBackup::
000A .blkb 5
000F _ItemBackup::
000F .blkb 5
0014 _FatherIndex::
0014 .blkb 6
.area data(ram,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?