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

📄 fasong.lst

📁 NRF905-433频段无线232通讯程序在4800HZ上
💻 LST
字号:
C51 COMPILER V7.06   FASONG                                                                07/25/2007 13:13:45 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include <ABSACC.h>
   3          #include <intrins.h>
   4          #include <stdio.h>
   5          #define uint unsigned int
   6          #define uchar unsigned char
   7          #define BYTE_BIT0       0x01
   8          #define BYTE_BIT1       0x02
   9          #define BYTE_BIT2       0x04
  10          #define BYTE_BIT3       0x08
  11          #define BYTE_BIT4       0x10
  12          #define BYTE_BIT5       0x20
  13          #define BYTE_BIT6       0x40
  14          #define BYTE_BIT7       0x80
  15          ////////////SPI指令
  16          #define WC              0x00
  17          #define RC              0x10
  18          #define WTP             0x20
  19          #define RTP             0x21
  20          #define WTA             0x22
  21          #define RTA             0x23
  22          #define RRP             0x24
  23          bdata unsigned  char DATA_BUF;
  24          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  25          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  26          sbit    flag    =DATA_BUF^7;
  27          sbit    flag1   =DATA_BUF^0;
  28          #define TxRxBuf_Len 32
  29          unsigned char TxRxBuf[TxRxBuf_Len]=
  30          {
  31          
  32          0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,
  33          0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
  34          0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
  35          0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
  36          };
  37          //配置口定义//
  38          sbit    TXEN=P3^7;
  39          sbit    TRX_CE=P2^7;
  40          sbit    PWR=P3^6;
  41          sbit    MISO=P2^4;
  42          sbit    MOSI=P2^2;
  43          sbit    SCK=P2^3;
  44          sbit    CSN=P2^0;
  45          /////////////////////////////////////////////////////
  46          sbit    AM=P2^5;
  47          sbit    DR=P2^1;
  48          sbit    CD=P2^6;
  49          //RF寄存器配置//
  50          unsigned char idata RFConf[11]=
  51          {
  52            0x00,                             //配置命令//
  53            0x4c,                             //CH_NO,配置频段在423MHZ
  54            0x2C,                             //输出功率为10db,不重发,节电为正常模式
  55            0x44,                             //地址宽度设置,为4字节
C51 COMPILER V7.06   FASONG                                                                07/25/2007 13:13:45 PAGE 2   

  56            0x20,0x20,                        //接收发送有效数据长度为32字节
  57            0xCC,0xCC,0xCC,0xCC,              //接收地址
  58            0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  59          };
  60          bit lcdbit;
  61          code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  62          ///////////延时/////////////////
  63          static void Delay(uchar n)
  64          {
  65   1              uint i;
  66   1              while(n--)
  67   1              for(i=0;i<80;i++);
  68   1      }
  69          
  70          ///////////////
  71          unsigned char SpiRead(void)
  72          {
  73   1              unsigned char i;
  74   1              for (i=0;i<8;i++)
  75   1              {
  76   2                      DATA_BUF=DATA_BUF<<1;
  77   2                      SCK=1;
  78   2                      if (MISO)       //读取最高位,保存至最末尾,通过左移位完成整个字节
  79   2                      {
  80   3                              DATA_BUF|=BYTE_BIT0;
  81   3                      }
  82   2                      else
  83   2                      {
  84   3                              DATA_BUF&=~BYTE_BIT0;
  85   3                      }
  86   2                      SCK=0;
  87   2               }
  88   1               return DATA_BUF;
  89   1      }
  90          
  91          void SpiWrite(unsigned char send)
  92          {
  93   1              unsigned char i;
  94   1              DATA_BUF=send;
  95   1              for (i=0;i<8;i++)
  96   1              {
  97   2                      if (DATA7)      //总是发送最高位
  98   2                      {
  99   3                              MOSI=1;
 100   3                      }
 101   2                      else
 102   2                      {
 103   3                              MOSI=0;
 104   3                      }
 105   2                      SCK=1;
 106   2                      DATA_BUF=DATA_BUF<<1;
 107   2                      SCK=0;
 108   2              }
 109   1      }
 110          ////////////////初始化nRF905///////////////////
 111          void nRF905Init(void)
 112          {
 113   1          CSN=1;                                              // Spi  disable
 114   1              SCK=0;                                          // Spi clock line init low
 115   1              DR=0;                                           // Init DR for input
 116   1              AM=0;                                           // Init AM for input
 117   1              CD=0;                                           // Init CD for input
C51 COMPILER V7.06   FASONG                                                                07/25/2007 13:13:45 PAGE 3   

 118   1              PWR=1;                                  // nRF905 power on
 119   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 120   1              TXEN=0;                                 // set radio in Rx mode
 121   1      }
 122          ////////初始化寄存器
 123          void Config905(void)
 124          {
 125   1              uchar i;
 126   1              CSN=0;                                          // Spi enable for write a spi command
 127   1              //SpiWrite(WC);                         // Write config command写放配置命令
 128   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 129   1              {
 130   2                 SpiWrite(RFConf[i]);
 131   2              }
 132   1              CSN=1;                                  // Disable Spi
 133   1      }
 134          /////////////初始化
 135          void Inituart(void)
 136          {
 137   1              TMOD = 0x20;                            //timer1 working mode 1
 138   1              TL1  = 0xfd;                                    //f7=9600 for 16mhz Fosc,and ...
 139   1              TH1  = 0xfd;                                    //...fd=19200 for 11.0592mhz Fosc
 140   1              SCON = 0xd8;                            //uart mode 3,ren==1
 141   1              PCON = 0x80;                            //smod=1
 142   1              TR1  = 1;                                       //start timer1
 143   1      }
 144          /////////////发送数据
 145          void TxPacket(void)
 146          {
 147   1              uchar i;
 148   1              //Config905();
 149   1              CSN=0;
 150   1              SpiWrite(WTP);                          // Write payload command
 151   1              for (i=0;i<32;i++)
 152   1              {
 153   2                      SpiWrite(TxRxBuf[i]);           // Write 32 bytes Tx data
 154   2              }// Spi enable for write a spi command
 155   1              CSN=1;
 156   1              Delay(1);                                               // Spi disable
 157   1              CSN=0;                                          // Spi enable for write a spi command
 158   1              SpiWrite(WTA);                          // Write address command
 159   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 160   1              {
 161   2                      SpiWrite(TxAddress[i]);
 162   2              }
 163   1              CSN=1;                                          // Spi disable
 164   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 165   1              Delay(1);                                       // while (DR!=1);
 166   1              TRX_CE=0;                                       // Set TRX_CE low
 167   1      }
 168          ////////////////////////////////////////////////////
 169          void SetTxMode(void)
 170          {
 171   1              TRX_CE=0;
 172   1              TXEN=1;
 173   1              Delay(1);                                       // delay for mode change(>=650us)
 174   1      }
 175          unsigned char CheckCD(void)             //Pin->检查是否已存在 同频率载波
 176          {
 177   1              if (CD==1)
 178   1              {
 179   2                      return 1;
C51 COMPILER V7.06   FASONG                                                                07/25/2007 13:13:45 PAGE 4   

 180   2              }
 181   1              else
 182   1              {
 183   2                      return 0;
 184   2              }
 185   1      }
 186          void TX(void)
 187          {
 188   1                     SetTxMode();// Set nRF905 in Tx mode
 189   1                                 TxPacket();// Send data by nRF905
 190   1      
 191   1      
 192   1       CheckCD();     // 返回CD的当前电平
 193   1      
 194   1              // SetRF_PA_PWR(unsigned char i);       //设置发射功率
 195   1      }
 196          void main(void)
 197          {
 198   1              Inituart();
 199   1              nRF905Init();
 200   1              Config905();
 201   1              while(1)
 202   1                      {
 203   2                     TX();
 204   2                      }
 205   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    255    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33    ----
   IDATA SIZE       =     11    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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