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

📄 avr.lst

📁 Atmega64单片机程序(完整工程)
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0063) 			}
(0064) 		}
(0065)     }
(0066) 	if( (Keyvalue==Keyvalue_first)&&(Keyvalue==Keyvalue_second) )
    100D 902008DA  LDS	R2,Keyvalue_first
    100F 90300193  LDS	R3,Keyvalue
    1011 1432      CP	R3,R2
    1012 F461      BNE	0x101F
    1013 902008D9  LDS	R2,Keyvalue_second
    1015 1432      CP	R3,R2
    1016 F441      BNE	0x101F
(0067) 	{//如果长时间按,则Key_time累加,程序判断Key_time大于某个值就知道长时间按了
(0068) 		if(Key_time<255)
    1017 91800196  LDS	R24,Key_time
    1019 3F8F      CPI	R24,0xFF
    101A F438      BCC	0x1022
(0069) 		    Key_time++;
    101B 5F8F      SUBI	R24,0xFF
    101C 93800196  STS	Key_time,R24
(0070) 	}
    101E C003      RJMP	0x1022
(0071) 	else
(0072) 	{
(0073) 	    Key_time=0;
    101F 2422      CLR	R2
    1020 92200196  STS	Key_time,R2
(0074) 	}
    1022 9029      LD	R2,Y+
    1023 BE2F      OUT	0x3F,R2
    1024 91E9      LD	R30,Y+
    1025 9199      LD	R25,Y+
    1026 9189      LD	R24,Y+
    1027 9119      LD	R17,Y+
    1028 9109      LD	R16,Y+
    1029 9039      LD	R3,Y+
    102A 9029      LD	R2,Y+
    102B 9518      RETI
