📄 phone.lst
字号:
219 1 if ((flag == 0)&&(Counter0 < 30))
220 1 Counter0 ++ ;
221 1
222 1 if ((flag == 1)&&(Counter0 > 0))
223 1 Counter0 -- ;
224 1
225 1 if (Counter0 == 30)
226 1 {
227 2 Counter0 = 20 ;
228 2 if (flag != Check0)
229 2 {
230 3 Check0 = flag ;
231 3 return TRUE ;
232 3 }
233 2 else return FALSE;
234 2 }
235 1 else if (Counter0 == 0)
236 1 {
237 2 Counter0 = 20 ;
238 2 Check0 = 1;
239 2 return FALSE;
240 2 }
241 1 else
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 5
242 1 return FALSE ;
243 1 }
244
245 /***************************************
246 检测有无DTMF信号 DV 程序
247 返回 TRUE :有
248 FALSE:无
249 信号先低后高
250 ***************************************/
251 uchar check_DV(void) //
252 {
253 1 uchar flag ;
254 1 flag = DTMF_CHK; //check DV
255 1
256 1 if ((flag == 1)&&(Counter1<30))
257 1 Counter1 ++ ;
258 1
259 1 if ((flag == 0)&&(Counter1 >0))
260 1 Counter1 -- ;
261 1
262 1 if (Counter1 == 30)
263 1 {
264 2 Counter1 = 20 ;
265 2 if (flag != Check1)
266 2 {
267 3 Check1 = flag ;
268 3 return TRUE ;
269 3 }
270 2 else return FALSE ;
271 2 }else if (Counter1 == 0)
272 1 {
273 2 Counter1 = 20 ;
274 2 Check1 = 0 ;
275 2 return FALSE ;
276 2 }
277 1 else return FALSE ;
278 1 }
279
280 /***************************************
281 检测有无掉线信号 DXC 程序
282 返回 TRUE :有
283 FALSE:无
284 ***************************************/
285
286 uchar check_DXC(void) //
287 {
288 1 uchar flag ;
289 1 flag = DX_CHK ; //check DXC
290 1
291 1 if ((flag == 1)&&(Counter3<30))
292 1 Counter3 ++ ;
293 1
294 1 if ((flag == 0)&&(Counter3 >0))
295 1 Counter3 -- ;
296 1
297 1 if (Counter3 == 30)
298 1 {
299 2 Counter3 = 20 ;
300 2 if (flag)
301 2 {
302 3 return FALSE ;
303 3 }
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 6
304 2 }
305 1 else if (Counter3 == 0)
306 1 {
307 2 Counter3 = 20 ;
308 2 if (!flag)
309 2 {
310 3 return TRUE;
311 3 }
312 2 }
313 1 else
314 1 return FALSE ;
315 1
316 1 /*
317 1 if (Counter3 == 30)
318 1 {
319 1 Counter3 = 20 ;
320 1 if(flag != Check3)
321 1 {
322 1 Check3 = flag ;
323 1 return TRUE ;//
324 1 }
325 1 else return FALSE ;
326 1 }
327 1 else if(Counter3 == 0)
328 1 {
329 1 Counter3 = 20 ;
330 1 Check3 = 0 ;
331 1 return FALSE ;
332 1 }
333 1 else return FALSE ;
334 1 */
335 1 }
336
337
338 /***************************************
339 函数名:Read_KeyBoard
340 功能:返回按键值
341 参数:无
342 返回值:键值
343 备注:无键按下返回0Xff,有键时按下键从左至右,由上至下返回0,1,2.....15
344 ***************************************/
345 uchar Read_KeyBoard(void)
346 {
347 1 uchar row,col,mask;
348 1 uchar key_value;
349 1 row = 0;
350 1 col = 0;
351 1 mask = 0x0e;
352 1 if (!KeyBoard_If_Hit())
353 1 {
354 2 return(NoneKey);
355 2 }
356 1 /* get row */
357 1 delay(1250); //"delay 10ms,去抖"
358 1 KEYWRITE(mask);
359 1
360 1 while(((KEYIO&KEYROWMASK)==KEYROWMASK)&&(row<4))
361 1 {
362 2 ++row;
363 2 mask <<= 1;
364 2 mask |= 1;
365 2 KEYWRITE(mask);
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 7
366 2 }
367 1 /* get col */
368 1 KEYREAD(key_value);
369 1
370 1 mask=0x08;
371 1 while(((key_value|mask)!=0x0f)&&(col<4))
372 1 {
373 2 ++col;
374 2 mask>>=1;
375 2 }
376 1
377 1 key_value = 0;
378 1 KEYWRITE(key_value);
379 1
380 1 while(1)
381 1 {
382 2 if((KEYIO&KEYROWMASK)!=KEYROWMASK)//"有按键"
383 2 continue;
384 2 delay(1250);//8
385 2 if((KEYIO&KEYROWMASK)!=KEYROWMASK)//"有按键"
386 2 continue;
387 2 break;
388 2 }
389 1
390 1 key_value=row*4+col;
391 1
392 1 return(key_value);
393 1 }
394
395 /***************************************
396 函数名:KeyBoard_If_Hit
397 功能:检测是否有按键
398 参数:无
399 返回值:是否有按键
400 备注:判断是否有键按下,有时返回1,无时返回0
401 *****************************************/
402 bit KeyBoard_If_Hit(void)
403 {
404 1 uchar a = 0;
405 1 KEYWRITE(a);
406 1 delay(1);
407 1 KEYREAD(a);
408 1 if (a == 0x0f)
409 1 {
410 2 return(0);
411 2 }
412 1 delay(625); /* delay 10ms */ //20
413 1 if (a == 0x0f)
414 1 {
415 2 return(0);
416 2 }
417 1 return(1);
418 1 }
419
420
421 void rev_wireless(void) interrupt 0 using 1
422 {
423 1 if (!WIRELESS_FG)
424 1 {
425 2 WIRELESS_FG = 1;
426 2 wireless = P0 & 0X0F;
427 2 }
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 8
428 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 620 ----
CONSTANT SIZE = 46 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 8
IDATA SIZE = 5 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -