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

📄 allsubfun.lst

📁 用户可以在远端利用固定电话或移动电话发送DTMF双音多频信号,实现对近端电器设备的远程控制。
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.20   ALLSUBFUN                                                             05/31/2006 22:36:00 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ALLSUBFUN
OBJECT MODULE PLACED IN allsubfun.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE allsubfun.c ROM(COMPACT)

line level    source

   1          #include <allseting.h>
   2          
   3          /*******************全局变量*************************/
   4          
   5          uint  count ;
   6          uchar mimasave[5]   ={0,0,0,0,0};                                                        /*密码最大为10位*/
   7          uchar mimain[5] ={0,0,0,0,0};
   8          uchar mimatemp[5] = {0,0,0,0,0};
   9          uchar lingcount ;
  10          static uchar isd[16] = {ISD0,ISD1,ISD2,ISD3,ISD4,ISD5,ISD6,ISD7,ISD8,ISD9,ISD10,ISD11,ISD12,ISD13,ISD14,IS
             -D15};
  11          static uchar led[8]  = {0x81,0xb7,0xc2,0xa2,0xb4,0x98,0xb3,0x00};
  12          int jiadian[3] = {0,0,0};
  13          
  14          
  15          /****************中断设置***************************/
  16          
  17          void intset()
  18          {
  19   1      
  20   1              TMOD = 0x01 ;              /*定时器0 */
  21   1              TH0 = 0x3C ;               /*50MS定时*/
  22   1              TL0 = 0xB0 ;
  23   1              
  24   1                      
  25   1              EA = 1  ;                               /*开全局中断*/
  26   1      
  27   1              ET0 = 1 ;                       /*开定时器*/
  28   1              TR0 = 1 ;                               /*启动T0  */
  29   1              
  30   1              EX1 = 1 ;                               /*开中断1*/
  31   1              IT1 = 1 ;                               /*下跳沿*/
  32   1      
  33   1              PT0 = 1 ;                               /*定时0 高优先级*/
  34   1      }
  35          
  36          
  37          
  38          /******************* 全局时钟 **********************/
  39          
  40          
  41          void resettime(void)
  42          {
  43   1              count = 0 ;     
  44   1      }
  45          
  46          void stoptime(void)
  47          {
  48   1              TR0 = 0 ;
  49   1      }
  50          
  51          void int50ms(void) interrupt 1 
  52          {
  53   1                      uchar  i ;
  54   1      
C51 COMPILER V7.20   ALLSUBFUN                                                             05/31/2006 22:36:00 PAGE 2   

  55   1                      TH0 = 0x3C ;
  56   1                  TL0 = 0xB0 ;
  57   1                      count++ ;
  58   1              
  59   1               for(i = 0 ; i < 3 ; i++)
  60   1               {
  61   2                      if(jiadian[i] == 0xffff ) continue;
  62   2      
  63   2                      if(jiadian[i] == 0)
  64   2                              {
  65   3                                       switch(i)
  66   3                                       {
  67   4                                              case  0 : CONTROL0 = 0;
  68   4                                              break;
  69   4                                              case  1 : CONTROL1 = 0;
  70   4                                              break;
  71   4                                              case  2 : CONTROL2 = 0;
  72   4                                              break;
  73   4      
  74   4                                       }
  75   3                              }
  76   2                      else jiadian[i] = jiadian[i] - 1 ;
  77   2                }
  78   1      
  79   1      }
  80          
  81          
  82          /********************delay**************************/
  83          
  84          void delay(uint time)
  85          {
  86   1        while(time--)
  87   1         _nop_();
  88   1      }
  89          /*******************系统初始化**********************/
  90          
  91          void systeminit(void)
  92          {
  93   1              inithome();
  94   1              GETCALL = 0 ;     /*挂机*/      
  95   1              MTTEST = 1 ;
  96   1              LEDCON  = 0;
  97   1          isdinit();
  98   1              intset();
  99   1              KEYOK;
 100   1              r24c01(0x06,&lingcount,1);              
 101   1                                      
 102   1      }
 103          
 104          /******************* 铃声检测 **********************/
 105          
 106          void waitring(void)                             /*等待振铃*/
 107          {       
 108   1              uchar ling ;
 109   1      
 110   1              ling = 0 ;
 111   1              RINGTEST = 1 ;
 112   1      
 113   1              while(ling < lingcount)                                            /*10次铃声*/
 114   1              {
 115   2                      while(RINGTEST == 1 );                             /*4s断*/
 116   2                      delay(1000);
C51 COMPILER V7.20   ALLSUBFUN                                                             05/31/2006 22:36:00 PAGE 3   

 117   2      
 118   2                      if(RINGTEST == 0 )                                 
 119   2                              ling++;         
 120   2                      while(RINGTEST == 0 );                             /*1s通*/
 121   2                                                                              
 122   2              }
 123   1      
 124   1                 GETCALL = 1 ;                               /*摘机*/
 125   1                      
 126   1      }
 127          /********************铃声次数*********************/
 128          
 129          uchar lingchang(void)
 130          {
 131   1              uchar temp;
 132   1              uchar temp2;
 133   1              temp2 = 0 ;
 134   1      
 135   1              while(get8870() != MTJ)
 136   1              {
 137   2                       if(temp == 16)
 138   2                              return 3;
 139   2                      if(temp == MT0)
 140   2                              temp = 0 ;
 141   2      
 142   2                      if(temp > 10)
 143   2                              {
 144   3                                       isdplay(14, 1);
 145   3                                       return 0;
 146   3                              }
 147   2                      temp2 = temp2*10 + temp;
 148   2      
 149   2                      if( temp2 > 15 )
 150   2                         {
 151   3                                isdplay(14, 1);
 152   3                                return 0 ;
 153   3                         }
 154   2              }
 155   1      
 156   1              lingcount =  temp2;
 157   1              w24c01(0x06,&lingcount,1);
 158   1              isdplay(13,1);
 159   1              return 1 ;
 160   1      }                       
 161          
 162          
 163          /******************* 8870 捕获*********************/
 164          
 165          
 166          uchar  get8870(void)
 167          {        
 168   1              bit flag ;
 169   1              flag = 0 ;
 170   1      
 171   1              MTTEST = 1 ;
 172   1              
 173   1              resettime();
 174   1                                                      /*检测上升沿*/
 175   1              SETMTDATAPORT ;
 176   1              
 177   1               
 178   1              while(MTTEST == 1 )                                
C51 COMPILER V7.20   ALLSUBFUN                                                             05/31/2006 22:36:00 PAGE 4   

 179   1              ;
 180   1              while(MTTEST == 0 )
 181   1                      {       
 182   2                              if(count > 400 )
 183   2                                      {       flag = 1  ;              /*20s超时挂机*/
 184   3                                              break ;
 185   3                                      }
 186   2                      }
 187   1      
 188   1              if(flag) return 16 ;
 189   1                              
 190   1              return  MTDATA;
 191   1      }
 192          
 193          uchar isdwait8870()
 194          {
 195   1              uchar temp ;
 196   1              temp = get8870();
 197   1              stopisd();
 198   1              return temp;
 199   1      }                       
 200          
 201          
 202          /******************* ISD 2560 *********************/
 203          
 204          
 205          
 206          void isdinit(void)
 207          {
 208   1              ISDCE  = 1 ;
 209   1              ISDPR  = 1 ;
 210   1              ISDEOM = 1 ;
 211   1              ISDPD  = 1  ;      /*不启动*/
 212   1              
 213   1              return ;
 214   1      }
 215          
 216          
 217          void isdplay(uchar num,bit wait)
 218          {       
 219   1              ISDPD = 0 ;
 220   1              ISDPR = 1 ;
 221   1              ISDCE = 1 ;
 222   1              ISDSEND(isd[num]);
 223   1              delay(5);
 224   1              ISDCE = 0 ;
 225   1              delay(50000);
 226   1              ISDCE = 1 ;                                      
 227   1              ISDEOM = 1 ;
 228   1      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -