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

📄 main.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  21   2          can_receive_more(0);  //控制器
  22   2      	can_receive_more(1);
  23   2      	can_receive_more(2);
  24   2      	can_receive_more(3);
  25   2      	//发送  条件满足时(即为群控,又没有司机,直驶,消防,锁梯等 )
  26   2      	can_call_assign();    //外呼分派
  27   2      	//接收
  28   2          can_receive_only(0);  //控制器
  29   2      	can_receive_only(1);
  30   2      	can_receive_only(2);
  31   2      	can_receive_only(3);
  32   2      	//接收   
  33   2      	clear_unknow_code(0);  //清乱码
  34   2        	clear_unknow_code(1); 
  35   2        	clear_unknow_code(2); 
  36   2        	clear_unknow_code(3); 
  37   2      	//发送  条件满足时(即为群控,又没有司机,直驶,消防,锁梯等 )
  38   2         	can_call_lamp();    //暂定50ms循环点灯,灭灯
  39   2      
  40   2          //"检修,锁梯,消防"三状态的处理  //2004.11.25 added by LHM
  41   2          Check3states();
  42   2      
  43   2      	// 读时钟
  44   2      	time_x1226();
  45   2      
  46   2      	//RS232程序(串口仅在主程序中)
  47   2      //	serial_comm();
  48   2      
  49   2      	//命令解析(串口在主程序及中断中)
  50   2      	serial_command_resolve();
  51   2      	//串口发送数据作成(串口在主程序及中断中)
  52   2      	serial_make_senddata();
  53   2      
  54   2      	//用户参数存储
  55   2      	save_user_param();
C51 COMPILER V6.12  MAIN                                                                   06/05/2005 15:44:43 PAGE 15  

  56   2      	//用户参数恢复
  57   2      	restore_user_param();
  58   2      	//工厂参数恢复
  59   2      	restore_factory_param();
  60   2      	
  61   2      	//外呼分配处理
  62   2      	main_process();
  63   2      	               
  64   2      	P3_5=~P3_5;
  65   2         }
  66   1      
  67   1      }
  68          
  69          void main_process()
  70          {
  71   1      	//撤销外呼(模拟程序在主程序中处理,2004.05.18新追加)
  72   1      	WithdrawOutCall();	
  73   1      	
  74   1      	//更新电梯门超时计时(PC模拟处理专用)
  75   1      //	UpdateDoorOvertimer();
  76   1       
  77   1      	//计算部分中间数据
  78   1      	SetPartInterVal();
  79   1      
  80   1      	//撤销"被一票否决电梯"当前的外呼分配
  81   1      	WithdrawVetoEle();
  82   1      
  83   1      	//对外呼进行优化分配
  84   1      	DistributeEle();
  85   1      
  86   1      	//检查及设置静态停靠层
  87   1      	SetStaticStopFloor();
  88   1      
  89   1      	//检查及设置高峰停靠层
  90   1      	SetPeekStopFloor();
  91   1      	//设置门状态
  92   1      //	SetDoorStateFlg();
  93   1        
  94   1      }
  95          
  96          //撤销被一票否决电梯的外呼响应数据
  97          void WithdrawVetoEle(void)
  98          {
  99   1      	uchar m_cLNum = LNum_MAX;
 100   1      	uchar m_cENum = m_pL_Data->cENum;
 101   1      	uchar i=0,j=0;
 102   1      
 103   1      	for(i=0; i<m_cENum; i++){
 104   2      		E_XiangYing* pXiangYing = &(m_pE_OutputData->mXiangYing[i]);
 105   2      		//判断电梯是否被一票否决
 106   2      		if((m_InterData[i].bVeto==1)/* && (e_online[i]==1)*/){
 107   3      			for(j=0; j<ARRAY_BYTENUM; j++){
 108   4      				pXiangYing->bShang[j]=0;
 109   4      				pXiangYing->bXia[j]=0;
 110   4      			}
 111   3      		}
 112   2      	}
 113   1      
 114   1      }
 115          
 116          //撤销外呼
 117          void WithdrawOutCall(void)
C51 COMPILER V6.12  MAIN                                                                   06/05/2005 15:44:43 PAGE 16  

 118          {
 119   1      	uchar m_cENum = m_pL_Data->cENum;
 120   1      	uchar i=0,j=0;
 121   1      	uchar cCurFloorIdx=0;
 122   1      	uchar cVal=0;
 123   1      	E_WaiHu* pWaiHu=0;
 124   1      
 125   1      	for(i=0; i<m_cENum; i++){
 126   2      		if(e_online[i]==1){
 127   3      			cCurFloorIdx=mE_InputData.mDianTi[i].cDangQianCeng-1;
 128   3      			//电梯处于静止
 129   3      //第一种方案
 130   3      
 131   3      //			if(m_LastDoorState[i]==1){	//上次关门中
 132   3      			if(m_LastDoorState[i]==0){	//上次关门不到位
 133   4      				if(mE_InputData.mDianTi[i].Men.bGuanMenDaoWei==1){	//本次关门到位
 134   5      					if((mE_InputData.mDianTi[i].FangXiang.bShang==1)&&(mE_InputData.mDianTi[i].FangXiang.bXia==0)){
 135   6      	     				SetArrayData(mE_InputData.mWaiHu.bShang,cCurFloorIdx,0);
 136   6      				   }else if((mE_InputData.mDianTi[i].FangXiang.bShang==0)&&(mE_InputData.mDianTi[i].FangXiang.bXia==1)
             -){
 137   6      						SetArrayData(mE_InputData.mWaiHu.bXia,cCurFloorIdx,0);
 138   6      					}
 139   5      				}
 140   4      			}
 141   3      
 142   3      //第二种方案
 143   3      /*
 144   3      			if(mE_InputData.mDianTi[i].Men.bGuanMenZhong==1)
 145   3                  if(mE_InputData.mDianTi[i].bDongOrJing==0){	//关门中
 146   3      				if((mE_InputData.mDianTi[i].FangXiang.bShang==1)&&(mE_InputData.mDianTi[i].FangXiang.bXia==0)){
 147   3           				SetArrayData(mE_InputData.mWaiHu.bShang,cCurFloorIdx,0);
 148   3      			    }else if((mE_InputData.mDianTi[i].FangXiang.bShang==0)&&(mE_InputData.mDianTi[i].FangXiang.bXia==1)
             -){
 149   3      					SetArrayData(mE_InputData.mWaiHu.bXia,cCurFloorIdx,0);
 150   3      				}
 151   3      			}
 152   3      */
 153   3      //第三种方案(!!!逻辑上错误,不要试)
 154   3      /*
 155   3      			if(mE_InputData.mDianTi[i].bDongOrJing==1){
 156   3      				if(mE_InputData.mDianTi[i].bLingSuXinHao==1){
 157   3      					if((mE_InputData.mDianTi[i].FangXiang.bShang==1)&&(mE_InputData.mDianTi[i].FangXiang.bXia==0)){
 158   3      	     				SetArrayData(mE_InputData.mWaiHu.bShang,cCurFloorIdx,0);
 159   3      				   }else if((mE_InputData.mDianTi[i].FangXiang.bShang==0)&&(mE_InputData.mDianTi[i].FangXiang.bXia==1)
             -){
 160   3      						SetArrayData(mE_InputData.mWaiHu.bXia,cCurFloorIdx,0);
 161   3      					}
 162   3      				}
 163   3      			}else{
 164   3      				if(mE_InputData.mDianTi[i].Men.bGuanMenZhong==1){	//关门中
 165   3      					if((mE_InputData.mDianTi[i].FangXiang.bShang==1)&&(mE_InputData.mDianTi[i].FangXiang.bXia==0)){
 166   3      	     				SetArrayData(mE_InputData.mWaiHu.bShang,cCurFloorIdx,0);
 167   3      				   }else if((mE_InputData.mDianTi[i].FangXiang.bShang==0)&&(mE_InputData.mDianTi[i].FangXiang.bXia==1)
             -){
 168   3      						SetArrayData(mE_InputData.mWaiHu.bXia,cCurFloorIdx,0);
 169   3      					}
 170   3      				}
 171   3      			}			
 172   3      */
 173   3      			//关门状态
 174   3      //2005.06.05
 175   3      //			if(mE_InputData.mDianTi[i].Men.bGuanMenZhong==1)
C51 COMPILER V6.12  MAIN                                                                   06/05/2005 15:44:43 PAGE 17  

 176   3      			if(mE_InputData.mDianTi[i].Men.bGuanMenDaoWei==1)
 177   3      				m_LastDoorState[i]=1;
 178   3      			else
 179   3      				m_LastDoorState[i]=0;
 180   3      		}
 181   2      	}
 182   1      }
 183          
 184          /*
 185          //设置门状态标记(撤销外呼用)
 186          void SetDoorStateFlg(void)
 187          {
 188          	uchar m_cENum = m_pL_Data->cENum;
 189          	uchar i=0;
 190          
 191          	for(i=0; i<m_cENum; i++){
 192          		if(e_online[i]==1){
 193          			if(mE_InputData.mDianTi[i].Men.bGuanMenZhong==1)
 194          				m_LastDoorState[i]=1;
 195          			else
 196          				m_LastDoorState[i]=0;
 197          		}
 198          	}
 199          }
 200          */
