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

📄 disp.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  DISP                                                                   05/25/2005 14:58:14 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN .\disp.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\disp.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include "public.h"
   2          
   3          void display(void)
   4          {
   5   1      
   6   1          //做成楼层数字符
   7   1          make16_16text();    
   8   1      
   9   1          m_cLineIdx=0;
  10   1          while(1){
  11   2              //做成16x5的行缓冲
  12   2              make16_5line(m_RecData.cDirect);
  13   2              //做成16x16的行缓冲
  14   2              make16_16line(m_RecData.cDirect);
  15   2              //显示
  16   2              showtext();
  17   2      
  18   2              m_cLineIdx++;
  19   2              if(m_cLineIdx>=16)
  20   2                  break;
  21   2          }
  22   1      	
  23   1          //移动步数
  24   1          calmovecnt();
  25   1      
  26   1      }
  27          
  28          void calmovecnt(void)
  29          {
  30   1          if((data5045.cF2==0)||(m_cOverloadFlg==1)){	    //固定显示 
  31   2              m_cWholeMoveOKFlg=0;
  32   2              m_cMoveCnt=0;        
  33   2              m_cMoveTimer=TIMER_ONELINE_NUM;
  34   2              m_cNewLineFlg=0;
  35   2          }else if(data5045.cF2==1){	//箭头滚动    
  36   2          	if(m_cNewLineFlg==1){
  37   3          		m_cMoveCnt++;
  38   3          		m_cNewLineFlg=0;
  39   3          		//整组移动完成
  40   3          		if(m_cMoveCnt>15){
  41   4          			m_cWholeMoveOKFlg=1;
  42   4          		}
  43   3          	}
  44   2          }else if(data5045.cF2==2){	//数字滚动    
  45   2          	if(m_cNewLineFlg==1){
  46   3          		m_cMoveCnt++;
  47   3          		m_cNewLineFlg=0;
  48   3          		//整组移动完成
  49   3          		if(m_cMoveCnt>15){
  50   4          			m_cWholeMoveOKFlg=1;
  51   4          		}
  52   3          	}    
  53   2          }else if(data5045.cF2==3){	//数字箭头滚动
  54   2          	if(m_cNewLineFlg==1){
  55   3          		m_cMoveCnt++;
C51 COMPILER V6.12  DISP                                                                   05/25/2005 14:58:14 PAGE 2   

  56   3          		m_cNewLineFlg=0;
  57   3          		//整组移动完成
  58   3          		if(m_cMoveCnt>15){
  59   4          			m_cWholeMoveOKFlg=1;
  60   4          		}
  61   3          	}
  62   2          }  
  63   1      }
  64          
  65          // cFlg: 0--下箭头  1--上箭头  2--空白
  66          void make16_5line(uchar cFlg)
  67          { 
  68   1      
  69   1          m_cSrcDirect=0xFF;
  70   1      
  71   1      	if(P1_7==1){	//跳线未接通
  72   2              if(m_cOverloadFlg==1){  //超载时仅作固定显示
  73   3                  m_cSrcDirect = PR_OVERLOAD[m_cLineIdx][0];
  74   3                  return;
  75   3              }
  76   2          	if(data5045.cF2==0){	//固定显示 
  77   3                  if(cFlg==0){ 
  78   4                      m_cSrcDirect = PRDDown[m_cLineIdx];
  79   4                  }else if(cFlg==1){
  80   4                      m_cSrcDirect = PRDUp[m_cLineIdx];
  81   4                  }else if(cFlg==2){
  82   4                      m_cSrcDirect = 0xFF;
  83   4                  }
  84   3          	}else if(data5045.cF2==1){	//箭头滚动    
  85   3                  if(cFlg==0){
  86   4                      if(m_cLineIdx<m_cMoveCnt){
  87   5                          m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
  88   5                      }else{
  89   5                          m_cSrcDirect = 0xFF;
  90   5                      }
  91   4                  }else if(cFlg==1){
  92   4                      if(m_cLineIdx>(16-m_cMoveCnt)){
  93   5                          m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
  94   5                      }else{
  95   5                          m_cSrcDirect = 0xFF;
  96   5                      }
  97   4                  }else if(cFlg==0xFF){
  98   4                      m_cSrcDirect = 0xFF;
  99   4                  }
 100   3          	}else if(data5045.cF2==2){	//数字滚动    
 101   3                  if(cFlg==0){ 
 102   4                      m_cSrcDirect = PRDDown[m_cLineIdx];
 103   4                  }else if(cFlg==1){
 104   4                      m_cSrcDirect = PRDUp[m_cLineIdx];
 105   4                  }else if(cFlg==0xFF){
 106   4                      m_cSrcDirect = 0xFF;
 107   4                  } 
 108   3          	}else if(data5045.cF2==3){	//数字箭头滚动
 109   3                  if(cFlg==0){ 
 110   4                      if(m_cLineIdx<m_cMoveCnt){
 111   5                          m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
 112   5                      }else{
 113   5                          m_cSrcDirect=0xFF;
 114   5                      }
 115   4                  }else if(cFlg==1){
 116   4                      if(m_cLineIdx>(16-m_cMoveCnt)){
 117   5                          m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
C51 COMPILER V6.12  DISP                                                                   05/25/2005 14:58:14 PAGE 3   

 118   5                      }else{
 119   5                          m_cSrcDirect=0xFF;
 120   5                      }
 121   4                  }else if(cFlg==0xFF){
 122   4                      m_cSrcDirect = 0xFF;
 123   4                  }
 124   3              }        
 125   2          }else{          //跳线接通
 126   2              m_cSrcDirect=0xFF;
 127   2          }
 128   1      
 129   1      }
 130          
 131          //buffer做成(7x11)
 132          void make16_16text(void)
 133          {
 134   1          uchar cDispVal=0;   //显示值
 135   1          uchar cDataHigh=0;
 136   1          uchar cDataLow=0;
 137   1          uchar cAsciiHigh=0; 
 138   1          uchar cAsciiLow=0;
 139   1      
 140   1          if(P1_7==0){    // "F0 F1 F2 F3 F4"
 141   2      
 142   2              if(m_cFuncCnt==0){
 143   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 144   4                      cAsciiHigh = 'F';
 145   4                      cAsciiLow  = '0';
 146   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 147   4                      cDispVal  = data5045.cF0+1;
 148   4                      cDataHigh = cDispVal/10;
 149   4                      cDataLow  = cDispVal%10;
 150   4                      cAsciiHigh = __toascii(cDataHigh);
 151   4                      cAsciiLow  = __toascii(cDataLow);
 152   4                  }
 153   3              }else if(m_cFuncCnt==1){
 154   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 155   4                      cAsciiHigh = 'F';
 156   4                      cAsciiLow  = '1';
 157   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 158   4                      cDispVal  = data5045.cF1+1;
 159   4                      cDataHigh = cDispVal/10;
 160   4                      cDataLow  = cDispVal%10;
 161   4                      cAsciiHigh = __toascii(cDataHigh);
 162   4                      cAsciiLow  = __toascii(cDataLow);
 163   4                  }
 164   3              }else if(m_cFuncCnt==2){
 165   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 166   4                      cAsciiHigh = 'F';
 167   4                      cAsciiLow  = '2';
 168   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 169   4                      cDispVal  = data5045.cF2+1;
 170   4                      cDataHigh = cDispVal/10;
 171   4                      cDataLow  = cDispVal%10;
 172   4                      cAsciiHigh = __toascii(cDataHigh);
 173   4                      cAsciiLow  = __toascii(cDataLow);
 174   4                  }
 175   3              }else if(m_cFuncCnt==3){
 176   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 177   4                      cAsciiHigh = 'F';
 178   4                      cAsciiLow  = '3';
 179   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
C51 COMPILER V6.12  DISP                                                                   05/25/2005 14:58:14 PAGE 4   

 180   4                      cDispVal  = data5045.cF3;
 181   4                      cDataHigh = cDispVal/10;
 182   4                      cDataLow  = cDispVal%10;
 183   4                      cAsciiHigh = __toascii(cDataHigh);
 184   4                      cAsciiLow  = __toascii(cDataLow);
 185   4                  }
 186   3              }else if(m_cFuncCnt==4){
 187   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 188   4                      cAsciiHigh = 'F';
 189   4                      cAsciiLow  = '4';
 190   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 191   4                      cDispVal  = data5045.cF4;
 192   4                      cDataHigh = cDispVal/10;
 193   4                      cDataLow  = cDispVal%10;
 194   4                      cAsciiHigh = __toascii(cDataHigh);
 195   4                      cAsciiLow  = __toascii(cDataLow);
 196   4                  }
 197   3              }else if(m_cFuncCnt==5){    //此处暂时被封 2004 11.03, 对应功能改为直接接受报站楼层
 198   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 199   4                      cAsciiHigh = 'F';
 200   4                      cAsciiLow  = '5';
 201   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 202   4                      //距地楼层数(0~55), 显示(-8-47)
 203   4                      if(data5045.cF5<8){
 204   5                          cDataLow   = 8-data5045.cF5;
 205   5                          cAsciiHigh = '-';
 206   5                          cAsciiLow  = __toascii(cDataLow);
 207   5                      }else{
 208   5                          cDataHigh  = (data5045.cF5-8)/10;
 209   5                          cDataLow   = (data5045.cF5-8)%10;
 210   5                          cAsciiHigh = __toascii(cDataHigh);
 211   5                          cAsciiLow  = __toascii(cDataLow);
 212   5                      }
 213   4                  }
 214   3              }else if(m_cFuncCnt==6){
 215   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 216   4                      cAsciiHigh = 'F';
 217   4                      cAsciiLow  = '6';
 218   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 219   4                      cDispVal  = data5045.cF6;
 220   4                      cDataHigh = cDispVal/10;
 221   4                      cDataLow  = cDispVal%10;
 222   4                      cAsciiHigh = __toascii(cDataHigh);
 223   4                      cAsciiLow  = __toascii(cDataLow);
 224   4                  }
 225   3              }else if(m_cFuncCnt==7){
 226   3                  if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
 227   4                      cAsciiHigh = 'F';
 228   4                      cAsciiLow  = '7';
 229   4                  }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
 230   4                      cDispVal  = data5045.cF7;
 231   4                      cDataHigh = cDispVal/10;
 232   4                      cDataLow  = cDispVal%10;
 233   4                      cAsciiHigh = __toascii(cDataHigh);
 234   4                      cAsciiLow  = __toascii(cDataLow);
 235   4                  }
 236   3              }
 237   2          }else{          // 显示楼层(-1~-9,1-48,B1~B9)
 238   2              
 239   2              if(m_cOverloadFlg==1){  //超载时仅作固定显示
 240   3                  return;
 241   3              }
C51 COMPILER V6.12  DISP                                                                   05/25/2005 14:58:14 PAGE 5   

 242   2      
 243   2              if((m_RecData.cCurFloor>=0) && (m_RecData.cCurFloor<=8)){			//-1~-9
 244   3                  cDataHigh = (9-m_RecData.cCurFloor)/10;
 245   3                  cDataLow  = (9-m_RecData.cCurFloor)%10;
 246   3                  cAsciiHigh = '-';
 247   3                  cAsciiLow  = __toascii(cDataLow);
 248   3              }else if((m_RecData.cCurFloor>=9) && (m_RecData.cCurFloor<=56)){	//1-48
 249   3                  cDataHigh = (m_RecData.cCurFloor-8)/10;
 250   3                  cDataLow  = (m_RecData.cCurFloor-8)%10;
 251   3                  cAsciiHigh = __toascii(cDataHigh);
 252   3                  cAsciiLow  = __toascii(cDataLow);
 253   3              }else if((m_RecData.cCurFloor>=69) && (m_RecData.cCurFloor<=77)){   //B1~B9
 254   3                  cDataHigh = (m_RecData.cCurFloor-68)/10;
 255   3                  cDataLow  = (m_RecData.cCurFloor-68)%10;
 256   3                  cAsciiHigh = 'B';
 257   3                  cAsciiLow  = __toascii(cDataLow);
 258   3              }else{
 259   3                  cAsciiHigh = '-';
 260   3                  cAsciiLow  = '-';
 261   3              }
 262   2          }
 263   1      
 264   1          m_cAsciiHigh=cAsciiHigh; 
 265   1          m_cAsciiLow=cAsciiLow;
 266   1      
 267   1      }
 268          
 269          void make16_16line(uchar cFlg)
 270          {
 271   1          uchar cIndexHigh=getindex(m_cAsciiHigh);
 272   1          uchar cIndexLow =getindex(m_cAsciiLow);
 273   1          
 274   1          m_cSrcFloorHigh=0xFF;    //楼层高字符缓冲区
 275   1          m_cSrcFloorLow=0xFF;     //楼层低字符缓冲区
 276   1      
 277   1      
 278   1          if(m_cOverloadFlg==1){  //超载时仅作固定显示
 279   2              m_cSrcFloorHigh = PR_OVERLOAD[m_cLineIdx][1];
 280   2              m_cSrcFloorLow  = PR_OVERLOAD[m_cLineIdx][2];
 281   2              return;
 282   2          }
 283   1          
 284   1          if(cIndexHigh != 0){    // 双字符
 285   2              m_c15_16singledoubleFlg=1;
 286   2          	if((data5045.cF2==0)||(P1_7==0)){	    //固定显示 
 287   3                  m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
 288   3                  m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx];
 289   3          	}else if(data5045.cF2==1){	//箭头滚动   

⌨️ 快捷键说明

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