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

📄 menu.lst

📁 一个以前开发的实际应用的交通灯控制器程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN Menu.obj
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE IIC[Ultral]\Menu.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Menu.lst) OBJECT(Menu.
                    -obj)

line level    source

   1          #include "iic.h"
   2          
   3          ///////////菜单管理体系/////////////////////////////////////////////////////
   4          char* GetSubMenuHead(unsigned int id)
   5          {//查找该菜单下子菜单的头指针
   6   1      //输入:菜单ID
   7   1      //返回:菜单的下一级子菜单的指针,否则返回SNULL
   8   1              unsigned char *t;
   9   1              unsigned char xdata i;
  10   1      
  11   1              switch(id)
  12   1              {
  13   2                      case 0x0000:
  14   2                              if(!DeskTopFlag)//
  15   2                                      t=DeskMenuData;//桌面
*** ERROR C202 IN LINE 15 OF IIC[ULTRAL]\MENU.C: 'DeskMenuData': undefined identifier
  16   2                              else
  17   2                              {
  18   3                                      ShowDesk();
  19   3                                      t=SNULL;
  20   3                              }
  21   2                              break;
  22   2                      case 0x0001://
  23   2                      case 0x0002:
  24   2                              t=ShiDuanMenuData;//时段:2
*** ERROR C202 IN LINE 24 OF IIC[ULTRAL]\MENU.C: 'ShiDuanMenuData': undefined identifier
  25   2                              break;
  26   2                      case 0x0011:case 0x0021:case 0x0031:case 0x0041:case 0x0051:case 0x0061:
  27   2                      case 0x0071:case 0x0081:case 0x0091:case 0x00a1:case 0x00b1:case 0x00c1:
  28   2                      case 0x0012:case 0x0022:case 0x0032:case 0x0042:case 0x0052:case 0x0062:
  29   2                      case 0x0072:case 0x0082:case 0x0092:case 0x00a2:case 0x00b2:case 0x00c2:
  30   2                              t=XiangZuMenuData;//相组:2*12
*** ERROR C202 IN LINE 30 OF IIC[ULTRAL]\MENU.C: 'XiangZuMenuData': undefined identifier
  31   2                              break;
  32   2                      case 0x00d1:
  33   2                      case 0x00d2:
  34   2                              t=XiangZuMenuData2;//相组2:2
*** ERROR C202 IN LINE 34 OF IIC[ULTRAL]\MENU.C: 'XiangZuMenuData2': undefined identifier
  35   2                              break;
  36   2                      //case **://相位
  37   2                      //      break;//太多了,另行处理
  38   2                      case 0x0003://
  39   2                              t=XitongMenuData;//系统
*** ERROR C202 IN LINE 39 OF IIC[ULTRAL]\MENU.C: 'XitongMenuData': undefined identifier
  40   2                              break;
  41   2                      case 0x0004:
  42   2                              t=ShouDongMenuData;//手动
*** ERROR C202 IN LINE 42 OF IIC[ULTRAL]\MENU.C: 'ShouDongMenuData': undefined identifier
  43   2                              break;
  44   2                      case 0x0005:
  45   2                              t=LvSeMenuData;//绿色
*** ERROR C202 IN LINE 45 OF IIC[ULTRAL]\MENU.C: 'LvSeMenuData': undefined identifier
  46   2                              break;
  47   2                      default:
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 2   

  48   2                              MenuItemCnt=0;//没有子项
  49   2                              t=SNULL;//已经到达叶子菜单
  50   2              }
  51   1              
  52   1              if((t==SNULL)&&(id!=0))
  53   1              {//特殊的处理:相位
  54   2                      if(((id & 0x000f)<=0x0002)&&((id & 0x000f)>=0x0001))
  55   2                      {       
  56   3                              if(((id&0x00f0)<=0x00c0)&&((id & 0x00f0)>=0x0010))
  57   3                              {
  58   4                                      if(((id&0x0f00)<=0x0800)&&((id & 0x0f00)>=0x0100))
  59   4                                              t=XiangWeiMenuData;
*** ERROR C202 IN LINE 59 OF IIC[ULTRAL]\MENU.C: 'XiangWeiMenuData': undefined identifier
  60   4                              }
  61   3                      }
  62   2              }
  63   1              
  64   1              if(t==SNULL)
  65   1              {
  66   2                      MenuItemCnt=0;
  67   2                      return;         
  68   2              }
  69   1              
  70   1              //生成子项数目
  71   1              i=0;
  72   1              MenuItemCnt=1;
  73   1              while(*(t+i)!=NULL)
  74   1              {
  75   2                      if(*(t+i)=='\n')
  76   2                              MenuItemCnt+=1;
  77   2                      i++;
  78   2              }
  79   1              return t;
  80   1      }
  81          
  82          void ShowMenu()
  83          {
  84   1              //默认显示MenuID子菜单的内容
  85   1              unsigned char *Head;
  86   1              unsigned char xdata i,k;
  87   1              unsigned char xdata ch1,ch2;
  88   1      //      WriteCmd(0x02);//地址归位
  89   1              LcdInit();
  90   1              
  91   1              Head=GetSubMenuHead(MenuID);
  92   1              if(Head==SNULL)//叶子
  93   1                      return;
  94   1              if(MenuPos>=MenuItemCnt)
  95   1                      MenuPos=0;
  96   1              
  97   1              i=0;
  98   1              k=0;
  99   1              while(k<MenuPos)
 100   1              {//寻找到开始的菜单
 101   2                      if(*(Head+i)==NULL)
 102   2                              break;//不可能出现?
 103   2      
 104   2                      if((*(Head+i) == '\n'))//&&(*(Head+i)!=NULL))
 105   2                      {
 106   3                              i+=1;
 107   3                              k++;
 108   3                              continue;
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 3   

 109   3                      }
 110   2                      else
 111   2                      {
 112   3                              i+=2;
 113   3                      }
 114   2              }
 115   1              Head=Head+i;//第一个显示的菜单
 116   1              i=0;//行
 117   1      //      i=0;
 118   1              k=0;//列
 119   1              while(i<4)
 120   1              {
 121   2                      k++;
 122   2                      ch1=*Head;
 123   2                      ch2=*(Head+1);
 124   2                      Head+=2;
 125   2                      LcdCN(i,k,ch1,ch2);
 126   2                      if(*Head == NULL)
 127   2                      {
 128   3                              i+=1;
 129   3                              break;//跳出
 130   3                      }
 131   2                      else if(*Head == '\n')
 132   2                      {//换行
 133   3                              i+=1;//
 134   3                              k=0;
 135   3                              Head+=1;
 136   3                      }
 137   2              }
 138   1      
 139   1              while(i<4)//清空其它 
 140   1              {
 141   2                      for(k=1;k<8;k++)
 142   2                              LcdCN(i,k,0xa1,0xa0);
 143   2                      i++;
 144   2              }
 145   1      
 146   1              if(ChosenPos!=NOCHOICE)
 147   1              {
 148   2                      LcdChar(0,0,0x20);
 149   2                      LcdChar(1,0,0x20);
 150   2                      LcdChar(2,0,0x20);
 151   2                      LcdChar(3,0,0x20);
 152   2                      LcdChar(ChosenPos,0,CHOSEN_CH);
 153   2              }
 154   1      
 155   1      }
 156          
 157          void OnArrowUp()
 158          {
 159   1              //只移动标记即可
 160   1              if(ChosenPos==NOCHOICE)
 161   1                      return;
 162   1              
 163   1              if(ChosenPos==0)
 164   1              {
 165   2                      if(MenuPos>0)
 166   2                              MenuPos-=1;
 167   2                      ShowMenu();
 168   2                      return;
 169   2              }
 170   1              else
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 4   

 171   1              {
 172   2                      LcdChar(ChosenPos,0,0x20);
 173   2                      ChosenPos-=1;
 174   2                      LcdChar(ChosenPos,0,CHOSEN_CH);
 175   2                      return;
 176   2              }
 177   1      }
 178          
 179          void OnArrowDown()
 180          {
 181   1              //只移动标记即可
 182   1              if(ChosenPos==NOCHOICE)
 183   1                      return;
 184   1              
 185   1              if(ChosenPos==3)
 186   1              {
 187   2                      if((MenuPos<MenuItemCnt-4)&&(MenuItemCnt>4))
 188   2                              MenuPos+=1;
 189   2                      ShowMenu();
 190   2                      return;
 191   2              }
 192   1              else
 193   1              {
 194   2                      LcdChar(ChosenPos,0,0x20);
 195   2                      ChosenPos+=1;
 196   2                      LcdChar(ChosenPos,0,CHOSEN_CH);
 197   2                      return;
 198   2              }
 199   1      }
 200          
 201          void OnCancel()
 202          {
 203   1              //确定父菜单
 204   1              if(MenuID & 0xf000)
 205   1                      MenuID &= 0x0fff;
 206   1              else if(MenuID & 0x0f00)
 207   1                      MenuID &= 0x00ff;
 208   1              else if(MenuID & 0x00f0)
 209   1                      MenuID &= 0x000f;
 210   1              else
 211   1                      MenuID = 0x0000;//
 212   1      
 213   1              MenuPos=0;
 214   1              ChosenPos=0;//kf
 215   1              ShowMenu();
 216   1      }
 217          
 218          void OnEnter()
 219          {
 220   1              unsigned char *Head;
 221   1              unsigned int xdata t;
 222   1              unsigned char xdata i;
 223   1              //产生新的ID
 224   1              t=0x000f;
 225   1              for(i=0;i<3;i++)
 226   1              {
 227   2                      if((MenuID&t)==0)
 228   2                      {
 229   3                              t=(unsigned int)(MenuPos+ChosenPos+1);
 230   3                              if(t<=MenuItemCnt)//不能产生没有的ID
 231   3                                      MenuID+=t;
 232   3                              break;
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 5   

 233   3                      }
 234   2                      t<<=4;
 235   2              }
 236   1              //非叶子菜单显示新的菜单
 237   1              Head=GetSubMenuHead(MenuID);
 238   1              if(Head!=SNULL)
 239   1              {
 240   2                      MenuPos=0;
 241   2                      ChosenPos=0;
 242   2                      ShowMenu();
 243   2              }
 244   1              else
 245   1                      SwitchMenuEntry();//跳转的处理入口
 246   1      }
 247          
 248          void OnMenuKey()
 249          {
 250   1              unsigned char xdata i;
 251   1              if(PswLock)//锁定要求输入密码
*** ERROR C202 IN LINE 251 OF IIC[ULTRAL]\MENU.C: 'PswLock': undefined identifier
 252   1              {
 253   2                      LcdInit();
 254   2                      LcdCnString(1,1,"输入密码");
 255   2                      GetPassword(2,2);//返回值在AppBuf[]中
 256   2                      i=EPR_Read(ADDR_PASSWORD);
 257   2                      if(AppBuf[0]==i)
*** ERROR C202 IN LINE 257 OF IIC[ULTRAL]\MENU.C: 'AppBuf': undefined identifier
 258   2                      {
 259   3                              i=EPR_Read(ADDR_PASSWORD-1);
 260   3                              if(i==AppBuf[1])
*** ERROR C202 IN LINE 260 OF IIC[ULTRAL]\MENU.C: 'AppBuf': undefined identifier
 261   3                              {
 262   4                                      PswLock=0;
*** ERROR C202 IN LINE 262 OF IIC[ULTRAL]\MENU.C: 'PswLock': undefined identifier
 263   4                                      MenuID=0x0000;
 264   4                                      MenuPos=0;
 265   4                                      ChosenPos=0;
 266   4                                      DeskTopFlag=0;//
 267   4                                      ShowMenu();
 268   4                              }
 269   3                              else

⌨️ 快捷键说明

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