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

📄 main.lst

📁 液晶程序液晶程序液晶程序液晶程序液晶程序液晶程序
💻 LST
字号:
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          //宏定义
   3          #define   KEY_ENTER      0x01
   4          #define   KEY_MOVE       0x02
   5          #define   KEY_DOWN       0x03
   6          #define   KEY_UP         0x04
   7          #define   KEY_SET        0x05
   8          #define   KEY_ESC        0x06
   9          //----------------------------------------------------
  10          
  11          typedef unsigned char uchar;
  12          
  13          //全局变量声明
  14          extern unsigned char xdata KEY_BUF;
  15          extern unsigned char xdata XPOS;//XPOS为0~7
  16          extern unsigned char xdata YPOS;//YPOS为0~127
  17          extern bit FB_FLAG;//反白标志位
  18          //-----------------------------------------------------------------------
  19          //函数声明
  20          extern void     lcm_init();     //键盘初始化
  21          extern void     clearscreen();  //清屏
  22          extern void putchar(unsigned int singlecharnum);//输出一个字符
  23          extern void putstr(unsigned int *STR);
  24          void init_frame(unsigned int *STRTAB[]);
  25          
  26          void main_disp();//参数显示
  27          void main_bset();//系统设置
  28          void main_adset();//保护设置
  29          void main_record();//操作日志
  30          void main_order();//电容状态
  31          void main_error();//故障处理
  32          
  33          //-----------------------------------------------------------------------
  34          
  35          //全局变量定义
  36          unsigned char xdata selenum;//选择的字符串号,16位
  37          unsigned char xdata i;   //第二行显示的字符串号
  38          unsigned char xdata fbchar;  //fbchar为反白字节,4时第一行反白,2时第二行反白,1时最后一行反白
  39          unsigned char xdata TOTALNUM;//该页共有几个选项
  40          //------------------------------------------------------------------------------------------
  41          
  42          //字符串定义
  43          unsigned int code CLEAR[] = {0x0000,0x0000,0x0000,0x0000,0x00ff};//清楚故障
  44          unsigned int code STR0maintitle[] = {0x801A,0x801B,0x801C,0x801D,0x00ff};//功能菜单
  45          unsigned int code STR1_disp[]   = {0x0001,0x801E,0x801F,0x8020,0x8021,0x00ff};//1参数显示
  46          unsigned int code STR2_bset[]  = {0x0002,0x8022,0x8023,0x8024,0x8025,0x00ff};//2系统设置
  47          unsigned int code STR3_adset[] = {0x0003,0x800F,0x8026,0x8027,0x8028,0x00ff};//3保护设置
  48          unsigned int code STR4_capastate[]  = {0x0004,0x802D,0x802E,0x8024,0x8025,0x00ff};//4电容状态 
  49          unsigned int code STR5_record[]  = {0x0005,0x8029,0x802A,0x802B,0x802C,0x00ff}; //5操作日志 
  50          unsigned int code STR6_error[] = {0x0006,0x802F,0x8030,0x8031,0x8032,0x00ff}; //6故障查询
  51          unsigned int * code STRMAINTAB[7] = {STR0maintitle,STR1_disp,STR2_bset,STR3_adset,STR4_capastate,STR5_reco
             -rd,STR6_error};
  52          //--------------------------------------------------------------------------------------------------------
             ------
  53          
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 2   

  54          //显示两行
  55          void display2list(unsigned int *STRTABLE[])
  56          {
  57   1              bit fblist_1,fblist_2;
  58   1              
  59   1              if(fbchar==4)
  60   1              {
  61   2                      selenum=1;      //字符串号
  62   2                      fblist_1=1;
  63   2                      fblist_2=0;
  64   2              }
  65   1              else if(fbchar==2)
  66   1              {
  67   2                      selenum=2;
  68   2                      fblist_1=0;
  69   2                      fblist_2=1;
  70   2              }
  71   1              
  72   1              XPOS=0;
  73   1              YPOS=0;
  74   1              FB_FLAG=0;
  75   1              putstr(STRTABLE[0]); 
  76   1              
  77   1              XPOS=2;
  78   1              YPOS=0;
  79   1              FB_FLAG=fblist_1;
  80   1              putstr(STRTABLE[1]);//显示第1行
  81   1              
  82   1              XPOS=4;
  83   1              YPOS=0;
  84   1              FB_FLAG=fblist_2;   //显示第2行
  85   1              putstr(STRTABLE[2]);
  86   1      }  
  87          //-------------------------------------------------------------------------
  88          //两行选项上移
  89          /*void list2_key_up_move(unsigned int *STRTAB[])
  90          {
  91                  fbchar=4;
  92                  display2list(STRTAB);
  93                  KEY_BUF=0xff;
  94          }
  95          //--------------------------------------------------------------------------
  96          //两行选项下移
  97          void list2_key_down_move(unsigned int *STRTAB[])
  98          {
  99                  fbchar=2;
 100                  display2list(STRTAB);
 101                  KEY_BUF=0xff;
 102          } 
 103          *///-----------------------------------------------------------------------
 104          
 105          //显示一屏的3行,通过改变全局变量fbchar,i有不同的显示效果,并改变全局变量selenum,
 106          void display3list(unsigned int *STRTABLE[])
 107          {
 108   1              bit fblist1,fblist2,fblist3;
 109   1              
 110   1              if(fbchar==4)   //反白第一行
 111   1              {
 112   2                      selenum=i;
 113   2                      fblist1=1;
 114   2                      fblist2=0;
 115   2                      fblist3=0;
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 3   

 116   2              }//通过反白情况,改变全局变量selenum
 117   1              else if(fbchar==2)      //反白第二行
 118   1              {
 119   2                      selenum=i+1;
 120   2                      fblist1=0;
 121   2                      fblist2=1;
 122   2                      fblist3=0;
 123   2              }
 124   1              else if(fbchar==1)      //发白第三行
 125   1              {
 126   2                      selenum=i+2;
 127   2                      fblist1=0;
 128   2                      fblist2=0;
 129   2                      fblist3=1;
 130   2              }
 131   1              else if(fbchar==0)      //没有反白
 132   1              {
 133   2                      fblist1=0;
 134   2                      fblist2=0;
 135   2                      fblist3=0;
 136   2              }
 137   1              XPOS = 0;
 138   1              YPOS = 28;
 139   1              FB_FLAG = 0;
 140   1              putstr(STRTABLE[0]);//每页第一行为标题
 141   1              
 142   1              if(i == 1)
 143   1              {//第一页,打印向下的箭头
 144   2                      YPOS = 96;
 145   2                      putchar(0x0017);//空格
 146   2                      YPOS += 8;
 147   2                      putchar(0x0019);//下箭头
 148   2              }
 149   1              else if(i == (TOTALNUM-2))
 150   1              {//最后一页,打印向上的箭头
 151   2                      YPOS = 96;
 152   2                      putchar(0x0017);//空格
 153   2                      YPOS += 8;
 154   2                      putchar(0x0018);//上箭头
 155   2              }
 156   1              else
 157   1              {//打印向上和向下的箭头
 158   2                      YPOS = 96;
 159   2                      putchar(0x0018);
 160   2                      YPOS += 8;
 161   2                      putchar(0x0019);
 162   2              }
 163   1              
 164   1              XPOS = 2;
 165   1              YPOS = 24;
 166   1              FB_FLAG = fblist1;
 167   1              putstr(STRTABLE[i]);//显示第二行
 168   1              
 169   1              XPOS = 4;
 170   1              YPOS = 24;
 171   1              FB_FLAG = fblist2;
 172   1              putstr(STRTABLE[i+1]);//显示第三行
 173   1              
 174   1              XPOS = 6;
 175   1              YPOS = 24;
 176   1              FB_FLAG = fblist3;
 177   1              putstr(STRTABLE[i+2]);//显示第四行
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 4   

 178   1      }
 179              
 180          //-------------------------------------------------------------
 181          //三行选项上移
 182          void key_up_move(unsigned int *STRTAB[])//按上移键,反白上移,若为第一条则不动,输入:字符串地址列表*STRTA
             -B[]
 183          {
 184   1              if(fbchar==4)
 185   1              {
 186   2                      if(i!=1)
 187   2                      i--;
 188   2              }
 189   1              else fbchar<<=1;
 190   1              display3list(STRTAB);
 191   1              KEY_BUF=0xff;
 192   1      }
 193          //-------------------------------------------------------------------------------------
 194          //三行选项下移
 195          void key_down_move(unsigned int *STRTAB[],unsigned char num)//按下移键,反白下移,若为最后一条则不动,
 196          {
 197   1              if(fbchar==1)     //输入:字符串地址列表数组*STRTAB[],选项总数num,
 198   1              {
 199   2                      if(i!=(num-2))
 200   2                      i++;
 201   2              }                      
 202   1              else
 203   1                      fbchar>>=1;
 204   1              display3list(STRTAB);
 205   1              KEY_BUF=0xff;
 206   1      }
 207          //-------------------------------------
 208          
 209          //按下ENTER键,进入各分支
 210          void key_enter_move()//按enter键,进入各分支
 211          {
 212   1              if(selenum==0x01)
 213   1                      main_disp();//显示
 214   1              else if(selenum==0x02)
 215   1                      main_bset();//基本设置
 216   1              else if(selenum==0x03)
 217   1      //              main_adset();//保护设置
 218   1      //      else if(selenum==0x04)
 219   1      //              main_record();//操作日志
 220   1      //      else if(selenum==0x05)
 221   1              {
 222   2                      KEY_BUF=0xff;
 223   2      //              main_capastate();
 224   2              }//命令
 225   1              else if(selenum==0x06)
 226   1      //              main_error(); //故障处理
 227   1              KEY_BUF=0xff;
 228   1      }
 229          //-------------------------------------
 230          
 231          //初始页面,第一屏,反白项第一项
 232          void init_frame(unsigned int *STRTAB[])
 233          {  
 234   1              i=1;
 235   1              fbchar=4;
 236   1              if(TOTALNUM==2)
 237   1                      display2list(STRTAB);
 238   1              else
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 5   

 239   1                      display3list(STRTAB);
 240   1      }
 241          
 242          //-----------------------------------------------------------------------------
 243          
 244          main()
 245          {
 246   1          unsigned char remfbchar,remselenum,mremi,tcounter=0;
 247   1          TOTALNUM=6;
 248   1      
 249   1              EA = 1;                         //开总中断
 250   1              EX0 = 1;                        //允许外部中断0中断
 251   1      
 252   1              lcm_init();
 253   1              clearscreen();
 254   1      
 255   1          KEY_BUF = 0xff;
 256   1      //      i = 1;
 257   1      //      fbchar = 4;
 258   1              init_frame(STRMAINTAB);
 259   1      
 260   1              while(1)
 261   1              {
 262   2                      if(KEY_BUF == KEY_UP)
 263   2                              key_up_move(STRMAINTAB);
 264   2                      else if(KEY_BUF == KEY_DOWN)
 265   2                              key_down_move(STRMAINTAB,TOTALNUM);
 266   2                      else if(KEY_BUF == KEY_ENTER)
 267   2                      {
 268   3                              remfbchar=fbchar;
 269   3                              remselenum=selenum;
 270   3                              mremi=i;
 271   3                              key_enter_move();
 272   3                              TOTALNUM=6;
 273   3                              selenum=remselenum;
 274   3                              fbchar=remfbchar;
 275   3                              i=mremi;
 276   3                              clearscreen();
 277   3                              display3list(STRMAINTAB);
 278   3                      }
 279   2                      else if(KEY_BUF == KEY_ESC)
 280   2                      {
 281   3      //                      i = remi;
 282   3                              init_frame(STRMAINTAB); 
 283   3                              XPOS=2;
 284   3                              YPOS=80;
 285   3                              FB_FLAG=0;
 286   3      //                      putstr(CLEAR);
 287   3                              KEY_BUF=0xff;
 288   3                      }
 289   2                      //can_common();
 290   2              }
 291   1      }
 292          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    810    ----
   CONSTANT SIZE    =    113    ----
   XDATA SIZE       =      4    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
C51 COMPILER V7.01  MAIN                                                                   09/23/2008 14:27:38 PAGE 6   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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