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

📄 function.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.12  FUNCTION                                                               06/05/2005 15:44:45 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN .\function.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\function.c LARGE BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS

stmt level    source

   1          #include "common.h"
   1      =1  
   2      =1  #ifndef EXTERN
   3      =1  #define EXTERN extern
   4      =1  #endif
   5      =1  
   6      =1  #define uchar	unsigned char 
   7      =1  #define uint	unsigned int
   8      =1  #define ulong	unsigned long 
   9      =1  #define schar	signed char 
  10      =1  #define sint	signed int
  11      =1  #define slong	signed long 
  12      =1  
  13      =1  #define LNum_MAX_OVERGROUND		48
  14      =1  #define LNum_MAX_UNDERGROUND	8
  15      =1  #define LNum_MAX		(LNum_MAX_OVERGROUND+LNum_MAX_UNDERGROUND) //最大楼层数(地上最大48层,地下最大8层)
  16      =1  #define ENum_MAX		8		//最大群控电梯数(该宏关系到串口通讯程序的变量地址,慎重修改)
  17      =1  #define ARRAY_BYTENUM	7		//"内选数据""内选可停""上呼可停""下呼可停"数组所占字节数
  18      =1  #define QuXianShu_Max	8		//最大曲线数
  19      =1  #define MenChaoShi_Num	5		//门超时判定数量
  20      =1  
  21      =1  //--------------------------  输入数据结构 start ------------------------// 
  22      =1  
  23      =1  struct tag_E_FangXiang{		//运动方向
  24      =1  	uchar bShang;				//上
  25      =1  	uchar bXia;					//下
  26      =1  };
  27      =1  #define E_FangXiang struct tag_E_FangXiang
  28      =1  
  29      =1  struct tag_E_Men{			//门状态
  30      =1  	uchar bKaiMenDaoWei;		//开门到位
  31      =1  	uchar bGuanMenDaoWei;		//关门到位
  32      =1  	uchar bKaiMenAnNiu;			//开门按钮
  33      =1  	uchar bGuanMenZhong;		//关门中
  34      =1  	uchar bMenGuZhang;			//门故障
  35      =1  };
  36      =1  #define E_Men struct tag_E_Men
  37      =1  
  38      =1  struct tag_E_ChengZai{		//承载状态
  39      =1  	uchar bKongZai;				//空载
  40      =1  	uchar bQingZai;				//轻载
  41      =1  	uchar bZhongZai;			//重载
  42      =1  	uchar bManZai;				//满载
  43      =1  	uchar bChaoZai;				//超载
  44      =1  };
  45      =1  #define E_ChengZai struct tag_E_ChengZai
  46      =1  
  47      =1  struct tag_E_TeBie{			//特别状态
  48      =1  	uchar bJianXiu;				//检修
  49      =1  	uchar bSiJi;				//司机
  50      =1  	uchar bZhiShi;				//直驶
  51      =1  	uchar bBaoLiu;				//保留
  52      =1  	uchar bSuoTi;				//锁梯
  53      =1  	uchar bXiaoFang;			//消防
  54      =1  	uchar bJiTing;              //急停
C51 COMPILER V6.12  FUNCTION                                                               06/05/2005 15:44:45 PAGE 2   

  55      =1  	uchar bGuZhang;				//故障
  56      =1  	uchar bJingGao;				//警告
  57      =1  };
  58      =1  #define E_TeBie struct tag_E_TeBie
  59      =1  
  60      =1  struct tag_E_TongXun{	//通讯状态
  61      =1  	uchar bCanChuShiOK;		//Can初始化OK
  62      =1  	uchar bZhiShi;			//通讯指示
  63      =1  };
  64      =1  #define E_TongXun struct tag_E_TongXun
  65      =1  
  66      =1  
  67      =1  struct tag_E_MenTime{		//门时间
  68      =1  	uchar	cKaiMenTime;		//开门时间
  69      =1  	uchar   cGuanMenTime;		//关门时间
  70      =1  	uchar	cGMYanChiTime;		//自动关门延迟时间
  71      =1  };
  72      =1  #define E_MenTime struct tag_E_MenTime
  73      =1  
  74      =1  struct tag_E_DianTi{	//电梯数据
  75      =1  	//来源于Can的输入数据
  76      =1  	uchar	bZhunBeiHao;					//准备好
  77      =1  	uchar	bDanOrQun;						//单梯/群控
  78      =1  	uchar	cDangQianCeng;					//当前层
  79      =1  	uchar    bDongOrJing;					//运动/静止
  80      =1  	E_FangXiang		FangXiang;				//运动方向
  81      =1  	E_Men			Men;					//门状态
  82      =1  	E_ChengZai		ChengZai;				//承载状态
  83      =1  	E_TeBie			TeBie;					//特别状态
  84      =1  	uchar			bNeiXuan[ARRAY_BYTENUM];//内选数据
  85      =1  	//来源于群控器的输入数据
  86      =1  	uchar	cPortNo;						//控制器端口号
  87      =1  	uchar   cChengZhong;					//承重值
  88      =1  	uchar	cZaoGFCeng;						//高峰停靠层(早)
  89      =1  	uchar	cWuGFCeng;						//高峰停靠层(午)
  90      =1  	uchar	cWanGFCeng;						//高峰停靠层(晚)
  91      =1  	signed char cJuDiCengShu;				//起始层距地面楼层数
  92      =1  	uchar	cXueXiCengShu;					//学习楼层数
  93      =1  	uchar	cYouXianJi;						//优先级
  94      =1  	uchar	cQuXianShu;						//曲线数
  95      =1  	uint	nTiSu[QuXianShu_Max];			//各曲线匀速段梯速
  96      =1  	uint	nJiaSuDu;						//额定加速度
  97      =1  	uint	nZhuanSu;						//电机转速(取值范围:1400-1500	单位:转/分)
  98      =1  	uchar	cPinLv;							//电机频率(取值范围:30-60		单位:Hz)
  99      =1  	uchar	cEDingTiSu;						//额定梯速(取值范围:5-30		单位:分米/秒)
 100      =1  	uchar	cYunXingTiSu;					//运行梯速(取值范围:5-30		单位:分米/秒)
 101      =1  	ulong	lBMQMaiChongShu;				//编码器脉冲数
 102      =1  	ulong	lDGCMaiChongShu;				//等高层脉冲数
 103      =1  	uchar		bQunKong;					//群控选中
 104      =1  	uchar		cMinFenPei;					//分配最小楼层数
 105      =1  	uchar		cMinCancelFenPei;			//取消分配最小楼层数
 106      =1  	uchar		cZuiDiCeng;					//可到最底层
 107      =1  	uchar		cZuiGaoCeng;				//可到最高层
 108      =1  	uchar		cChaoShiTime[MenChaoShi_Num];//门超时时间
 109      =1  	E_TongXun		TongXun;				//通讯状态
 110      =1  	E_MenTime	MenTime;					//门时间
 111      =1  	uchar		bNeiXuanKeTing[ARRAY_BYTENUM];	//内选可停
 112      =1  	uchar		bShangHuKeTing[ARRAY_BYTENUM];	//上呼可停
 113      =1  	uchar		bXiaHuKeTing[ARRAY_BYTENUM];		//下呼可停
 114      =1  //2004.05.19 added by LHM (为解决撤销外呼追加)
 115      =1  	uchar       bLingSuXinHao;					//零速信号
 116      =1      uchar       bBenCengKaiMen;					//本层开门
C51 COMPILER V6.12  FUNCTION                                                               06/05/2005 15:44:45 PAGE 3   

 117      =1  //end
 118      =1  };
 119      =1  #define E_DianTi struct tag_E_DianTi
 120      =1  
 121      =1  struct tag_E_WaiHu{		//外呼状态
 122      =1  	uchar	bShang[ARRAY_BYTENUM];						//上呼
 123      =1  	uchar	bXia[ARRAY_BYTENUM];						//下呼
 124      =1  };
 125      =1  #define E_WaiHu struct tag_E_WaiHu
 126      =1  
 127      =1  struct tag_E_InputData{	//输入数据
 128      =1  	E_DianTi	mDianTi[ENum_MAX];			
 129      =1  	E_WaiHu		mWaiHu;			
 130      =1  };
 131      =1  #define E_InputData struct tag_E_InputData
 132      =1  //--------------------------  输入数据结构 end   ------------------------//
 133      =1  
 134      =1  //--------------------------  输出数据结构 start ------------------------// 
 135      =1  struct tag_E_XiangYing{	//外呼响应状态
 136      =1  	uchar	bShang[ARRAY_BYTENUM];							//上呼
 137      =1  	uchar	bXia[ARRAY_BYTENUM];								//下呼
 138      =1  };
 139      =1  #define E_XiangYing struct tag_E_XiangYing
 140      =1  struct tag_E_Deng{	//外呼响应状态
 141      =1  	uchar	bShang[ARRAY_BYTENUM];							//上呼
 142      =1  	uchar	bXia[ARRAY_BYTENUM];								//下呼
 143      =1  };
 144      =1  #define E_Deng struct tag_E_Deng
 145      =1  
 146      =1  struct tag_E_OutputData{//输出数据
 147      =1  	E_XiangYing mXiangYing[ENum_MAX];	
 148      =1  	E_Deng		mDeng[ENum_MAX];
 149      =1  };
 150      =1  #define E_OutputData struct tag_E_OutputData
 151      =1  //--------------------------  输出数据结构 end   ------------------------// 
 152      =1  
 153      =1  //--------------------------  楼及其他总体数据 start --------------------// 
 154      =1  struct tag_L_YearMonDat{
 155      =1  	uchar cYear;
 156      =1  	uchar cMonth;
 157      =1  	uchar cDate;
 158      =1  	uchar cWeek;
 159      =1  };
 160      =1  #define L_YearMonDat struct tag_L_YearMonDat
 161      =1  
 162      =1  struct tag_L_HourMin{
 163      =1  	uchar cHour;
 164      =1  	uchar cMinute;
 165      =1  	uchar cSecond;
 166      =1  };
 167      =1  #define L_HourMin struct tag_L_HourMin
 168      =1  
 169      =1  struct tag_L_SysTime{
 170      =1  	L_YearMonDat mYearMonDat;
 171      =1  	L_HourMin	 mHourMinSec;
 172      =1  };
 173      =1  #define L_SysTime struct tag_L_SysTime
 174      =1  
 175      =1  struct tag_L_GaoFeng{	//高峰信息
 176      =1  	L_HourMin lStartTime;						//高峰开始时间
 177      =1  	L_HourMin lEndTime;							//高峰结束时间
 178      =1  };
