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

📄 fasong.lst

📁 基于NRF905无线收发模块的无线计分系统程序
💻 LST
字号:
C51 COMPILER V7.06   FASONG                                                                04/11/2008 00:12:48 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          //--------------------------------------------------------------------------------------------------------
             --------
   8          
   9          #define BYTE_BIT0       0x01
  10          #define BYTE_BIT1       0x02
  11          #define BYTE_BIT2       0x04
  12          #define BYTE_BIT3       0x08
  13          #define BYTE_BIT4       0x10
  14          #define BYTE_BIT5       0x20
  15          #define BYTE_BIT6       0x40
  16          #define BYTE_BIT7       0x80
  17          bdata unsigned  char DATA_BUF;
  18          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  19          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  20          sbit    flag    =DATA_BUF^7;
  21          sbit    flag1   =DATA_BUF^0;
  22          //--------------------------------------------------------------------------------------------------------
             ---------
  23          #define TxRxBuf_Len 4
  24          unsigned char TxRxBuf[TxRxBuf_Len]=
  25          {
  26          0x29,0x30,0x31,0x32,
  27          };
  28          //-----------------------------------------------NRF905配置口定义-----------------------------------------
             ---------
  29          sbit    TXEN=P1^0;
  30          sbit    TRX_CE=P3^2;
  31          sbit    PWR=P1^1;
  32          sbit    MISO=P1^6;
  33          sbit    MOSI=P1^5;
  34          sbit    SCK=P1^7;
  35          sbit    CSN=P1^3;
  36          sbit    AM=P1^4;
  37          sbit    DR=P3^3;
  38          sbit    CD=P1^2;
  39          //--------------------------------------------------------------------------------------------------------
             ----------
  40          uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};         //0~~9段码
  41          //--------------------------------------------------------------------------------------------------------
             ---------
  42          sbit    KEY0=P3^6;
  43          sbit    KEY1=P3^7;
  44          //--------------------------------------------------------------------------------------------------------
             ---------
  45          sbit    led1=P2^1;
  46          sbit    led0=P2^0;
  47          sbit    led2=P2^2;
  48          sbit    led3=P2^3;
  49          //---------------------------------------------------NRF905控制指令---------------------------------------
