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

📄 code.lst

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 1   


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

line level    source

   1          /*******************************************************************************************
   2          科创四第15小组FSK通信控制程序
   3          
   4          此乃连着本地主系统的模块的控制程序
   5          /*******************************************************************************************/
   6          #include <reg51.h>
   7          #include <intrins.h>
   8          #include <absacc.h>
   9          #include "set.h"
*** WARNING C235 IN LINE 183 OF SET.H: parameter 1: different types
  10          
  11          #define SB 16 //sent bytes      一个数据包里的payload字节数
  12          
  13          sbit retest=P2^0;
  14          int trsec;
  15          uchar jj=0;
  16          uchar r_flag=1;// flag of receiving     指示芯片处于接受状态的flag
  17          uchar retrieving_flag=0;  //高则指示单片机从芯片取数据的那段时间
  18          
  19          code RFConfig RxTxConf =
  20          {
  21           10,
  22           0x01,
  23           0x2c, 
  24           0x44, 
  25           0x10, 
  26           0x10, 
  27           0xcc, 0xcc, 0xcc,0xcc,    // 4 bytes address
  28           0x5c 
  29          };
  30          // The content of this struct is nRF905's initialize data.初始化数据
  31          // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
  32          // RX TX Payload Width is SB Bytes;Disable Extern Clock;Fosc=16MHZ
  33          // 8 Bits CRC And enable
  34          
  35          //四个按键对应的动作
  36          Key1()//
  37          {
  38   1                trsec = 410;
  39   1      }
  40          Key2()//
  41          {         uchar i,flag=1;
  42   1      
  43   1       CSN=0;PB8255=PB;
  44   1              SpiWrite(RC);
  45   1        for (i=0;i<10;i++) // Write configration words  写放配置字
  46   1       {
  47   2        temp.buf[i]=SpiRead();
  48   2       }
  49   1       CSN=1; PB8255=PB;
  50   1       for(i=0;i<10;i++)
  51   1       {
  52   2              if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
  53   2       }
  54   1       sec_dis=flag;
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 2   

  55   1      }
  56          Key3()//
  57          {  
  58   1                      int i;
  59   1                      for(i=0;i<SB;i++)
  60   1                      TxBuf[i]=i+1;
  61   1                      SetTxMode(); // Set Tx Mode
  62   1                      //for (i=0;i<SB;i++) TxData(TxBuf[i]);
  63   1                      Delay(100);
  64   1                      
  65   1              TxPacket();    // Transmit Tx buffer data
  66   1                      SetRxMode();
  67   1         
  68   1      }
  69          Key4()//
  70          
  71          {          
  72   1                      trsec   = 0;  SetRxMode();
  73   1      }
  74          
  75          
  76          /*
  77          void Resend(void)
  78          {
  79                  int i;
  80                  SetTxMode();
  81                  for(i=0;i<SB;i++)
  82                  TxBuf[i]=RxBuf[i];
  83                  TxPacket();
  84                   
  85          }  */
  86          /**** T0时钟中断服务程序
  87                  在本例中,每5ms被执行一次
  88          *****/
  89          
  90          timer0() interrupt 1 using 0         
  91          {
  92   1      //EA=0;
  93   1              int i;
  94   1              /* 重新对计数器赋初值,并启动定时计数 */
  95   1              TH0=V_TH0;
  96   1          TL0=V_TL0;
  97   1          TR0=1;
  98   1          
  99   1          if(p_counter<30) p_counter++;
 100   1      
 101   1              /* 检测到按键被按下(0)时,相应的指示灯亮(0) */
 102   1              if (KEY1==0)
 103   1              {if (p_counter==30)  {p_counter=0;Key1();} }
 104   1              if (KEY2==0) 
 105   1              {if (p_counter==30)  {p_counter=0;Key2();} }
 106   1              if (KEY3==0) 
 107   1          {if (p_counter==30)  {p_counter=0;Key3();} }
 108   1              if (KEY4==0) 
 109   1              {if (p_counter==30)  {p_counter=0;Key4();} }
 110   1                                      
 111   1                      //the next section is about display
 112   1              Display();
 113   1      
 114   1      //      if(r_flag>0) r_flag--;
 115   1      
 116   1      /*      if(trsec>0)
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 3   

 117   1              {
 118   1                      if (trsec%400==0)
 119   1                      { SetTxMode();
 120   1                      for(i=0;i<SB;i++)
 121   1                      TxBuf[i]=trsec/400;
 122   1                      TxPacket();
 123   1                      SetRxMode();
 124   1                      }
 125   1                      trsec--;
 126   1              }  */
 127   1      
 128   1      
 129   1              if(trsec>0 && (!retrieving_flag))
 130   1              {
 131   2                      if (trsec%180==0)
 132   2                      { 
 133   3                              SetTxMode();
 134   3                              for(i=0;i<SB;i++)
 135   3                              TxBuf[i]=jj;
 136   3                              jj++;
 137   3                              if(jj>15) jj=0;
 138   3                              TxPacket();
 139   3                              SetRxMode();
 140   3                      }
 141   2                      trsec--;
 142   2                      if (trsec==0) trsec=200;
 143   2              }
 144   1      
 145   1                        if(s_break>0)
 146   1                        {
 147   2                              s_break--;
 148   2                              if (s_break<10) time_up=1;
 149   2                        }
 150   1              
 151   1                      // EA=1;
 152   1      }
 153          
 154          /*******************************************************************************************/
 155          void main()
 156          {
 157   1      
 158   1          SCON=0x50;  //模式1
 159   1          TMOD=0x21;  //定时模式2
 160   1          IE=0x90;
 161   1      
 162   1          //=====9600=======设置串口通讯寄存器
 163   1          PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
 164   1          TH1=0xFD;  //
 165   1          TL1=0xFD;  //计数器初值
 166   1              TH0=V_TH0;        //5ms         键盘显示中断
 167   1          TL0=V_TL0;
 168   1      
 169   1      
 170   1              // 8255初始化 
 171   1          RST8255=0;
 172   1              COM8255=0x81;
 173   1          //================NRF905初始化
 174   1       CSN=1;      // Spi  disable      
 175   1       SCK=0;      // Spi clock line init high
 176   1       DR=1;      // Init DR for input
 177   1       AM=1; 
 178   1      // TEST=1;
C51 COMPILER V7.50   CODE                                                                  06/25/2004 19:21:10 PAGE 4   

 179   1            // Init AM for input
 180   1       PWR_UP=1;     // nRF905 power on
 181   1       TRX_CE=0;     // Set nRF905 in standby mode
 182   1       TX_EN=0;     // set radio in Rx mode 
 183   1       ///////////////////////////////////////////
 184   1          TI = 0;//串行中断标志位清零
 185   1          TR1 = 1;//打开计数器1 
 186   1              TR0 = 1;//开计数器0
 187   1              ET0=1;            //允许计数器T0中断
 188   1              PB8255=PB;
 189   1      
 190   1      
 191   1      
 192   1              trsec=0;
 193   1       //================
 194   1       Config905();    // Config nRF905 module
 195   1      
 196   1       
 197   1       SetRxMode();    // Set nRF905 in Rx mode
 198   1       retest=0; 
 199   1      while(1)

⌨️ 快捷键说明

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