📄 function.lst
字号:
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 + -