C51 COMPILER V7.06   FASONG                                                                04/11/2008 00:12:48 PAGE 2   

             ---------
  50          #define WC              0x00
  51          #define RC              0x10
  52          #define WTP             0x20
  53          #define RTP             0x21
  54          #define WTA             0x22
  55          #define RTA             0x23
  56          #define RRP             0x24
  57          //-------------------------------------------------NRF905寄存器配置---------------------------------------
             --------
  58          unsigned char idata RFConf[11]=
  59          {
  60            0x00,                             //配置命令//
  61            0x4c,                             //CH_NO,配置频段在423MHZ
  62            0x0c,                             //输出功率为10db,不重发,节电为正常模式
  63            0x44,                             //地址宽度设置,为4字节
  64            0x04,0x04,                        //接收发送有效数据长度为32字节
  65            0xCC,0xCC,0xCC,0xCC,              //接收地址
  66            0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  67          };
  68          code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  69          //-------------------------------------------------延时---------------------------------------------------
             ---------
  70          static void Delay(uchar n)
  71          {
  72   1              uint i;
  73   1              while(n--)
  74   1              for(i=0;i<80;i++);
  75   1      }
  76          //--------------------------------------------------------------------------------------------------------
             ----------
  77          void SpiWrite(unsigned char send)
  78          {
  79   1              unsigned char i;
  80   1              DATA_BUF=send;
  81   1              for (i=0;i<8;i++)
  82   1              {
  83   2                      if (DATA7)      //总是发送最高位
  84   2                      {
  85   3                              MOSI=1;
  86   3                      }
  87   2                      else
  88   2                      {
  89   3                              MOSI=0;
  90   3                      }
  91   2                      SCK=1;
  92   2                      DATA_BUF=DATA_BUF<<1;
  93   2                      SCK=0;
  94   2              }
  95   1      }
  96          //--------------------------------------------初始化nRF905------------------------------------------------
             -------
  97          void nRF905Init(void)
  98          {
  99   1          CSN=1;                                              // Spi  disable
 100   1              SCK=0;                                          // Spi clock line init low
 101   1              DR=0;                                           // Init DR for input
 102   1              AM=0;                                           // Init AM for input
 103   1              CD=0;                                           // Init CD for input
 104   1              PWR=1;                                  // nRF905 power on
 105   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 106   1              TXEN=0;                                 // set radio in Rx mode
C51 COMPILER V7.06   FASONG                                                                04/11/2008 00:12:48 PAGE 3   

 107   1      }
 108          //--------------------------------------------初始化NRF905寄存器------------------------------------------
             ---------------
 109          void Config905(void)
 110          {
 111   1              uchar i;
 112   1              CSN=0;                                          // Spi enable for write a spi command
 113   1              //SpiWrite(WC);                         // Write config command写放配置命令
 114   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 115   1              {
 116   2                 SpiWrite(RFConf[i]);
 117   2              }
 118   1              CSN=1;                                  // Disable Spi
 119   1      }
 120          //-------------------------------------------发送控制命令数据---------------------------------------------
             ----------------
 121          void TxPacket(uchar *TxRxBuf)
 122          {
 123   1              uchar i;
 124   1              //Config905();
 125   1              CSN=0;
 126   1              SpiWrite(WTP);                          // Write payload command
 127   1              for (i=0;i<4;i++)
 128   1              {
 129   2                      SpiWrite(TxRxBuf[i]);           // Write 32 bytes Tx data
 130   2              }// Spi enable for write a spi command
 131   1              CSN=1;
 132   1              Delay(1);                                               // Spi disable
 133   1              CSN=0;                                          // Spi enable for write a spi command
 134   1              SpiWrite(WTA);                          // Write address command
 135   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 136   1              {
 137   2                      SpiWrite(TxAddress[i]);
 138   2              }
 139   1              CSN=1;                                          // Spi disable
 140   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 141   1              Delay(1);                                       // while (DR!=1);
 142   1              TRX_CE=0;                                       // Set TRX_CE low
 143   1      }
 144          //--------------------------------------------------------------------------------------------------------
             --------
 145          void SetTxMode(void)
 146          {
 147   1              TRX_CE=0;
 148   1              TXEN=1;
 149   1              Delay(1);                                       // delay for mode change(>=650us)
 150   1      }
 151          //--------------------------------------------------------------------------------------------------------
             --
 152          void main(void)
 153          {
 154   1                      uchar i;
 155   1              nRF905Init();
 156   1              Config905();
 157   1                              P0= seg[8];
 158   1                              led0=0;
 159   1                              led1=0;
 160   1                              led2=0;
 161   1                              led3=0;
 162   1              while(1)
 163   1                      {
 164   2                                      if(KEY0==0)                                             //有键0按下
C51 COMPILER V7.06   FASONG                                                                04/11/2008 00:12:48 PAGE 4   

 165   2                              {
 166   3                                      while(!KEY0);                           //等待按键松开  RED
 167   3                                      TxRxBuf[0]=0x29;
 168   3                                      TxRxBuf[1]=0x30;
 169   3                                      TxRxBuf[2]=0x31;
 170   3                                      TxRxBuf[3]=0x32;  
 171   3                              P0= seg[1];
 172   3                                      led0=1;
 173   3                                      led1=1;
 174   3                                      led2=1;
 175   3                                      led3=0;
 176   3                                      for(i=0;i<2;i++)
 177   3                                      {
 178   4                      SetTxMode();// Set nRF905 in Tx mode
 179   4                                  TxPacket(TxRxBuf);// Send data by nRF905
 180   4                                      }
 181   3                              }
 182   2                                       if(KEY1==0)                                            //有键按下
 183   2                              {
 184   3                                      while(!KEY1);                           //等待按键1松开GREEN
 185   3                                      TxRxBuf[0]=0x30;
 186   3                                      TxRxBuf[1]=0x31;
 187   3                                      TxRxBuf[2]=0x32;
 188   3                                      TxRxBuf[3]=0x29;    
 189   3                              P0= seg[2];
 190   3                                      led0=1;
 191   3                                      led1=1;
 192   3                                      led2=0;
 193   3                                      led3=1;
 194   3                                      for(i=0;i<2;i++)
 195   3                                      {
 196   4                      SetTxMode();// Set nRF905 in Tx mode
 197   4                                  TxPacket(TxRxBuf);// Send data by nRF905
 198   4                                      }
 199   3                              }       
 200   2      }       
 201   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       4
   IDATA SIZE       =     11    ----
   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 + -