⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phone.lst

📁 拨号程序源码.利用CPU是8位单片机. 拨号芯片为HT9200.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -