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

📄 menu.lst

📁 pdh控制程序
💻 LST
字号:
C51 COMPILER V7.20   MENU                                                                  02/20/2006 10:13:58 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN .\output\menu.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE menu.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\menu.lst) OBJECT(.\
                    -output\menu.obj)

line level    source

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

  55   1          {
  56   2              menuInfo.ptrBackLight( &(menuInfo.menuBack) );
  57   2          }
  58   1      
  59   1          /*显示滚动条*/
  60   1          if( (menuInfo.rebrushLcd == FLASH_SCREEN) && (menuInfo.ptrScroll != NULL) )
  61   1          {
  62   2              pTmp = pMenu - 1;
  63   2              if( pTmp->function == NULL )
  64   2                  menuInfo.ptrScroll(SCROL_FIRST_ROW_NULL);
  65   2              else
  66   2                  menuInfo.ptrScroll(SCROL_FIRST_ROW_UP);      /*向上标记*/
  67   2      
  68   2              pTmp = pMenu + 1;
  69   2              if( pTmp->function == NULL )
  70   2                  menuInfo.ptrScroll(SCROL_SECOND_ROW_NULL);
  71   2              else
  72   2                  menuInfo.ptrScroll(SCROL_SECOND_ROW_DOWN);      /*向下标记*/
  73   2          }
  74   1      
  75   1          /*按键菜单显示函数*/
  76   1          status = (pMenu->function)( menuInfo.rebrushLcd );
  77   1      
  78   1          /*菜单层之间切换*/
  79   1          switch(status)
  80   1          {
  81   2                  case NOCHANGE_MENU:/*无操作*/
  82   2                  default:
  83   2                  menuInfo.rebrushLcd = KEEP_SCREEN;
  84   2                      break;
  85   2                  
  86   2              case NEXT_MENU:/*下一级菜单*/
  87   2                      if( (pMenu->son != NULL) && (pMenu->function != NULL) )
  88   2                  {
  89   3                      Father[floorCnt++] = pMenu;
  90   3                      pMenu = pMenu->son;
  91   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
  92   3                  }
  93   2                  break;
  94   2          
  95   2              case PREVIEW_MENU:/*上一级菜单*/
  96   2                  if(floorCnt > 0)
  97   2                  {
  98   3                      pMenu = Father[--floorCnt];
  99   3                          menuInfo.MenuPopReturnFlag = 1;
 100   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 101   3                  }
 102   2                  break;
 103   2          
 104   2          
 105   2              case LEFT_MENU:/*同级菜单上切换*/
 106   2                  pTmp = pMenu - 1;
 107   2                  if(pTmp->function != NULL)
 108   2                  {
 109   3                      pMenu = pTmp;
 110   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 111   3                  }
 112   2                  break;
 113   2          
 114   2              case RIGHT_MENU:/*同级菜单下切换*/
 115   2                  pTmp = pMenu + 1;
 116   2                  if(pTmp->function != NULL)
C51 COMPILER V7.20   MENU                                                                  02/20/2006 10:13:58 PAGE 3   

 117   2                  {
 118   3                      pMenu = pTmp;
 119   3                      menuInfo.rebrushLcd = FLASH_SCREEN;
 120   3                  }
 121   2                  break;
 122   2          }
 123   1      }
 124          #if 0
              /*弹出菜单程序处理*//*在处理函数中初始化菜单就可以回到主菜单*/
              void menuPopUp( BYTE *pPopFunction )
              {
                  if( menuInfo.MenuPopReturnFlag == 1 )
                  {
                      Father[floorCnt++] = pMenu;
                      pMenu->function = pPopFunction;
                      pMenu->son = NULL;
                      menuInfo.MenuPopReturnFlag = 0;
              
                      menuInfo.rebrushLcd = FLASH_SCREEN;
                  }
              }
              #endif
 139          
 140          #endif
 141          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    420    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     34      13
   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 + -