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