FILE: E:\电子制作\FAT_SD_MENU\MENU\Menu.C
(0001) #include "SYS_Config.h"
(0002) #include "Menu.H"
(0003) 
(0004) #include "PIC.h"
(0005) //图标
(0006) /*
(0007) ----------------------------------------------------------------------------
(0008) 菜单相关变量
(0009) ----------------------------------------------------------------------------
(0010) */
(0011) INT8U LessCPUUseage=TRUE;
(0012) 
(0013) INT8U Flash = 0;                 //跳转进入子菜单 刷新标志  >1刷新
(0014) INT8U language = EN;             //语言标志
(0015) INT8U KeyFuncIndex = 0;          //索引
(0016) //3个备份数组
(0017) INT8U FatherIndex[MenuSize+1];   //父菜单备份数组
(0018) INT8U Layer = 0;                 //菜单层数
(0019) 
(0020) INT8U ItemBackup[MenuSize];      //当前菜单项备份
(0021) INT8U ItemBackup_i = 0;          //
(0022) 
(0023) INT8U WhereBackup[MenuSize];     //反显位置备份
(0024) INT8U WhereBackup_i = 0;         //
(0025) 
(0026) 
(0027) INT8U KeyPressCount = 0;         //用于版本显示
(0028) 
(0029) INT8U Item;              //当前Bar项  范围:[0,ItemNum-1]  包括0 包括ItemNum-1  共包括ItemNum个取值
(0030) INT8U ItemNum;           //Bar项数
(0031) INT8U Where;             //当前反显位置,[0,DispMax-1]  反映反显的Bar在屏幕上的位置
(0032) //INT8U DispMax = 3;     //单屏可以显示的最大项 通常这是个固定值--因为你的液晶的大小决定了你一次可以显示的多少,你也可以在程序中修改,但记得维护它--因为所有的Bar型菜单都是要用到它的
(0033) #define DispMax  3
(0034) 
(0035) INT8U DispMin;         //ItemNum和DispMax中的小者
(0036) //当前Bar显示内容指针
(0037) 
(0038) INT8U **DispItem; //项显示内容指针
(0039) 
(0040) #ifdef DynamicBar
(0041)    INT8U BarDataMode = FixedData;
(0042)    INT8U ** DynamicBarDispItem; //动态项显示内容指针
(0043) #endif
(0044) 
(0045) //菜单资源指针
(0046) const struct Menu * BarMenu;
(0047) //Tip指针
(0048) const struct Menu * TipBar;
(0049) 
(0050) /*
(0051) ----------------------------------------------------------------------------
(0052)       |---->指针对象存放地址,也就是{"Function"},{"Parameter"},{"Measure"},等等这些文本存放在哪里
(0053)       |         |---->指针存放的位置,是这些字符的首地址应当存放在哪里  因为这是个指针数组存放的内容就是每个字符串的开始地址
(0054)       |         |
(0055) INT8U const * const TopItemEN[]=
(0056) {
(0057) {"Function"},
(0058) {"Parameter"},
(0059) {"Measure"},
(0060) {"Language"},
(0061) {"Test"},
(0062) };
(0063) 我们均把这些存放在代码区,以减少对RAM的占用
(0064) 
(0065) ----------------------------------------------------------------------------
(0066) */
(0067) 
(0068) 
(0069) //---------------------------------------------------
(0070) //各个菜单的资源
(0071) //命名方式是:
(0072) //---------------------------------------------------
(0073) //顶层菜单
(0074) 
(0075) //INT8U const * const TopItemCN[]=
(0076) INT8U * TopItemCN[]=
(0077) {
(0078) {"功能"},
(0079) {"参数"},
(0080) {"测量"},
(0081) {"语言"},
(0082) {"设置"},
(0083) };
(0084) 
(0085) 
(0086) //INT8U const * const TopItemEN[]=
(0087) INT8U * TopItemEN[]=
(0088) {
(0089) {"Function"},
(0090) {"Parameter"},
(0091) {"Measure"},
(0092) {"Language"},
(0093) {"Settings"},
(0094) };
(0095) 
(0096) 
(0097) //"功能"菜单项的内容和长度
(0098) 
(0099) //INT8U const * const FuncItemCN[]=
(0100) INT8U * FuncItemCN[]=
(0101) {
(0102) {"读出数据"},
(0103) {"背光控制"},
(0104) {"出厂设置"},
(0105) {"修改密码"},
(0106) };
(0107) 
(0108) //INT8U const * const FuncItemEN[]=
(0109) INT8U * FuncItemEN[]=
(0110) {
(0111) {"Read Data"},
(0112) {"BackLight"},
(0113) {"Factory Set"},
(0114) {"Change CODE"}
(0115) };
(0116) //"参数"菜单项的内容和长度
(0117) 
(0118) //INT8U const * const ParaItemCN[]=
(0119) INT8U * ParaItemCN[]=
(0120) {
(0121) {"阈值"},
(0122) {"时间T"},
(0123) {"灵敏度K"},
(0124) {"测量时间"}
(0125) };
(0126) 
(0127) //INT8U const * const ParaItemEN[]=
(0128) INT8U * ParaItemEN[]=
(0129) {
(0130) {"Menu0"},
(0131) {"Menu1"},
(0132) {"Menu2"},
(0133) {"Menu3"},
(0134) {"Menu4"},
(0135) {"Menu5"},
(0136) {"Menu6"},
(0137) {"Menu7"},
(0138) };
(0139) //"语言"菜单项的内容和长度
(0140) 
(0141) //INT8U const * const LanguageItemCN[]=
(0142) INT8U * LanguageItemCN[]=
(0143) {
(0144) {"中文"},
(0145) {"English"},
(0146) };
(0147) 
(0148) //INT8U const * const LanguageItemEN[]=
(0149) //INT8U * LanguageItemEN[]=
(0150) //{
(0151) //{"中文"},
(0152) //{"English"},
(0153) //};
(0154) 
(0155) //测量
(0156) //INT8U const * const MeasureItemCN[]=
(0157) INT8U * MeasureItemCN[]=
(0158) {
(0159) {"测试1"},
(0160) {"测试2"},
(0161) {"测试3"},
(0162) {"测试4"},
(0163) {"测试5"},
(0164) {"测试6"},
(0165) {"测试7"},
(0166) };
(0167) 
(0168) //INT8U const * const MeasureItemEN[]=
(0169) INT8U * MeasureItemEN[]=
(0170) {
(0171) {"PushUp Res"},
(0172) {"ClearErrCount"},
(0173) {"OnlineCMD"},
(0174) {"SysInputTest"},
(0175) {"SVC TEST"},
(0176) {"AXis TEST"},
(0177) {"Relay TEST"},
(0178) };
(0179) 
(0180) //设置
(0181) //INT8U const * const MeasureItemCN[]=
(0182) INT8U * SetupItemCN[]=
(0183) {
(0184) {"时钟设置"},
(0185) {"设置2"},
(0186) {"设置3"},
(0187) {"设置4"},
(0188) {"设置5"},
(0189) {"设置6"},
(0190) };
(0191) 
(0192) //INT8U const * const MeasureItemEN[]=
(0193) INT8U * SetupItemEN[]=
(0194) {
(0195) {"Time settings"},
(0196) {"setup 2"},
(0197) {"setup 3"},
(0198) {"setup 4"},
(0199) {"setup 5"},
(0200) {"setup 6"},
(0201) };
(0202) 
(0203) 
(0204) //提示键的文本
(0205) //INT8U const * const TipCN[]=
(0206) INT8U * TipCN[]=
(0207) {
(0208) {"功能表"},
(0209) {"选择"},
(0210) {"确认"},
(0211) {"取消"},
(0212) {"退出"},
(0213) {"捷径"},
(0214) };
(0215) 
(0216) 
(0217) 
(0218) //INT8U const * const TipEN[]=
(0219) INT8U * TipEN[]=
(0220) {
(0221) {"Menu"},
(0222) {"Select"},
(0223) {"OK"},
(0224) {"Cancel"},
(0225) {"Exit"},
(0226) {"Goto"},
(0227) };
(0228) 
(0229) //----------------------------------------
(0230) //宏定义:
(0231) #define MenuWhat(n) {(INT8U **)n,(sizeof(n)/sizeof(INT8U *)),0}
(0232) 
(0233) //图标层
(0234) const struct Menu IcoMenu[] =
(0235) {
(0236) MenuWhat(TopItemCN),
(0237) MenuWhat(TopItemEN),
(0238) };
(0239) 
(0240) //功能菜单
(0241) const struct Menu MenuFunc[] =
(0242) {
(0243) MenuWhat(FuncItemCN),
(0244) MenuWhat(FuncItemEN),
(0245) };
(0246) 
(0247) //参数菜单
(0248) const struct Menu MenuPara[] =
(0249) {
(0250) MenuWhat(ParaItemCN),
(0251) MenuWhat(ParaItemEN),
(0252) };
(0253) 
(0254) //测量菜单
(0255) const struct Menu MenuMeasure[] =
(0256) {
(0257) MenuWhat(MeasureItemCN),
(0258) MenuWhat(MeasureItemEN),
(0259) };
(0260) 
(0261) //语言菜单
(0262) const struct Menu MenuLanguage[] =
(0263) {
(0264) MenuWhat(LanguageItemCN),
(0265) MenuWhat(LanguageItemCN),
(0266) };
(0267) 
(0268) //设置菜单
(0269) const struct Menu MenuSetup[] =
(0270) {
(0271) MenuWhat(SetupItemCN),
(0272) MenuWhat(SetupItemEN),
(0273) };
(0274) 
(0275) //Tip
(0276) const struct Menu Tip[] =
(0277) {
(0278) MenuWhat(TipCN),
(0279) MenuWhat(TipEN),
(0280) //{(INT8U **)TipCN,5,0},
(0281) //{(INT8U **)TipEN,5,0}
(0282) };
(0283) 
(0284) 
(0285) //更改密码时询问的图标索引号
(0286) #define WarningICO  5
(0287) #define PassICO     0
(0288) //图标索引
(0289) const INT8U  * const icos[]=
(0290) {
(0291)    function,   //功能
(0292)    para,       //参数
(0293)    action,     //测量
(0294)    menu,       //语言
(0295)    time,       //时钟
(0296)    question,   //询问
(0297)    warning,
(0298)    sound,
(0299) };
(0300) 
(0301) void Jump2Menu(INT8U Index,INT8U FlashMode)
(0302) {
(0303)     KeyFuncIndex = Index;             //jump to Menu index
_Jump2Menu:
  FlashMode            --> R18
  Index                --> R16
    102C 9300019A  STS	KeyFuncIndex,R16
(0304)     if(FlashMode)
    102E 2322      TST	R18
    102F F011      BEQ	0x1032
(0305) 	{
(0306)         Flash = FlashMode;
    1030 93200198  STS	Flash,R18
(0307)     }
    1032 9508      RET
_CheckKey:
  IsKey                --> R20
    1033 940E43BB  CALL	push_gset2
FILE: E:\电子制作\FAT_SD_MENU\MENU\MenuFSM.C
(0001) /*这份代码经源码格式软件格式化过
(0002)      yang_hx@neusoft.com      */
(0003) /******************************************************************************
(0004)  * MenuFSM.C - 菜单框架和FSM代码
(0005)  ******************************************************************************/
(0006) 
(0007) #include "SYS_Config.h" 
(0008) #include "KeyScan.H" 
(0009) #include "LcdDrive.H" 
(0010) #include "Menu.H" 
(0011) 
(0012) //FIXME!
(0013) //改进想法:如何在菜单中可以接管其它有效按键,这里程序仅仅接管了方向按键,若能根据1--9这些数字按键跳转也是不错
(0014) //额外的问题是如何在应用程序中得到按键而却不需要在应用程序中做键盘检查循环(抢占CPU时间了,会使得原有可以在背景运行的程序无法执行)
(0015) /*
(0016) *   A>改进FSM编号的机制,使得维护更简单,能否自动编号?这样会使得添加FSM表容易
(0017) *   B>
(0018) */
(0019) //-----------------------------------
(0020) //MenuTop.C
(0021) void DispMenuTop(void);
(0022) void DispMenuTopUp(void);
(0023) void DispMenuTopDown(void);
(0024) void DispMenuTopLeft(void);
(0025) void DispMenuTopRight(void);
(0026) 
(0027) void DispIcoMenuInit(void);
(0028) void DispIcoMenuUp(void);
(0029) void DispIcoMenuDown(void);
(0030) void DispIcoMenuLeft(void);

⌨️ 快捷键说明

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