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

📄 menu.lst

📁 通过车载终端采集GPS数据
💻 LST
字号:
C51 COMPILER V7.09   MENU                                                                  09/17/2008 16:36:38 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN .\output\menu.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE menu\menu.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gps\;inte
                    -r\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\menu.lst) OBJECT(.\output\menu.obj)

line level    source

   1          #include "typedef.h"
   2          #include "global.h"
   3          #include "menu.h"
   4          #include "menuinterface.h"
   5          #include "playsound.h"
   6          
   7          /************************MenuProcess()函数的说明*****************************/
   8          /*****MenuProcess()为菜单处理程序,main()函数中每隔一段时间对它进行调用,
   9          由每个菜单的处理程序pMenu->function获取按键值,处理程序的返回值为
  10          CHANGE_MENU, NEXT_MENU, PREVIEW_MENU, LEFT_MENU,RIGHT_MENU,
  11          MenuProcess()根据这些返回值来管理菜单,作出相应的操作*****************/
  12          
  13          /*******************************************
  14            pMenu->function返回值为CHANGE_MENU时,结构指针仍然指向自己,MenuProcess不操作
  15            pMenu->function返回值为NEXT_MENU时,NowMenuPtr指向son,处理下级菜单
  16            pMenu->function返回值为PREVIEW_MENU时,NowMenuPtr指向father,处理上级菜单
  17            pMenu->function返回值为RIGHT_MENU时,NowMenuPtr--,处理同级右菜单
  18            pMenu->function返回值为LEFT_MENU时,NowMenuPtr++,处理同级左菜单
  19          **********************************************/
  20          
  21          static MENU *pMenu;     /*当前菜单指针*/
  22          MENU_INFO menuInfo;
  23          
  24          void meunInit(MENU *pInitMenu, int holdTime, void *funcScroll, void *funcBackLight)
  25          {
  26   1      
  27   1          menuInfo.floorCnt = 0;
  28   1          pMenu = pInitMenu;
  29   1          menuInfo.Father[0] = pInitMenu;
  30   1      
  31   1          menuInfo.holdTime = holdTime;
  32   1          menuInfo.returnTimer = 0;
  33   1      
  34   1          menuInfo.ptrScroll = funcScroll;
  35   1          menuInfo.ptrBackLight = funcBackLight;
  36   1      
  37   1          (pMenu->function)(1);
  38   1      
  39   1          menuInfo.rebrushLcd = FLASH_SCREEN;
  40   1          menuInfo.MenuPopReturnFlag = 1;
  41   1      }
  42          
  43          MENU *menu_select(MENU *menuPtr, unsigned char index)
  44          {
  45   1          MENU *pTmp;
  46   1          unsigned char i;
  47   1      
  48   1          if( menuPtr == NULL )
  49   1              return menuPtr;
  50   1      
  51   1          pTmp = menuPtr;
  52   1          menuInfo.rebrushLcd = FLASH_SCREEN;
  53   1          while(pTmp->function != NULL)
  54   1          {
C51 COMPILER V7.09   MENU                                                                  09/17/2008 16:36:38 PAGE 2   

  55   2              pTmp --;
  56   2          }
  57   1      
  58   1          for(i=0; i<index; i++)
  59   1          {
  60   2              pTmp ++;
  61   2              if( pTmp->function == NULL )
  62   2                  break;
  63   2          }
  64   1      
  65   1          if( pTmp->function == NULL )
  66   1              return menuPtr;
  67   1          else
  68   1              return pTmp;
  69   1      }
  70          
  71          /*主程序调用的菜单处理指针*/
  72          void MenuProcess(void)
  73          {
  74   1          char status;
  75   1          MENU *pTmp;
  76   1      
  77   1          /*指针出错时,显示错误信息*/
  78   1          if( pMenu->function == NULL )
  79   1          {
  80   2              return;     /*xhb pMenu = menu_null;*/
  81   2          }
  82   1      
  83   1          /*显示滚动条*/
  84   1          if( (menuInfo.rebrushLcd == FLASH_SCREEN) && (menuInfo.ptrScroll != NULL) )
  85   1          {
  86   2              pTmp = pMenu - 1;
  87   2              if( (pTmp->function==NULL) || (pMenu->son==NULL) )
  88   2                  menuInfo.ptrScroll(0);
  89   2              else
  90   2                  menuInfo.ptrScroll(1);      /*向上标记*/
  91   2      
  92   2              pTmp = pMenu + 1;
  93   2              if( (pTmp->function==NULL) || (pMenu->son==NULL) )
  94   2                  menuInfo.ptrScroll(0);
  95   2              else
  96   2                  menuInfo.ptrScroll(2);      /*向下标记*/
  97   2          }
  98   1      
  99   1          /*按键菜单显示函数*/
 100   1          status = (pMenu->function)(menuInfo.rebrushLcd); /*执行菜单,返回按键值*/
 101   1      
 102   1          /*菜单层之间切换*/
 103   1          switch(status)
 104   1          {
 105   2              case NOKEY_MENU:             
 106   2              default:
 107   2                  menuInfo.rebrushLcd = KEEP_SCREEN;
 108   2      
 109   2                  menuInfo.returnTimer ++;
 110   2                  //背光处理
 111   2                  if (menuInfo.returnTimer >= 200)
 112   2                      menuInfo.ptrBackLight(0);
 113   2                  if( menuInfo.returnTimer >= menuInfo.holdTime )
 114   2                  {
 115   3                      menuInfo.returnTimer = 0;
 116   3       //               menuInfo.ptrBackLight(0);
C51 COMPILER V7.09   MENU                                                                  09/17/2008 16:36:38 PAGE 3   

 117   3      
 118   3                      if (0 == menuInfo.floorCnt)
 119   3      //                pMenu = menuInfo.Father[0];
 120   3                          menuInfo.rebrushLcd = FLASH_SCREEN;
 121   3                  }
 122   2                  break;
 123   2      
 124   2              case NOCHANGE_MENU:/*无操作*/
 125   2      /*            if( menuInfo.floorCnt == 0 )
 126   2                  {
 127   2                      menuInfo.returnTimer ++;
 128   2                      if( menuInfo.returnTimer >= menuInfo.holdTime )
 129   2                      {
 130   2                          menuInfo.returnTimer = 0;
 131   2                          menuInfo.ptrBackLight(0);
 132   2                      }
 133   2                  }
 134   2                  else
 135   2                      menuInfo.returnTimer = 0;*/
 136   2                  menuInfo.ptrBackLight(1);
 137   2                  menuInfo.returnTimer = 0;
 138   2      
 139   2                  menuInfo.rebrushLcd = KEEP_SCREEN;
 140   2                 // tts("msga", 4);//原有的按键音
 141   2                  play_littlespeaker(LITTLESPEAKER_KEY);
 142   2                  break;
 143   2                  
 144   2              case NEXT_MENU:/*enter*/
 145   2              case NEXT_MENU1:/*enter*/
 146   2              case NEXT_MENU2:/*enter*/
 147   2              case NEXT_MENU3:/*enter*/
 148   2              case NEXT_MENU4:/*enter*/
 149   2                  menuInfo.returnTimer = 0;
 150   2      
 151   2                  /*背光控制程序*/
 152   2                  if( menuInfo.ptrBackLight != NULL )
 153   2                  {
 154   3                      menuInfo.ptrBackLight(1);
 155   3                  }
 156   2                  
 157   2      
 158   2                  if(pMenu->son != NULL)
 159   2                  {
 160   3                      menuInfo.Father[menuInfo.floorCnt] = pMenu;
 161   3                      menuInfo.floorCnt ++;
 162   3      
 163   3                      if( status == NEXT_MENU2 )
 164   3                          pMenu = menu_select(pMenu->son, 2);
 165   3                      else if( status == NEXT_MENU3 )
 166   3                          pMenu = menu_select(pMenu->son, 3);
 167   3                      else if( status == NEXT_MENU4 )
 168   3                          pMenu = menu_select(pMenu->son, 4);
 169   3                      else
 170   3                          pMenu = menu_select(pMenu->son, 1);
 171   3      
 172   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 173   3                  }
 174   2          //        tts("msga", 4);//原有的按键音
 175   2                  play_littlespeaker(LITTLESPEAKER_KEY);
 176   2                  break;
 177   2      
 178   2          
C51 COMPILER V7.09   MENU                                                                  09/17/2008 16:36:38 PAGE 4   

 179   2              case PREVIEW_MENU:/*esc*/
 180   2                  menuInfo.returnTimer = 0;
 181   2      
 182   2                  /*背光控制程序*/
 183   2                  if( menuInfo.ptrBackLight != NULL )
 184   2                  {
 185   3                      menuInfo.ptrBackLight(1);
 186   3                  }
 187   2      
 188   2                  if( menuInfo.floorCnt > 0 )
 189   2                  {   
 190   3                      menuInfo.floorCnt --;
 191   3                      pMenu = menuInfo.Father[menuInfo.floorCnt];
 192   3                      menuInfo.MenuPopReturnFlag = 1;
 193   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 194   3                  }
 195   2             //     tts("msga", 4);//原有的按键音
 196   2                  play_littlespeaker(LITTLESPEAKER_KEY);
 197   2                  break;
 198   2          
 199   2              case LEFT_MENU:/*left/up*/
 200   2                  menuInfo.returnTimer = 0;
 201   2      
 202   2                  /*背光控制程序*/
 203   2                  if( menuInfo.ptrBackLight != NULL )
 204   2                  {
 205   3                      menuInfo.ptrBackLight(1);
 206   3                  }
 207   2      
 208   2                  pTmp = pMenu - 1;
 209   2                  if(pTmp->function != NULL)
 210   2                  {
 211   3                      pMenu = pTmp;
 212   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 213   3                  }
 214   2                //  tts("msga", 4);//原有的按键音
 215   2                  play_littlespeaker(LITTLESPEAKER_KEY);
 216   2                  break;
 217   2          
 218   2              case RIGHT_MENU:/*right/down*/
 219   2                  menuInfo.returnTimer = 0;
 220   2      
 221   2                  /*背光控制程序*/
 222   2                  if( menuInfo.ptrBackLight != NULL )
 223   2                  {
 224   3                      menuInfo.ptrBackLight(1);
 225   3                  }
 226   2      
 227   2                  pTmp = pMenu + 1;
 228   2                  if(pTmp->function != NULL)
 229   2                  {
 230   3                      pMenu = pTmp;
 231   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 232   3                  }
 233   2              //    tts("msga", 4);//原有的按键音
 234   2                  play_littlespeaker(LITTLESPEAKER_KEY);
 235   2                  break;
 236   2          }
 237   1      }
 238          
 239          /*弹出菜单程序处理*/
 240          void menuPopUp(MENU *pMenuPop)
C51 COMPILER V7.09   MENU                                                                  09/17/2008 16:36:38 PAGE 5   

 241          {
 242   1          if( menuInfo.MenuPopReturnFlag == 1 )
 243   1          {
 244   2              openLight();
 245   2              menuInfo.Father[menuInfo.floorCnt] = pMenu;
 246   2              menuInfo.floorCnt++;
 247   2      
 248   2              pMenu = pMenuPop;
 249   2              menuInfo.MenuPopReturnFlag = 0;
 250   2      
 251   2              (pMenu->function)(1);
 252   2          }
 253   1      }
 254          
 255          
 256          /********************************************
 257          *背光打开函数,在收到自动报站的时候被调用
 258          *********************************************/
 259          void openLight()
 260          {
 261   1          menuInfo.returnTimer = 0;
 262   1      
 263   1          /*背光控制程序*/
 264   1          if( menuInfo.ptrBackLight != NULL )
 265   1          {
 266   2              menuInfo.ptrBackLight(1);
 267   2          }
 268   1      }
 269          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1385    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     46      24
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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