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

📄 nrf2401_snd.lst

📁 nrf2401发送代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  NRF2401_SND                                                            04/27/2009 10:27:55 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE NRF2401_SND
OBJECT MODULE PLACED IN .\nrf2401_snd.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\发送\nrf2401_snd.c DEBUG OBJECTEXTEND PRINT(.\nrf2401_snd.lst) OBJECT(.\
                    -nrf2401_snd.obj) 

stmt level    source

   1          #include "reg51.h"
   2          
   3          sbit 	PWR	    = 	P2^7; 						
   4          sbit	CE 	    = 	P2^6;							
   5          sbit 	CS	    = 	P2^5;							
   6          sbit 	DR1	    = 	P2^4;							
   7          sbit	CLK1    = 	P2^3;							
   8          sbit 	DATA	= 	P2^2;
   9          
  10          const unsigned int InitData[15] = 				// nRF2401 控制字 15 Byte
  11          {
  12          	0x08,										// 通道二接收数据宽度(bit)
  13          	0x08,										// 通道一接收数据宽度(bit)
  14          	0x00,										// 通道二地址(A24)
  15          	0x00,										// 通道二地址(A23)
  16          	0x00,										// 通道二地址(A22)
  17          	0x00,										// 通道二地址(A21)
  18          	0x01,										// 通道二地址(A20)
  19          	0x00,										// 通道一地址(A14)
  20          	0x00,										// 通道一地址(A13)
  21          	0x00,										// 通道一地址(A12)
  22          	0x00,										// 通道一地址(A11)
  23          	0x01,										// 通道一地址(A10)
  24          	0xA3,										// b7~b2:接收地址宽度,和发送端一致,不超过40bit;
  25          												// b1~b0:CRC模式选择(01-8bit;11-16bit;00/10-no)
  26          	0x4f,										// b15:接收通道选择(0-通道1;1-通道1和2)
  27          												// b14:收发模式(0-Direct模式,1-ShockBurst模式)
  28          												// b13:波特率选择(0-250Kbps;1-1Mbps)
  29          												// b12~b10:晶振选择(000-4M;001-8M;010-12M;011-16M)
  30          												// b9~b8:发射功率(11-0db)																
  31          	0x05										// b7~b1:发射频率配置
  32          												// b0:收发控制(0-发送;1-接收)
  33          
  34          };
  35          unsigned int AddrBuffer[5];						// 地址寄存器
  36          unsigned int AddrByteCnt;						// 地址Byte数
  37          
  38          void nRF2401_ON();								// nRF2401A上电
  39          void nRF2401_OFF();								// nRF2401A掉电
  40          void nRF2401_Initial();							// nRF2401A初始化
  41          void nRF2401_WriteCommand();					// nRF2401A写命令字
  42          void nRF2401_WriteByte(unsigned int uiData);	// 向nRF2401A写入一个Byte
  43          void nRF2401_WriteWord(unsigned int uiData);	// 向nRF2401A写入一个Word
  44          void nRF2401_Mode(unsigned int uiMode);			// 切换nRF2401A收/发模式
  45          void nRF2401_SendByte(unsigned int TxData);	
  46          												// 将字节数据写入nRF2401A
  47          void nRF2401_SendWord(unsigned int TxData);	
  48          												// 将字数据写入nRF2401A
  49          void nRF2401_SendBuffer_Byte(unsigned int TxData[],unsigned int DataByte);	
  50          												// 将数组数据写入nRF2401A
  51          void nRF2401_SendBuffer_Word(unsigned int TxData[],unsigned int DataWord);	
  52          												// 将数组数据写入nRF2401A
  53          unsigned int  nRF2401_RxStatus();				// 判断nRF2401A是否有数据接收
  54          void nRF2401_ReceiveByte(unsigned int RxData[]);// 以Byte格式从nRF2401A读数据
C51 COMPILER V6.12  NRF2401_SND                                                            04/27/2009 10:27:55 PAGE 2   

  55          void nRF2401_ReceiveWord(unsigned int RxData[]);// 以Word格式从nRF2401A读数据
  56          void nRF2401_SetAddress(unsigned int Address[],unsigned int AddrByte);
  57          												// 设置目标nRF2401A的地址
  58          void Delay_Us(unsigned int TimeCnt);								// 延时(uS)
  59          
  60          //=============================================================
  61          // 语法格式:	void nRF2401_Initial(void)
  62          // 实现功能:	nRF 初始化
  63          // 参数:		无
  64          // 返回值:		无
  65          //=============================================================
  66          void nRF2401_Initial(void)
  67          {
  68   1         /*	*P_SystemClock = 0x98;						// 设置系统时钟为49MHz
  69   1      	*P_IOB_Attrib |= (CS+DATA+PWR+CLK1+CE+DR1);
  70   1      	*P_IOB_Dir |= (CS+DATA+PWR+CLK1+CE);
  71   1      	*P_IOB_Dir&=~DR1;
  72   1      	*P_IOB_Buffer &=~(CS+DATA+CLK1+CE+DR1);		// 初始化IO端口  */
  73   1      
  74   1      	nRF2401_ON();
  75   1      	Delay_Us(3000);
  76   1      	nRF2401_WriteCommand();						// 向nRF2401A写命令字
  77   1      	Delay_Us(300);
  78   1      }
  79          
  80          //=============================================================
  81          // 语法格式:	void nRF2401_ON(void)
  82          // 实现功能:	nRF 上电
  83          // 参数:		无
  84          // 返回值:		无
  85          //=============================================================
  86          void nRF2401_ON(void)
  87          {
  88   1      	/**P_IOB_Buffer |= PWR;*/
  89   1      	PWR = 1;
  90   1      }
  91          
  92          //=============================================================
  93          // 语法格式:	void nRF2401_OFF(void)
  94          // 实现功能:	nRF 掉电
  95          // 参数:		无
  96          // 返回值:		无
  97          //=============================================================
  98          //void nRF2401_OFF(void)
  99          //{
 100          //	PWR = 0; 	//*P_IOB_Buffer &= ~PWR;
 101          //}
 102          
 103          //=============================================================
 104          // 语法格式:	void nRF2401_WriteCommand(void)
 105          // 实现功能:	nRF 写命令字
 106          // 参数:		无
 107          // 返回值:		无
 108          //=============================================================
 109          void nRF2401_WriteCommand(void)
 110          {
 111   1      	unsigned int i;
 112   1      	 CE= 0;		//*P_IOB_Buffer &= ~CE;
 113   1      	CS = 1;		//*P_IOB_Buffer |= CS;
 114   1      	             //Delay_Us(1);
 115   1      	for(i=0; i<15; i++)
 116   1      	{
C51 COMPILER V6.12  NRF2401_SND                                                            04/27/2009 10:27:55 PAGE 3   

 117   2      		nRF2401_WriteByte(InitData[i]);
 118   2      	}
 119   1      	CS = 0;		//*P_IOB_Buffer &= ~CS;
 120   1      	CE = 1;		//*P_IOB_Buffer |= CE;
 121   1      }
 122          /*
 123          //=============================================================
 124          // 语法格式:	void nRF2401_Mode(unsigned int uiMode)
 125          // 实现功能:	设置nRF2401A的工作方式
 126          // 参数:		uiMode:0--接收;1--发送					
 127          // 返回值:		无
 128          //=============================================================
 129          void nRF2401_Mode(unsigned int uiMode)
 130          {
 131          	CE = 0;		//*P_IOB_Buffer &= ~CE;
 132          	CS = 1;		//*P_IOB_Buffer |= CS;
 133          	if(uiMode == 0)
 134          		nRF2401_WriteByte(InitData[14] | 0x01);			// 接收
 135          	else
 136          		nRF2401_WriteByte(InitData[14] & 0xFE);			// 发送
 137          	CS = 0;		//*P_IOB_Buffer &= ~CS;
 138          	CE = 1;		//*P_IOB_Buffer |= CE;
 139          }
 140          
 141          //=============================================================
 142          // 语法格式:	void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
 143          // 实现功能:	设置目标nRF2401A的地址
 144          // 参数:		unsigned int *Address:地址数组
 145          //				unsigned int AddrByte:数组的长度					
 146          // 返回值:		无
 147          //=============================================================
 148          void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
 149          {
 150          	unsigned int i;
 151          	for(i=0; i<AddrByte; i++)
 152          	{
 153          		AddrBuffer[i] = Address[i];
 154          	}
 155          	AddrByteCnt = AddrByte;
 156          }
 157          */
 158          //=============================================================
 159          // 语法格式:	void nRF2401_WriteByte(unsigned int uiData)
 160          // 实现功能:	向nRF2401A写入一个字节数据
 161          // 参数:		unsigned int uiData: 待写入数据
 162          // 返回值:		无
 163          //=============================================================
 164          void nRF2401_WriteByte(unsigned int uiData)
 165          {
 166   1      	unsigned int i;
 167   1      	for(i=0; i<8; i++)
 168   1      	{
 169   2      		CLK1 = 0;		//*P_IOB_Buffer &= ~CLK1;
 170   2      		if(uiData&0x80)
 171   2      			DATA = 1;		//*P_IOB_Buffer |= DATA;
 172   2      		else
 173   2      			DATA = 0;		//*P_IOB_Buffer &= ~DATA;
 174   2      			               //Delay_Us(1);
 175   2      			CLK1 = 1;		//*P_IOB_Buffer |= CLK1;
 176   2      			                //Delay_Us(1);
 177   2      			CLK1 = 0;		//*P_IOB_Buffer &= ~CLK1;
 178   2      			uiData = uiData<<1;
C51 COMPILER V6.12  NRF2401_SND                                                            04/27/2009 10:27:55 PAGE 4   

 179   2      	}
 180   1      }
 181          /*
 182          //=============================================================
 183          // 语法格式:	void nRF2401_WriteWord(unsigned int uiData)
 184          // 实现功能:	向nRF2401A写入一个字数据
 185          // 参数:		unsigned int uiData: 待写入数据
 186          // 返回值:		无
 187          //=============================================================
 188          void nRF2401_WriteWord(unsigned int uiData)
 189          {
 190          	unsigned int i;
 191          	for(i=0; i<16; i++)
 192          	{
 193          		CLK1 = 0;	     	//*P_IOB_Buffer &= ~CLK1;
 194          		if(uiData&0x8000)
 195          			DATA = 1;		//*P_IOB_Buffer |= DATA;
 196          		else
 197          			DATA = 0;		//*P_IOB_Buffer &= ~DATA;
 198          			                //Delay_Us(1);
 199          			CLK1 = 1;		//*P_IOB_Buffer |= CLK1;
 200          			Delay_Us(1);
 201          			CLK1 = 0;		//*P_IOB_Buffer &=~CLK1;
 202          			uiData = uiData<<1;
 203          	}
 204          }

⌨️ 快捷键说明

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