C51 COMPILER V6.12  MAIN                                                                   06/05/2005 15:44:43 PAGE 18  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 3
                                           ; SOURCE LINE # 4
                                           ; SOURCE LINE # 5
0000 120000      E     LCALL   maininit
                                           ; SOURCE LINE # 9
0003 120000      E     LCALL   data_init
0006         ?C0001:
                                           ; SOURCE LINE # 11
                                           ; SOURCE LINE # 14
0006 120000      E     LCALL   can_reset
                                           ; SOURCE LINE # 16
0009 E4                CLR     A
000A FF                MOV     R7,A
000B 120000      E     LCALL   _can_call_in
                                           ; SOURCE LINE # 17
000E 7F01              MOV     R7,#01H
0010 120000      E     LCALL   _can_call_in
                                           ; SOURCE LINE # 18
0013 7F02              MOV     R7,#02H
0015 120000      E     LCALL   _can_call_in
                                           ; SOURCE LINE # 19
0018 7F03              MOV     R7,#03H
001A 120000      E     LCALL   _can_call_in
                                           ; SOURCE LINE # 21
001D E4                CLR     A
001E FF                MOV     R7,A
001F 120000      E     LCALL   _can_receive_more
                                           ; SOURCE LINE # 22
0022 7F01              MOV     R7,#01H
0024 120000      E     LCALL   _can_receive_more
                                           ; SOURCE LINE # 23
0027 7F02              MOV     R7,#02H
0029 120000      E     LCALL   _can_receive_more
                                           ; SOURCE LINE # 24
002C 7F03              MOV     R7,#03H
002E 120000      E     LCALL   _can_receive_more
                                           ; SOURCE LINE # 26
0031 120000      E     LCALL   can_call_assign
                                           ; SOURCE LINE # 28
0034 E4                CLR     A
0035 FF                MOV     R7,A
0036 120000      E     LCALL   _can_receive_only
                                           ; SOURCE LINE # 29
0039 7F01              MOV     R7,#01H
003B 120000      E     LCALL   _can_receive_only
                                           ; SOURCE LINE # 30
003E 7F02              MOV     R7,#02H
0040 120000      E     LCALL   _can_receive_only
                                           ; SOURCE LINE # 31
0043 7F03              MOV     R7,#03H
0045 120000      E     LCALL   _can_receive_only
                                           ; SOURCE LINE # 33
0048 E4                CLR     A
0049 FF                MOV     R7,A
004A 120000      E     LCALL   _clear_unknow_code
                                           ; SOURCE LINE # 34
004D 7F01              MOV     R7,#01H
004F 120000      E     LCALL   _clear_unknow_code
C51 COMPILER V6.12  MAIN                                                                   06/05/2005 15:44:43 PAGE 19  

                                           ; SOURCE LINE # 35
0052 7F02              MOV     R7,#02H
0054 120000      E     LCALL   _clear_unknow_code
                                           ; SOURCE LINE # 36
0057 7F03              MOV     R7,#03H
0059 120000      E     LCALL   _clear_unknow_code
                                           ; SOURCE LINE # 38
005C 120000      E     LCALL   can_call_lamp
                                           ; SOURCE LINE # 41
005F 120000      E     LCALL   Check3states
                                           ; SOURCE LINE # 44
0062 120000      E     LCALL   time_x1226
                                           ; SOURCE LINE # 50
0065 120000      E     LCALL   serial_command_resolve
                                           ; SOURCE LINE # 52
0068 120000      E     LCALL   serial_make_senddata
                                           ; SOURCE LINE # 55
006B 120000      E     LCALL   save_user_param
                                           ; SOURCE LINE # 57
006E 120000      E     LCALL   restore_user_param
                                           ; SOURCE LINE # 59
0071 120000      E     LCALL   restore_factory_param
                                           ; SOURCE LINE # 62
0074 120000      R     LCALL   main_process
                                           ; SOURCE LINE # 64
0077 B2B5              CPL     P3_5
                                           ; SOURCE LINE # 65
0079 808B              SJMP    ?C0001
             ; FUNCTION main (END)

             ; FUNCTION main_process (BEGIN)

⌨️ 快捷键说明

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