📄 teloperate.lst
字号:
154 3 RingGroup[i][4]=temp>>8;
155 3 RingGroup[i][5]=temp; //设置振铃间隔时间
156 3
157 3 return 1; //设置振铃成功
158 3 }
159 2 }
160 1 return 0x2; //振铃忙,请等待
161 1 }
162
163 char ExtTelStopRing(UCHAR StopRingTel)
164 {
165 1 idata UCHAR i,j;
166 1
167 1 if(StopRingTel>ExtTelNum)
168 1 {
169 2 return 0xfe; //超出分机范围出错
170 2 }
171 1 for(i=0;i<MaxNumAtRing;i++)
172 1 {
173 2 if(RingGroup[i][1]==StopRingTel)//查找分机
174 2 {
175 3
176 3 j=0x01;
177 3 j=(j<<(StopRingTel));
178 3 j=j^0xff; //停止分机振铃
179 3 ExtTelRingState=ExtTelRingState&j;
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 4
180 3
181 3 RingGroup[i][0]=0; //停止振铃
182 3 RingGroup[i][1]=0; //释放资源
183 3 RingGroup[i][2]=0;
184 3 RingGroup[i][3]=0;
185 3 RingGroup[i][4]=0;
186 3 RingGroup[i][5]=0;
187 3 return 1; //设置停止振铃成功
188 3 }
189 2 }
190 1 return 0x2; //分机已经停止振铃
191 1 }
192
193 void RingTimeTick()
194 {
195 1 data UCHAR i,j;
196 1 idata WORD temp;
197 1
198 1 for(i=0;i<MaxNumAtRing;i++)
199 1 {//循环配置
200 2 if(RingGroup[i][0]==0)
201 2 {//没有振铃任务
202 3 continue;
203 3 }
204 2 else if(RingGroup[i][0]>RingTime)
205 2 {//振铃超时结束
206 3
207 3 j=0x01;
208 3 j=(j<<(RingGroup[i][1]));
209 3 j=j^0xff; //停止分机振铃
210 3 ExtTelRingState=ExtTelRingState&j;
211 3
212 3 LED=1;
213 3 RingGroup[i][0]=0; //释放资源
214 3 RingGroup[i][1]=0;
215 3 RingGroup[i][2]=0;
216 3 RingGroup[i][3]=0;
217 3 RingGroup[i][4]=0;
218 3 RingGroup[i][5]=0;
219 3 }
220 2 else
221 2 {//振铃过程中配置
222 3 temp=RingGroup[i][2];
223 3 temp=(temp<<8)+RingGroup[i][3];
224 3
225 3 if(temp==0)
226 3 {
227 4 temp=RingGroup[i][4];
228 4 temp=(temp<<8)+RingGroup[i][5];
229 4
230 4 if(temp==0)
231 4 {//完成一次响铃过程
232 5 RingGroup[i][0]++; //响铃次数加一
233 5
234 5 temp=RINGTIMELENGTH;
235 5 RingGroup[i][2]=temp>>8;
236 5 RingGroup[i][3]=temp; //设置振铃时间
237 5 temp=RINGQUIETTIMELENGTH;
238 5 RingGroup[i][4]=temp>>8;
239 5 RingGroup[i][5]=temp; //设置振铃间隔时间
240 5 }
241 4 else
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 5
242 4 {//间隔过程中
243 5 temp--;
244 5 LED=1;
245 5 RingGroup[i][4]=temp>>8;
246 5 RingGroup[i][5]=temp; //间隔时间递减
247 5
248 5 j=0x01;
249 5 j=(j<<(RingGroup[i][1]));
250 5 j=j^0xff; //将对应的位清零,产生间隔
251 5 ExtTelRingState=ExtTelRingState&j;
252 5 }
253 4 }
254 3 else
255 3 {//响铃过程中
256 4 temp=temp-1;
257 4 RingGroup[i][2]=temp>>8;
258 4 RingGroup[i][3]=temp; //振铃时间递减
259 4
260 4 LED=0;
261 4
262 4 j=0x01;
263 4 j=(j<<(RingGroup[i][1])); //将对应的位置一,产生振铃
264 4 ExtTelRingState=ExtTelRingState|j;
265 4 }
266 3 }
267 2 }
268 1 PORT=ExtTelRingState;
269 1 EnRingPort=0;
270 1 EnRingPort=1;
271 1 EnRingPort=0; //动作实现
272 1 }
273
274 /*
275 void ResourceWatch()
276 {
277 idata UCHAR i,j;
278
279 rs232write(0x11);
280
281 for(i=0;i<MaxNumAtRing;i++)
282 {
283 for(j=0;j<6;j++)
284 {
285 rs232write(RingGroup[i][j]);
286 }
287 rs232write(0xAA);
288 }
289 rs232write(0x22);
290 }
291 */
292 void OutsideTelRingCheck()
293 {
294 1 idata UCHAR i,j;
295 1 idata temp;
296 1
297 1 for(i=0;i<OUTSIDETELNUM;i++)
298 1 {//振铃检测(时间检测)
299 2 temp=OutsideTelRingNum[i][0];
300 2 temp=(temp<<8)+OutsideTelRingNum[i][1];
301 2 if(temp!=0)
302 2 {
303 3 if(temp<1000)
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 6
304 3 {
305 4 if(temp==50) //去抖动 150
306 4 {
307 5 OutsideTelRingNum[i][2]++;
308 5
309 5 //发送外线呼入消息
310 5 SendOutsideCallInMessage(i,OutsideTelRingNum[i][2]);
311 5 }
312 4 temp++;
313 4 OutsideTelRingNum[i][0]=temp>>8;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -