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

📄 rf2272.lst

📁 解码2272模拟程序,调试通过,需要者也可和我联系
💻 LST
字号:
C51 COMPILER V7.08   RF2272                                                                09/20/2007 18:03:19 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE RF2272
OBJECT MODULE PLACED IN RF2272.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE RF2272.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*头码时间4.7ms,每个码1.3ms,码长17ms,单片机晶振为12M时,一个周期为1us
   2          每个码均长为1300/4=325us ,time>325 and time <650时,bit =1
   3          time >100(干扰)and time <325时, bit=0; 
   4          */
   5          #include <my_89x51.h>
   6          
   7          #define uint unsigned int
   8          #define ulong unsigned long
   9          #define uchar unsigned char
  10          
  11          sbit RemPin  =   P3^3  ; 
  12          sbit LEDR =P1^3; 
  13          sbit LEDG =P1^4;
  14          uchar receive[3];//二位地址码+一位数据码
  15          
  16          
  17          
  18          //------------------------------------- sub functon ----------------------------------------------
  19          
  20          //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  21          void d1ms (uint ljh_in)    /*1mS延时函数*/
  22          {
  23   1       uint data ljh_i;
  24   1       uchar data ljh_j;
  25   1       for(ljh_i=0;ljh_i<ljh_in;ljh_i++){
  26   2       for(ljh_j=0;ljh_j<108;ljh_j++){
  27   3       _nop_(); _nop_();
  28   3       _nop_(); _nop_();
  29   3       _nop_(); _nop_();
  30   3       }
  31   2       }
  32   1      }
  33          //<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
  34          void ledg()
  35          {
  36   1                      d1ms(100);
  37   1                      LEDG=1;
  38   1                      d1ms(100);
  39   1                      LEDG=!LEDG;
  40   1                      d1ms(100);
  41   1                      LEDG=!LEDG;
  42   1                      d1ms(100);
  43   1                      LEDG=0;
  44   1      }
  45          //<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
  46          void ledr()
  47          {
  48   1                      d1ms(50);
  49   1                      LEDR=1;
  50   1                      d1ms(50);
  51   1                      LEDR=0;
  52   1                      d1ms(50);
  53   1                      LEDR=1;
  54   1                      d1ms(50);
  55   1                      LEDR=1;
C51 COMPILER V7.08   RF2272                                                                09/20/2007 18:03:19 PAGE 2   

  56   1                      d1ms(50);
  57   1                      LEDR=0;
  58   1      }
  59          //对接收的数据进行分析处理
  60          void RW_E2ROM()
  61          {       
  62   1              uchar i,j,temp,num,temp1;
  63   1              i2c_read(0xb0, 1, &num);
  64   1              j = 0xb1;
  65   1              for(i=0;i<num;i++)
  66   1              {
  67   2                      i2c_read(j, 1, &temp);
  68   2                      j++;
  69   2              }       
  70   1      ;
  71   1      
  72   1              temp1 = temp + 0x30; 
  73   1              i2c_write(0x2d, 1, &temp1);
  74   1      }
  75          
  76          //无线中断接收int 
  77          void RemIn(void) interrupt 2 using 1
  78          {
  79   1          unsigned char i,j;
  80   1          unsigned int temp;
  81   1      
  82   1              EA=0;
  83   1              TH0 = TL0 = 0;
  84   1         while (!RemPin); //等待高电平
  85   1          TR0=1;
  86   1          while (RemPin)  //等待低电平
  87   1              {if (TF0==1)  goto RemExit;}  //超时就退出;
  88   1          TR0=0;
  89   1          temp=TH0;
  90   1          temp=(temp<<8)+TL0;
  91   1      //    if (temp>6000 || temp<4000)   //判断同步码的宽度
  92   1          if (temp>3000 || temp<2000)   //判断同步码的宽度 6M晶振
  93   1          {
  94   2              temp=TH0;
  95   2                      goto RemExit;
  96   2          }
  97   1      //同步码检测成功
  98   1          for (i=0; i<3; i++) {//解 3*8=24 位码 
  99   2                  for (j=0; j<8; j++)
 100   2                  {
 101   3                      while (!RemPin);  //等待高电平
 102   3                      TH0=0;
 103   3                      TL0=0; 
 104   3                              TR0=1;
 105   3                      while (RemPin)  //等待低电平
 106   3                          {if (TF0==1) goto RemExit; }//超时就退出
 107   3                                      TR0=0;
 108   3                          temp=TH0;
 109   3                          temp=((temp<<8)+TL0);
 110   3      
 111   3      //              if (temp>400 && temp<600)
 112   3                      if (temp>200 && temp<300)//6m晶振
 113   3                      {
 114   4                          receive[i]=receive[i]<<1;
 115   4                          receive[i]=receive[i]+1; //保存 1
 116   4                      }
 117   3      //              else if (temp>100 && temp<234)
C51 COMPILER V7.08   RF2272                                                                09/20/2007 18:03:19 PAGE 3   

 118   3                      else if (temp>50 && temp<117)//6M晶振
 119   3                          {
 120   4                              receive[i]=receive[i]<<1;   //保存0
 121   4                          }
 122   3                          else goto RemExit;
 123   3                  }
 124   2              }
 125   1          temp=0;//在这里设置一个断点,运行到这里后看看receive里的三个字节数据就是解码的结果
 126   1      
 127   1          while ((receive[0] == 0xea)&&(receive[1] == 0xaa))
 128   1              ledg();
 129   1              RemExit:
 130   1              {
 131   2                  TR0=0;
 132   2                      EA=1;
 133   2              RemPin=1;
 134   2              TF0=0;
 135   2              return; 
 136   2              }
 137   1       
 138   1      }
 139          
 140          main()
 141          {
 142   1              P1 =0xff;
 143   1              P3 =0xff;
 144   1          RemPin=1;
 145   1          IT1=1;  //设定INT1的触发方式为脉冲负边沿触发
 146   1          EX1=1;  //打开INT1中断请求
 147   1          TMOD=0x01;
 148   1          EA=1;
 149   1              ledr();  
 150   1         while (1)
 151   1         {ledr();  
 152   2              RW_E2ROM();
 153   2         }
 154   1       //RemPin=1;
 155   1      }
 156          
 157          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    389    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       7
   IDATA SIZE       =   ----    ----
   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 + -