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

📄 main.lst

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  06/25/2007 21:09:03 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND

line level    source

   1          
   2          /////////////////////////////////////////////////////////
   3          #include <absacc.h>
   4          #include <reg51.h>
   5          #include<DATA_define.h>
   6          #include<Send_Receive.h>
*** WARNING C280 IN LINE 237 OF SEND_RECEIVE.H: 'i': unreferenced local variable
*** WARNING C280 IN LINE 239 OF SEND_RECEIVE.H: 'j': unreferenced local variable
   7          #include<Buffer.h>
   8          #include<set.h>
   9          #include<display.h>
  10           void Set_INFO(void)
  11           {
  12   1              INFO[0]=0;
  13   1              INFO[1]=2;
  14   1              INFO[2]=5;
  15   1              INFO[3]=0;
  16   1       
  17   1       }
  18          /**** 主程序
  19          *****/
  20          ////////////////////////////////////////////////////////////
  21          //5ms定时
  22          void timer0( void ) interrupt 1
  23          {
  24   1                      
  25   1              TR0=0;
  26   1              ET0=0;
  27   1      
  28   1              TH0=0xee;               // 载入计数初值
  29   1              TL0=0x00;
  30   1              output_sel = 0xf0; /*初值,令数码管驱动位无效,指示灯全灭*/
  31   1       //     TR0=1;                  // 开时钟,保证计时精确
  32   1      
  33   1              Wireless_int0();
  34   1              d_time++;               // 每5ms对超时标志加1 /%
  35   1              d_time=d_time%200;//0~199循环计数
  36   1       
  37   1              if(d_time==D_T)
  38   1              {
  39   2                      state_flag=C21a;
  40   2                      Rbuffer_point=1;
  41   2                      state=1;
  42   2              }//判定传输中断,处理
  43   1      
  44   1      
  45   1              
  46   1              if(d_time==RES_TIME)
  47   1              {
  48   2                      Adrchange_flag=1;
  49   2                      d_time=0;
  50   2      
  51   2      
  52   2                                      if(Adrchange_flag)      //掉线
  53   2                      {       
C51 COMPILER V7.50   MAIN                                                                  06/25/2007 21:09:03 PAGE 2   

  54   3      
  55   3                              bus_control_count++;
  56   3                              bus_control_count=bus_control_count%10;
  57   3                              Set_address(bus_control_count);
  58   3                              TI=1;
  59   3                              Adrchange_flag=0;
  60   3                      }
  61   2              }//判定掉线,处理
  62   1      
  63   1      //      fir_dis=(Rbuffer[11]-'0')*16+(Rbuffer[12]-'0');
  64   1      //      sec_dis=(Rbuffer[13]-'0')*16+(Rbuffer[14]-'0');
  65   1      //      thi_dis=(Rbuffer[15]-'0')*16+(Rbuffer[16]-'0');
  66   1      //      for_dis=(Rbuffer[17]-'0')*16+(Rbuffer[18]-'0');
  67   1              Display();//显示信息
  68   1              TR0=1;
  69   1              ET0=1;
  70   1      }
  71          ///////////////////////////////////////////////////////////
  72          
  73          /////////////////////////////////////////////////////
  74          //主系统的发送接收程序
  75          void Receive_interr(void) interrupt 4//一次串行发送/接收完成后,发出中断申请
  76          {       unsigned char i;
  77   1              if(RI)///接收完毕
  78   1              {
  79   2                      RI=0;//清除接收中断
  80   2                      fir_dis=13;     ///MARK
  81   2      
  82   2                      d_time=0;//开始计时
  83   2                      FSM();//有限状态机形式的接收数据
  84   2                      if(buffer_flag)//接收完毕
  85   2                      {
  86   3      
  87   3      
  88   3      ////////////////////////////////////////////////
  89   3                              //保存info
  90   3                                      if(Get_ADR()==MOTOR_ADR)
  91   3                                      {
  92   4                                              for(i=0;i< Get_LENGTH()*2;i++)
  93   4      
  94   4                                              MOTOR_INFO_DOWN[i]=Rbuffer[i+11];
  95   4                                      }
  96   3                                      else if(Get_ADR()==CUP_ADR)
  97   3                                      {
  98   4                                              for(i=0;i<Get_LENGTH()*2;i++)
  99   4      
 100   4                                              CUP_INFO_DOWN[i]=Rbuffer[i+11];
 101   4                                      }
 102   3                                      else if(Get_ADR()==DIST_ADR)
 103   3                                      {       
 104   4                                              for(i=0;i<Get_LENGTH()*2;i++)
 105   4      
 106   4                                              DIST_INFO_DOWN[i]=Rbuffer[i+11];
 107   4                                      }
 108   3                                      else if(Get_ADR()==TOP_ADR)
 109   3                                      {
 110   4                                              
 111   4                                      }
 112   3                      
 113   3                                ////////////////////////////////////////
 114   3      
 115   3                              receivedone_flag=1;
C51 COMPILER V7.50   MAIN                                                                  06/25/2007 21:09:03 PAGE 3   

 116   3                              ES=0;
 117   3                              while(d_time<=4);//延时20ms      ????????????????????????????????????
 118   3      /////////////////////////////////////////////////////////////////////////////
 119   3      
 120   3                              bus_control_count++;
 121   3                              bus_control_count=bus_control_count%10;
 122   3                              Set_address(bus_control_count); //
 123   3                              Set_INFO();
 124   3                              Set_BUF();//把信息放入带发送信息
 125   3                              receivedone_flag=0; ///标志复位
 126   3                              TI=0;
 127   3                              Sbuffer_point=0;
 128   3                              SBUF=Sbuffer[0];/////////////
 129   3                              Sbuffer_point++;
 130   3                              ES=1;
 131   3      //////////////////////////////////////////////////////////////////////////////                   
 132   3      
 133   3      
 134   3                      
 135   3                      }//当接收完毕时,发送反馈信息
 136   2      
 137   2      
 138   2      
 139   2              }
 140   1              else if(TI)     //发送完毕
 141   1              {
 142   2      
 143   2                      if(feedbackdone_flag) //当镇发送完毕时复位,等待下一次接收
 144   2                      {
 145   3                              feedbackdone_flag=0;
 146   3                              TI=0;
 147   3                      }
 148   2                      else                                            //当没有发送完毕时,继续发送
 149   2                      {
 150   3                              REN=0;///关闭串行接收
 151   3                              TI=0;    //
 152   3                              fir_dis=14;
 153   3                       
 154   3                              if(Sbuffer[Sbuffer_point]!=EOI)
 155   3                              {
 156   4                              
 157   4                                      SBUF=Sbuffer[Sbuffer_point];
 158   4                                      Sbuffer_point++;
 159   4                              
 160   4                              }
 161   3                              else 
 162   3                              {
 163   4                                      ES=0;
 164   4                                      SBUF=Sbuffer[Sbuffer_point];
 165   4                                      Sbuffer_point=0;
 166   4                                      REN=1;//运行串行接收
 167   4                                      
 168   4                                      feedbackdone_flag=1;
 169   4      //////////////////////////////////////////////////////////////
 170   4                               //for_dis=bus_control_count;
 171   4                               bus_control_count++;
 172   4                               bus_control_count=bus_control_count%10;
 173   4      //                       if(bus_control_count%2==0)
 174   4      //                       bus_control_count--;
 175   4                               Set_address(bus_control_count);
 176   4                               ES=1;
 177   4      ////////////////////////////////////////////////////////////////////
C51 COMPILER V7.50   MAIN                                                                  06/25/2007 21:09:03 PAGE 4   

 178   4      
 179   4      
 180   4      
 181   4      
 182   4                              }       
 183   3                              d_time=0;
 184   3      
 185   3                      }
 186   2              }
 187   1      
 188   1      
 189   1              
 190   1      }
 191          //////////////////////////////////////////////////////
 192          
 193          
 194          
 195          /////////////////////////////////////////////////////////////////
 196          main()
 197          {
 198   1      //* 单片机系统初始化 *
 199   1          P1=0XFF;
 200   1          P3=0XFF;
 201   1          //** 中断工作寄存器初始化 **
 202   1              InitWireless();
 203   1      
 204   1      
 205   1         
 206   1          //** 定时器工作寄存器初始化 **
 207   1              PT1=1;//优先级设置
 208   1          TR1=1;
 209   1              
 210   1      
 211   1              //////////////////////////////
 212   1              SCON=0x40;//工作方式1
 213   1              TMOD=0X21;
 214   1              TH0=0xee;
 215   1              TL0=0x00;
 216   1              TH1=0xfd;//
 217   1              TR1=1;
 218   1              ET1=0;
 219   1              ES=1;
 220   1              EA=1;
 221   1              ET0=1;
 222   1              TR0=1;/*开中断*/
 223   1              PS=0;  //串口工作优先级低
 224   1              TI=1;
 225   1              PT0=1;//5ms定时器中断优先级高
 226   1              Set_BUF();
 227   1              
 228   1      
 229   1      //      RESET_8255=0;//复位无效
 230   1      //      ADDR_8255_control=0x80;//写方式字
 231   1      
 232   1              ///////////////8255控制字///////
 233   1      
 234   1      
 235   1      
 236   1      /////////////////////////////////////////       
 237   1      //* 主循环,本例中,在T0中断服务程序未被执行的空余时间里,处理机在以下程序中不断循环 *
 238   1              while(1)
 239   1              {  
C51 COMPILER V7.50   MAIN                                                                  06/25/2007 21:09:03 PAGE 5   

 240   2                      
 241   2                       Wireless_while();
 242   2                }
 243   1      
 244   1                
 245   1      }
 246          
 247          ////////////////////////////////////////////////////////
 248          
 249          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2590    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =    185    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     73       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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