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

📄 ptr8000s(add_com_11.0592m_car).lst

📁 基于89c2051开发的ptr8000一对多无线通信程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 127          /************ short delay us  *************/
 128          void Delayus(uint xus)
 129          {       
 130   1              uint i = xus;
 131   1              while(i--);     
 132   1      }       
 133          
 134          void ChangeMode(uchar num)
 135          {
 136   1              if(num==PowerDown)
 137   1              {
 138   2                      RFPWR = 0;              /* 配置为掉电模式 */
 139   2                      TX_EN = 0;
 140   2                      TRX_EN = 0;
 141   2              }
 142   1              if(num==Standby)
 143   1              {
 144   2              TRX_EN=0;
 145   2                      TX_EN=0;
 146   2                      RFPWR=1;
 147   2              }
 148   1              if(num==RXMode)
 149   1              {
 150   2      /*              TRX_EN=0;       /**/
 151   2                      TX_EN=0;
 152   2                      RFPWR=1;
 153   2                      _nop_();
 154   2                      _nop_();
 155   2              TRX_EN=1;
 156   2              }
 157   1              if(num==TXMode)
 158   1              {
 159   2              TX_EN=1;
 160   2                      RFPWR=1;
 161   2                      TRX_EN=0;
 162   2              }
 163   1              if(num==TXData)
 164   1              {
 165   2                      TRX_EN = 1;
 166   2                      Delayus(20);    
 167   2                      TRX_EN = 0;             /* ??  Make a 20us Pulse as nRF905 Datasheet */
 168   2              }
 169   1      }
 170          /*------------------------------------------------
 171                  SPI读写一体化函数SpiReadWrite()
 172          入口参数:
 173                  val  写入命令或数据
 174          出口参数:
 175                  R7   读出数据
 176          ------------------------------------------------*/
 177          uchar SpiReadWrite(uchar val)
 178          {       
 179   1              uchar i;
C51 COMPILER V7.06   PTR8000S_ADD_COM_11_0592M_CAR_                                        01/13/2007 21:38:46 PAGE 4   

 180   1              ACC = val;
 181   1              for (i = 8; i > 0; i --)
 182   1              {
 183   2                      CY = RFMISO;    //取数据SO
 184   2                      _rlca_();               //存数据ACC.0读数据ACC.7同时进行
 185   2                      RFMOSI = CY;    //送数据SI
 186   2                      RFSCK = 1;              //上升沿打入数据
 187   2                      _nop_();
 188   2                      RFSCK  = 0;             //下降沿读入数据(首次为假动作)
 189   2              }
 190   1              return ACC;
 191   1      }
 192          
 193          
 194          
 195          /********  配置nRF905函数  **************************************************************/
 196          void Config905(void) using 0            //配置nRF905
 197          {
 198   1              RFCSN = 0;                              /* Spi enable for write a spi command */
 199   1              SpiReadWrite(WC);               /* Write config command */
 200   1      /*      RFCSN = 1;              /***/
 201   1      /*      RFCSN = 0;              /***/
 202   1              SpiReadWrite(CH_NO_BYTE);                      //中心频率低8位
 203   1              SpiReadWrite(PA_PWR_10dBm | HFREQ_PLL_433MHz); //发射+10dBm,发射频率433MHz,中心频率第9位=0
 204   1              SpiReadWrite(TX_AFW_4BYTE | RX_AFW_4BYTE);     //接收地址宽度4字节,发送地址宽度4字节
 205   1              SpiReadWrite(RX_PW_16BYTE);                    //接收数据宽度16字节
 206   1              SpiReadWrite(TX_PW_16BYTE);                    //发送数据宽度16字节
 207   1              SpiReadWrite(RX_ADDRESS_0);                    //接收有效地址第1字节
 208   1              SpiReadWrite(RX_ADDRESS_1);                    //接收有效地址第2字节
 209   1              SpiReadWrite(RX_ADDRESS_2);                    //接收有效地址第3字节
 210   1              SpiReadWrite(RX_ADDRESS_3);                    //接收有效地址第4字节
 211   1              SpiReadWrite(CRC16_EN | XOF_16MHz);            //CRC16模式使能,晶体振荡器频率16MHz
 212   1              RFCSN = 1;                        // Disable Spi
 213   1      }
 214          
 215          void RF905_Read(uchar RFcmd,uchar *RFdata)
 216          {
 217   1              uchar i,len;
 218   1              if(RFcmd==WTA|RFcmd==RTA) len=4;
 219   1              else if(RFcmd==WC|RFcmd==RC) len=10;
 220   1              else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
 221   1              else len=0;
 222   1      
 223   1              RFCSN = 0;              /* Spi enable for write a spi command */
 224   1              SpiReadWrite(RFcmd);
 225   1              for(i=0;i<len;i++) RFdata[i]=SpiReadWrite(0);
 226   1              RFCSN = 1;
 227   1      }
 228          
 229          void RF905_Write(uchar RFcmd,uchar *RFdata)
 230          {               
 231   1              uchar i,len;
 232   1              if(RFcmd==WTA|RFcmd==RTA) len=4;
 233   1              else if(RFcmd==WC|RFcmd==RC) len=10;
 234   1              else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
 235   1              else len=0;
 236   1      
 237   1              RFCSN = 0;              /* Spi enable for write a spi command */
 238   1              SpiReadWrite(RFcmd);
 239   1              for(i=0;i<len;i++) SpiReadWrite(RFdata[i]);     /* len Bytes Data */
 240   1              RFCSN = 1;                        // Disable Spi
 241   1      }               
C51 COMPILER V7.06   PTR8000S_ADD_COM_11_0592M_CAR_                                        01/13/2007 21:38:46 PAGE 5   

 242          
 243          
 244          
 245          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    450    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       6
   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 + -