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