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

📄 fasong.lst

📁 基于NRF905无线收发模块的无线按键程序
💻 LST
字号:
C51 COMPILER V7.06   FASONG                                                                04/10/2008 23:53:08 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          //--------------------------------------------------------------------------------------------------------
             ---------
   6          #define uint unsigned int
   7          #define uchar unsigned char
   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          //--------------------------------------------------------------------------------------------------------
             ---------
  18          bdata unsigned  char DATA_BUF;
  19          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  20          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  21          sbit    flag    =DATA_BUF^7;
  22          sbit    flag1   =DATA_BUF^0;
  23          //---------------------------------------------------发送数据缓冲区---------------------------------------
             -----------
  24          #define TxRxBuf_Len 4
  25          unsigned char TxRxBuf[TxRxBuf_Len]=
  26          {
  27          0x29,0x30,0x31,0x32,
  28          };
  29          //---------------------------------------------------配置口定义-------------------------------------------
             ---------
  30          sbit    TXEN=P1^0;
  31          sbit    TRX_CE=P3^2;
  32          sbit    PWR=P1^1;
  33          sbit    MISO=P1^6;
  34          sbit    MOSI=P1^5;
  35          sbit    SCK=P1^7;
  36          sbit    CSN=P1^3;
  37          //---------------------------------------------------NRF905状态IO-----------------------------------------
             ------------
  38          sbit    AM=P1^4;
  39          sbit    DR=P3^3;
  40          sbit    CD=P1^2;
  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;
C51 COMPILER V7.06   FASONG                                                                04/10/2008 23:53:08 PAGE 2   

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

 104   1              DR=0;                                           // Init DR for input
 105   1              AM=0;                                           // Init AM for input
 106   1              CD=0;                                           // Init CD for input
 107   1              PWR=1;                                  // nRF905 power on
 108   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 109   1              TXEN=0;                                 // set radio in Rx mode
 110   1      }
 111          //-----------------------------------------------------初始化寄存器---------------------------------------
             ---------
 112          void Config905(void)
 113          {
 114   1              uchar i;
 115   1              CSN=0;                                          // Spi enable for write a spi command
 116   1              //SpiWrite(WC);                         // Write config command写放配置命令
 117   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 118   1              {
 119   2                 SpiWrite(RFConf[i]);
 120   2              }
 121   1              CSN=1;                                  // Disable Spi
 122   1      }
 123          //-----------------------------------------------------发送数据打包---------------------------------------
             -------------
 124          void TxPacket(uchar *TxRxBuf)
 125          {
 126   1              uchar i;
 127   1              //Config905();
 128   1              CSN=0;
 129   1              SpiWrite(WTP);                          // Write payload command
 130   1              for (i=0;i<4;i++)
 131   1              {
 132   2                      SpiWrite(TxRxBuf[i]);           // Write 32 bytes Tx data
 133   2              }// Spi enable for write a spi command
 134   1              CSN=1;
 135   1              Delay(1);                                               // Spi disable
 136   1              CSN=0;                                          // Spi enable for write a spi command
 137   1              SpiWrite(WTA);                          // Write address command
 138   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 139   1              {
 140   2                      SpiWrite(TxAddress[i]);
 141   2              }
 142   1              CSN=1;                                          // Spi disable
 143   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 144   1              Delay(1);                                       // while (DR!=1);
 145   1              TRX_CE=0;                                       // Set TRX_CE low
 146   1      }
 147          //----------------------------------------------------------设置发送状态----------------------------------
             ------------
 148          void SetTxMode(void)
 149          {
 150   1              TRX_CE=0;
 151   1              TXEN=1;
 152   1              Delay(1);                                       // delay for mode change(>=650us)
 153   1      }
 154          //--------------------------------------------------------------------------------------------------------
             ----------
 155          void main(void)
 156          {
 157   1                      uchar i;
 158   1              nRF905Init();
 159   1              Config905();
 160   1                              P0= seg[8];
 161   1                              led0=0;
C51 COMPILER V7.06   FASONG                                                                04/10/2008 23:53:08 PAGE 4   

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


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