C51 COMPILER V6.12  FUNCTION                                                               06/05/2005 15:44:45 PAGE 4   

 179      =1  #define L_GaoFeng struct tag_L_GaoFeng
 180      =1  
 181      =1  #define L_GaoFeng struct tag_L_GaoFeng
 182      =1  
 183      =1  struct tag_L_Data{		//楼及其他总体数据
 184      =1  	uchar cLNum;						//最大楼层数
 185      =1  	uchar cENum;						//最大群控电梯数
 186      =1  	uint  nTKYanChiTime;				//静态停靠延迟时间
 187      =1  	L_SysTime   mSysTime;			//系统时间
 188      =1  	L_GaoFeng	ZaoGF;				//早高峰
 189      =1  	L_GaoFeng	WuGF;					//午高峰
 190      =1  	L_GaoFeng	WanGF;				//晚高峰
 191      =1  //	uchar		cJTTingkaoCeng[ENum_MAX];	//静态停靠层
 192      =1  };
 193      =1  #define L_Data struct tag_L_Data
 194      =1  //--------------------------  楼及其他总体数据 end   --------------------// 
 195      =1  
 196      =1  struct tag_Temp_Timer{
 197      =1  	long	lJingTaiTimer;				//静态计时
 198      =1  	long	lChaoShiTimer[ENum_MAX];	//电梯门超时计时
 199      =1  };
 200      =1  #define TIMER struct tag_Temp_Timer
 201      =1  
 202      =1  struct tag_PtrALLData{		//所有数据
 203      =1  	L_Data			*pL_Data;
 204      =1  	E_InputData		*pE_InputData;
 205      =1  	E_OutputData	*pE_OutputData;
 206      =1  	TIMER			*pTimer;
 207      =1  };
 208      =1  #define PtrALLData struct tag_PtrALLData
 209      =1  
 210      =1  
 211      =1  //Variable Defination 
 212      =1  EXTERN xdata L_Data			mL_Data;
 213      =1  EXTERN xdata E_InputData	mE_InputData;
 214      =1  EXTERN xdata E_OutputData	mE_OutputData;
 215      =1  EXTERN xdata TIMER			m_Timer;
 216      =1  
 217      =1  //xdata L_Data			mL_Data;
 218      =1  //xdata E_InputData		mE_InputData;
 219      =1  //Function Refrence
 220      =1  void Set0Data(uchar *pData, uchar cMOD);
 221      =1  uchar GetArrayData(uchar *pData, uchar cIdx);
 222      =1  void  SetArrayData(uchar *pData, uchar cIdx, uchar cVal);
 223      =1  void  SetArrayData_INTERRUPT(uchar *pData, uchar cIdx, uchar cVal);
   2          
   3          //取得“内选数据”“内选可停”“上呼可停”“下呼可停”索引值为cIdx的数据
   4          uchar GetArrayData(uchar *pData, uchar cIdx)
   5          {
   6   1      	uchar ret=0x00;
   7   1      	uchar  cMOD = cIdx%8;
   8   1      	uchar  cMoveBit = cMOD;	//移动位数
   9   1      	if((cIdx>=0) && (cIdx<8)){
  10   2      		ret = (pData[0]>>cMoveBit) & 0x01;
  11   2      	}else if((cIdx>=8) && (cIdx<16)){
  12   2      		ret = (pData[1]>>cMoveBit) & 0x01;
  13   2      	}else if((cIdx>=16) && (cIdx<24)){
  14   2      		ret = (pData[2]>>cMoveBit) & 0x01;
  15   2      	}else if((cIdx>=24) && (cIdx<32)){
  16   2      		ret = (pData[3]>>cMoveBit) & 0x01;
  17   2      	}else if((cIdx>=32) && (cIdx<40)){
  18   2      		ret = (pData[4]>>cMoveBit) & 0x01;
C51 COMPILER V6.12  FUNCTION                                                               06/05/2005 15:44:45 PAGE 5   

  19   2      	}else if((cIdx>=40) && (cIdx<48)){
  20   2      		ret = (pData[5]>>cMoveBit) & 0x01;
  21   2      	}else if((cIdx>=48) && (cIdx<56)){
  22   2      		ret = (pData[6]>>cMoveBit) & 0x01;
  23   2      	}
  24   1      
  25   1      	return ret;
  26   1      }
  27          
  28          void Set0Data(uchar *pData, uchar cMOD)
  29          {
  30   1      	switch(cMOD){
  31   2      		case 0: *pData = (*pData)&0xFE; break;	// 1111,1110
  32   2      		case 1: *pData = (*pData)&0xFD; break;	// 1111,1101
  33   2      		case 2: *pData = (*pData)&0xFB; break;	// 1111,1011
  34   2      		case 3: *pData = (*pData)&0xF7; break;	// 1111,0111
  35   2      		case 4: *pData = (*pData)&0xEF; break;	// 1110,1111
  36   2      		case 5: *pData = (*pData)&0xDF; break;	// 1101,1111
  37   2      		case 6: *pData = (*pData)&0xBF; break;	// 1011,1111
  38   2      		case 7: *pData = (*pData)&0x7F; break;	// 0111,1111
  39   2      		default: break;
  40   2      	}
  41   1      }
  42          
  43          //设置“内选数据”“内选可停”“上呼可停”“下呼可停”索引值为cIdx的数据,数据只能为0/1
  44          void SetArrayData(uchar *pData, uchar cIdx, uchar cVal)
  45          {
  46   1      	uchar  cTemp= cVal;
  47   1      	uchar  cMOD = cIdx%8;
  48   1      	uchar  cMoveBit = cMOD;	//移动位数
  49   1      	if(cVal==1){
  50   2      		cTemp = cTemp<<cMoveBit;
  51   2      		if((cIdx>=0) && (cIdx<8)){
  52   3      			pData[0] = pData[0]|cTemp;
  53   3      		}else if((cIdx>=8) && (cIdx<16)){
  54   3      			pData[1] = pData[1]|cTemp;
  55   3      		}else if((cIdx>=16) && (cIdx<24)){

⌨️ 快捷键说明

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