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

📄 nrf2401_rec.lst

📁 nrf2401接收模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  NRF2401_REC                                                            04/27/2009 10:34:35 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE NRF2401_REC
OBJECT MODULE PLACED IN .\nrf2401_rec.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\nrf2401_rec.c DEBUG OBJECTEXTEND

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读数据
  55          //void nRF2401_ReceiveWord(unsigned int RxData[]);// 以Word格式从nRF2401A读数据
C51 COMPILER V6.12  NRF2401_REC                                                            04/27/2009 10:34:35 PAGE 2   

  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          //#if
  67          void nRF2401_Initial(void)
  68          {
  69   1         /*	*P_SystemClock = 0x98;						// 设置系统时钟为49MHz
  70   1      	*P_IOB_Attrib |= (CS+DATA+PWR+CLK1+CE+DR1);
  71   1      	*P_IOB_Dir |= (CS+DATA+PWR+CLK1+CE);
  72   1      	*P_IOB_Dir&=~DR1;
  73   1      	*P_IOB_Buffer &=~(CS+DATA+CLK1+CE+DR1);		// 初始化IO端口  */
  74   1      
  75   1      	nRF2401_ON();
  76   1      	Delay_Us(3000);
  77   1      	nRF2401_WriteCommand();						// 向nRF2401A写命令字
  78   1      	Delay_Us(300);
  79   1      }
  80          
  81          //=============================================================
  82          // 语法格式:	void nRF2401_ON(void)
  83          // 实现功能:	nRF 上电
  84          // 参数:		无
  85          // 返回值:		无
  86          //=============================================================
  87          void nRF2401_ON(void)
  88          {
  89   1      	/**P_IOB_Buffer |= PWR;*/
  90   1      	PWR = 1;
  91   1      }
  92          
  93          //=============================================================
  94          // 语法格式:	void nRF2401_OFF(void)
  95          // 实现功能:	nRF 掉电
  96          // 参数:		无
  97          // 返回值:		无
  98          //=============================================================
  99          //void nRF2401_OFF(void)
 100          //{
 101          //	PWR = 0; 	//*P_IOB_Buffer &= ~PWR;
 102          //}
 103          
 104          //=============================================================
 105          // 语法格式:	void nRF2401_WriteCommand(void)
 106          // 实现功能:	nRF 写命令字
 107          // 参数:		无
 108          // 返回值:		无
 109          //=============================================================
 110          void nRF2401_WriteCommand(void)
 111          {
 112   1      	unsigned int i;
 113   1      	 CE= 0;		//*P_IOB_Buffer &= ~CE;
 114   1      	 CS = 1;	//*P_IOB_Buffer |= CS;
 115   1      	            //Delay_Us(1);
 116   1      	for(i=0; i<15; i++)
 117   1      	{
C51 COMPILER V6.12  NRF2401_REC                                                            04/27/2009 10:34:35 PAGE 3   

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

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

⌨️ 快捷键说明

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