📄 main.lst
字号:
177 1 Counter10ms = 0;
178 1 Flag_100ms = 0;
C51 COMPILER V8.08 MAIN 08/05/2008 10:21:25 PAGE 4
179 1
180 1 Read_LowST = 0;
181 1 Read_SingalST = 0;
182 1 Read_PlowST = 0;
183 1 Dailtimes = 0;
184 1
185 1 pinnop11 = 0;
186 1 pinnop12 = 0;
187 1 pinnop13 = 0;
188 1 pinnop14 = 0;
189 1 pinnop15 = 0;
190 1 pinnop16 = 0;
191 1 pinnop17 = 1;
192 1 pinnop37 = 0;
193 1
194 1 TR0 = 1;
195 1 EA = 1;
196 1 }
197
198 void Reset_Check(void)
199 {
200 1 uchar i;
201 1
202 1 for(i=0;i<TrkTal;i++)
203 1 {
204 2 CHECK_Reg[i] = 0;
205 2 TimerCount[i] = 0;
206 2 }
207 1 FlagP32 = 0;
208 1 FlagP10 = 0;
209 1 SYSPINSTA = 0;
210 1 }
211 /************************************************************************
212 subroutine name: Singal_Scan
213 input variable: P3口为信号音电平输入口,共2路信号
214 output variable: SYSPINSTA
215 description: 主要扫描信号忙音和回铃
216 *************************************************************************/
217 void Singal_Scan(void)
218 {
219 1 uchar i;
220 1 uint temp;
221 1 uchar GROUP_ST_ANAL,GROUP_ST_NEW;
222 1
223 1 GROUP_ST_NEW = P3>>3;
224 1 GROUP_ST_ANAL=GROUP_ST_NEW^Read_SingalST;
225 1 Read_SingalST = GROUP_ST_NEW;
226 1
227 1 for(i=0;i<2;i++)
228 1 {
229 2 temp = CHECK_Reg[i]; //为了节省时间使用内部变量
230 2 if( GROUP_ST_ANAL & 0x01 )
231 2 {
232 3 if(temp>(EXT_SCAN_ON+ResRingTone_ContinueC)) //表示接收到4秒电平
233 3 {
234 4 if((TimerCount[i]&0xf0)==0x20) //mode =2
235 4 {
236 5 TimerCount[i]++;
237 5 TimerCount[i]+= 0x10; //mode =3
238 5 if((TimerCount[i]&0x0f)>ResRingperiod)
239 5 {
240 6 SYSPINSTA |= 3<<(2*i); //表示接收到回铃
C51 COMPILER V8.08 MAIN 08/05/2008 10:21:25 PAGE 5
241 6 CHECK_Reg[i]=0;
242 6 TimerCount[i] = 0;
243 6 continue; //检测到后直接退出
244 6 }
245 5 }
246 4 else
247 4 {
248 5 TimerCount[i] = 0x30;
249 5 }
250 4 }
251 3 else if(temp>(EXT_SCAN_ON+ResRingTone_ContinueO))
252 3 {
253 4 if((TimerCount[i]&0xf0)==0x30) //mode = 3
254 4 {
255 5 TimerCount[i]&= 0x0f;
256 5 TimerCount[i]+= 0x20; //mode =2
257 5 }
258 4 else
259 4 {
260 5 TimerCount[i] = 0x20;
261 5 }
262 4 }
263 3 else if(temp>(EXT_SCAN_ON+BusyTone_Continue))
264 3 {
265 4 if((TimerCount[i]&0xf0)==0x10)
266 4 {
267 5 TimerCount[i]++;
268 5 if((TimerCount[i]&0x0f)>Busyperiod*2)
269 5 {
270 6 SYSPINSTA |= 2<<(2*i); //表示接收到信号
271 6 TimerCount[i] = 0;
272 6 CHECK_Reg[i] = 0;
273 6 continue; //检测到后直接退出
274 6 }
275 5 }
276 4 else
277 4 {
278 5 TimerCount[i] = 0x10;
279 5 }
280 4 }
281 3 else
282 3 {
283 4 TimerCount[i] = 0;
284 4 }
285 3 CHECK_Reg[i] = EXT_SCAN_ON; //重新启动检测计数
286 3 }
287 2 else
288 2 {
289 3 if( CHECK_Reg[i] >=EXT_SCAN_ON)
290 3 CHECK_Reg[i]++;
291 3 }
292 2 GROUP_ST_ANAL = GROUP_ST_ANAL >>1;
293 2 }
294 1 }
295
296 /*********************************************************************************
297 subroutine name: PLOW_Scan
298 input variable: /
299 output variable: SYSPINSTA
300 description: 主要判断脚P32是否到达预定的周期数
301 *********************************************************************************/
302 void PLOW_Scan(void)
C51 COMPILER V8.08 MAIN 08/05/2008 10:21:25 PAGE 6
303 {
304 1 uchar GROUP_ST_ANAL,GROUP_ST_NEW;
305 1
306 1 GROUP_ST_NEW = P3&0x04;
307 1 GROUP_ST_NEW >>= 2;
308 1 GROUP_ST_ANAL=GROUP_ST_NEW^Read_PlowST;
309 1 Read_PlowST = GROUP_ST_NEW;
310 1
311 1 if( GROUP_ST_ANAL & 0x01 )
312 1 {
313 2 CHECK_Reg[2] = EXT_SCAN_ON;
314 2 if( EXT_SCAN_PRI )
315 2 CHECK_Reg[2]++;
316 2 else
317 2 goto NO_PRI;
318 2 }
319 1 else
320 1 {
321 2 if( CHECK_Reg[2] >EXT_SCAN_ON)
322 2 {
323 3 if( CHECK_Reg[2] >EXT_SCAN_LEN )
324 3 {
325 4 NO_PRI: if( (GROUP_ST_NEW&0X01)==0)
326 4 {
327 5 TimerCount[2]++;
328 5 GROUP_ST_NEW =P3;
329 5 GROUP_ST_NEW = ~GROUP_ST_NEW;
330 5 GROUP_ST_NEW &=0x03;
331 5 GROUP_ST_NEW++;
332 5 if(TimerCount[2]>=GROUP_ST_NEW) //如果P32收到低,查看是否收到P3031个数字
333 5 {
334 6 SYSPINSTA |=0x40; //收到就第5位为1
335 6 TimerCount[2]= 0;
336 6 }
337 5 }
338 4 CHECK_Reg[2] = EXT_SCAN_OFF;
339 4 }
340 3 else
341 3 {
342 4 CHECK_Reg[2]++;
343 4 }
344 3 }
345 2 else
346 2 {
347 3 CHECK_Reg[2] = EXT_SCAN_OFF;
348 3 }
349 2 }
350 1 }
351
352 /********************************************************************************
353 subroutine name: Low_Scan
354 input variable: /
355 output variable: SYSPINSTA
356 description: 主要判断脚P35,P10电平
357 ********************************************************************************/
358 void Low_Scan(void)
359 {
360 1 uchar i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -