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

📄 getmain.lst

📁 用户可以在远端利用固定电话或移动电话发送DTMF双音多频信号,实现对近端电器设备的远程控制。
💻 LST
字号:
C51 COMPILER V7.20   GETMAIN                                                               06/09/2006 21:54:43 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE GETMAIN
OBJECT MODULE PLACED IN getmain.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE getmain.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  <regx52.h>
   2          
   3          #define  REDUSER          0x09     
   4          
   5          sbit   control1 = P0^0 ;
   6          sbit   control2 = P0^1 ;
   7          sbit   control3 = P0^2 ;
   8          
   9          
  10          unsigned char  redcode[4];
  11          
  12          bit            reddata   ;                         /*读数据标志*/
  13          bit            firstcode ;            /*引导码标志*/
  14          bit            getcode   ;
  15          
  16          void setred(void)
  17          {
  18   1              TMOD = 0x01;
  19   1      
  20   1              TH0 = 0 ;
  21   1              TL0 = 0 ;
  22   1              TR0 = 1 ;
  23   1      
  24   1              EA  = 1 ;
  25   1              ET0 = 1 ;
  26   1              EX0 = 1 ;
  27   1              IT0 = 1 ;
  28   1              
  29   1              reddata = 0 ;
  30   1              firstcode = 0 ;
  31   1              getcode = 0 ;
  32   1      }
  33          
  34          void sethome(void)
  35          {
  36   1                      control1 = 0 ;
  37   1                      control2 = 0 ;
  38   1                      control3 = 0 ;
  39   1      }
  40          void int_t0(void) interrupt 1 
  41          {
  42   1              
  43   1              TH0 = 0 ;
  44   1              TL0 = 0 ;
  45   1              reddata   = 0 ;
  46   1              firstcode = 0 ;
  47   1      
  48   1      }
  49          
  50          void int_ex0(void) interrupt 0 
  51          {
  52   1              static unsigned char num ;
  53   1              static unsigned char wei;
  54   1      
  55   1      
C51 COMPILER V7.20   GETMAIN                                                               06/09/2006 21:54:43 PAGE 2   

  56   1              if(reddata == 0)
  57   1              {                                                                  /*引导码判断*/
  58   2      
  59   2                      if( firstcode == 0 )
  60   2                              {
  61   3                                      firstcode = 1 ;
  62   3                              }
  63   2                      else 
  64   2                              {
  65   3                                      if( TH0 >= 0x2B && TH0 <= 0x4E  )
  66   3                                                      {
  67   4                                                              reddata    = 1 ;
  68   4                                                              num = 0 ;
  69   4                                                              wei = 0 ;
  70   4                                                              getcode = 0 ;
  71   4                                                      }
  72   3      
  73   3                                      firstcode = 0 ; 
  74   3                              }
  75   2      
  76   2               }
  77   1               else
  78   1               {                                                                      /*代码判断*/
  79   2                              
  80   2                      if( TH0 > 0x0C)    /*大于3MS出错*/
  81   2                      {       
  82   3                              reddata = 0 ;
  83   3                              num = 0 ;
  84   3                              wei = 0 ;
  85   3                      }
  86   2                      else if(TH0 >= 0x07 )  /*大于1.8MS小于3MS  为1 */ 
  87   2                                {
  88   3                                              redcode[num] >>= 1 ;
  89   3                                              redcode[num] |= 0x80;
  90   3                                              wei++ ; 
  91   3                                }
  92   2                                       else if (TH0 >= 0x03)   /*大于0.8小于1.8MS 为0*/
  93   2                                               {
  94   3                                                              redcode[num] >>= 1 ;
  95   3                                                              redcode[num] &= 0x7f ;
  96   3                                                              wei++ ;
  97   3                                               }
  98   2                                               else 
  99   2                                               {                                                       /*出错*/
 100   3                                                      reddata = 0 ;
 101   3                                                      num     = 0 ;
 102   3                                                      wei     = 0 ;
 103   3                                               }
 104   2      
 105   2                      if(wei == 8 ) 
 106   2                      {                                          /*转下一个8位码*/
 107   3                              wei = 0 ;
 108   3                              num++;
 109   3                      }
 110   2                      
 111   2                      if(num == 4) 
 112   2                      {                                          /*接收完毕*/
 113   3                         wei = 0 ;
 114   3                         num = 0 ;
 115   3                         reddata = 0 ;
 116   3      
 117   3                         if( (redcode[0] == ~redcode[1]) && (redcode[2] == ~redcode[3]))               /*校验收到的码*/
C51 COMPILER V7.20   GETMAIN                                                               06/09/2006 21:54:43 PAGE 3   

 118   3                                      getcode = 1 ;
 119   3      
 120   3                      }               
 121   2      
 122   2               }
 123   1               
 124   1      
 125   1              TH0 = 0 ;
 126   1              TL0 = 0 ;
 127   1              return;
 128   1      }
 129          
 130          void main(void)
 131          {
 132   1              setred();
 133   1              sethome();
 134   1              while(1)
 135   1              {
 136   2                      if(getcode)
 137   2                      {
 138   3                              if(redcode[0] == REDUSER)
 139   3                                      {
 140   4                                              switch(redcode[2])
 141   4                                              {
 142   5                                                      case 0 :control1 = 1 ;
 143   5                                                              break;
 144   5                                                      case 1 :control2 = 1 ;
 145   5                                                              break;
 146   5                                                      case 2 :control3 = 1 ;
 147   5                                                              break;
 148   5                                                      case 3 :control1 = 0 ;
 149   5                                                              break;
 150   5                                                  case 4 :control2 = 0 ;
 151   5                                                              break;
 152   5                                                      case 5 :control3 = 0 ;
 153   5                                                              break;
 154   5                                              }
 155   4                                                      getcode = 0 ;
 156   4                                      }               
 157   3                      }
 158   2              }
 159   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    283    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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