亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nrf2401.c

?? 在KEILC51中NRF2401項目開發成功
?? C
字號:
//====================================================================================
//文 件 名: nRF2401.c
//功能描述: nRF2401的驅動程序
//維護記錄: 2008年10月26
//====================================================================================

#include <string.h>
#include <AT89X52.h>
#include <intrins.h>
#include "nRF2401.H"


sbit	PWR  	=	P0^0;
sbit	CE	    =	P0^1;
sbit	CS	    =	P0^2;
sbit	DR1	    =	P0^3;
sbit	CLK1	=	P0^4;
sbit	DATA	=	P0^5;
sbit	cs_test	 =	P0^6;


const unsigned char InitData[15] = 				// nRF2401 控制字 15 Byte
{
	0x08,										// 通道二接收數據寬度(bit)
	0x08,										// 通道一接收數據寬度(bit)
	0x00,										// 通道二地址(A24)
	0x00,										// 通道二地址(A23)
	0x00,										// 通道二地址(A22)
	0x00,										// 通道二地址(A21)
	0x01,										// 通道二地址(A20)
	0x00,										// 通道一地址(A14)
	0x00,										// 通道一地址(A13)
	0x00,										// 通道一地址(A12)
	0x00,										// 通道一地址(A11)
	0x01,										// 通道一地址(A10)
	0x83,										// b7~b2:接收地址寬度,和發送端一致,不超過40bit;
												// b1~b0:CRC模式選擇(01-8bit;11-16bit;00/10-no)
	0x6f,										// b15:接收通道選擇(0-通道1;1-通道1和2)
												// b14:收發模式(0-Direct模式,1-ShockBurst模式)
												// b13:波特率選擇(0-250Kbps;1-1Mbps)
												// b12~b10:晶振選擇(000-4M;001-8M;010-12M;011-16M)
												// b9~b8:發射功率(11-0db)																
	0x65										// b7~b1:發射頻率配置
												// b0:收發控制(0-發送;1-接收)

};
unsigned char AddrBuffer[5];						// 地址寄存器
unsigned char AddrByteCnt;						// 地址Byte數

/******************************************************************************
void nRF2401_ON();								// nRF2401A上電
void nRF2401_OFF();								// nRF2401A掉電
void nRF2401_Initial();							// nRF2401A初始化
void nRF2401_WriteCommand();					// nRF2401A寫命令字
void nRF2401_WriteByte(unsigned char uiData);	// 向nRF2401A寫入一個Byte
void nRF2401_WriteWord(unsigned int uiData);	// 向nRF2401A寫入一個Word
void nRF2401_Mode(unsigned char uiMode);			// 切換nRF2401A收/發模式
void nRF2401_SendByte(unsigned char TxData);	
												// 將字節數據寫入nRF2401A
void nRF2401_SendWord(unsigned int TxData);	
												// 將字數據寫入nRF2401A
void nRF2401_SendBuffer_Byte(unsigned char TxData[],unsigned char DataByte);	
												// 將數組數據寫入nRF2401A
void nRF2401_SendBuffer_Word(unsigned int TxData[],unsigned int DataWord);	
												// 將數組數據寫入nRF2401A
unsigned int  nRF2401_RxStatus();				// 判斷nRF2401A是否有數據接收
void nRF2401_ReceiveByte(unsigned char RxData[]);// 以Byte格式從nRF2401A讀數據
void nRF2401_ReceiveWord(unsigned int RxData[]);// 以Word格式從nRF2401A讀數據
void nRF2401_SetAddress(unsigned char Address[],unsigned char AddrByte);
												// 設置目標nRF2401A的地址
void Delay_Us(unsigned int TimeCnt);								// 延時(uS)

 void nRF2401_Str(unsigned char *arr);
  *******************************************************************************/
//=============================================================
// 語法格式:	void nRF2401_Initial(void)
// 實現功能:	nRF 初始化
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_Initial(void)
{

   PWR=0;
   CE=0;
   CS=0;
   DR1=0;
   CLK1=0;
   DATA=0;
   cs_test=1;
	nRF2401_ON();
	Delay_Us(3000);
	nRF2401_WriteCommand();						// 向nRF2401A寫命令字
	Delay_Us(300);
}

//=============================================================
// 語法格式:	void nRF2401_ON(void)
// 實現功能:	nRF 上電
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_ON(void)
{

PWR=1;



}

//=============================================================
// 語法格式:	void nRF2401_OFF(void)
// 實現功能:	nRF 掉電
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_OFF(void)
{

PWR=0;
}

//=============================================================
// 語法格式:	void nRF2401_WriteCommand(void)
// 實現功能:	nRF 寫命令字
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_WriteCommand(void)
{
	unsigned int i;

	  CE=0;
	  CS=1;

	Delay_Us(5);
	for(i=0; i<15; i++)
	{
		nRF2401_WriteByte(InitData[i]);
	}

	CS=0;
	CE=1;
}

//=============================================================
// 語法格式:	void nRF2401_Mode(unsigned int uiMode)
// 實現功能:	設置nRF2401A的工作方式
// 參數:		uiMode:0--接收;1--發送					
// 返回值:		無
//=============================================================
void nRF2401_Mode(unsigned char uiMode)
{

	CE=0;
	CS=1;

	if(uiMode == 0)
		nRF2401_WriteByte(InitData[14] | 0x01);			// 接收
	else
		nRF2401_WriteByte(InitData[14] & 0xFE);			// 發送

	CS=0;
	CE=1;
}

//=============================================================
// 語法格式:	void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
// 實現功能:	設置目標nRF2401A的地址
// 參數:		unsigned int *Address:地址數組
//				unsigned int AddrByte:數組的長度					
// 返回值:		無
//=============================================================
void nRF2401_SetAddress(unsigned char *Address,unsigned char AddrByte)
{
	unsigned int i;
	for(i=0; i<AddrByte; i++)
	{
		AddrBuffer[i] = Address[i];
	}
	AddrByteCnt = AddrByte;
}

//=============================================================
// 語法格式:	void nRF2401_WriteByte(unsigned int uiData)
// 實現功能:	向nRF2401A寫入一個字節數據
// 參數:		unsigned int uiData: 待寫入數據
// 返回值:		無
//=============================================================
void nRF2401_WriteByte(unsigned char uiData)
{
	unsigned int i;
	cs_test=0;
	for(i=0; i<8; i++)
	{

		CLK1=0;
		if(uiData&0x80)

		DATA=1;
		else
			DATA=0;


				 CLK1=1;
				_nop_();
             	_nop_();

				_nop_();
             	_nop_();
				_nop_();
             	_nop_();

				_nop_();
             	_nop_();

			  CLK1=0;
			uiData = uiData<<1;
	}
	cs_test=1;
}

//=============================================================
// 語法格式:	void nRF2401_WriteWord(unsigned int uiData)
// 實現功能:	向nRF2401A寫入一個字數據
// 參數:		unsigned int uiData: 待寫入數據
// 返回值:		無
//=============================================================
void nRF2401_WriteWord(unsigned int uiData)
{
	unsigned int i;
	for(i=0; i<16; i++)
	{

		CLK1=0;
		if(uiData&0x8000)

			DATA=1;
		else

			DATA=0;

			CLK1=1;

			_nop_();
          	_nop_();

			_nop_();
          	_nop_();
			_nop_();
          	_nop_();

			_nop_();
          	_nop_();

			CLK1=0;
			uiData = uiData<<1;
	}
}

//=============================================================
// 語法格式:	void nRF2401_SendByte(unsigned int TxData)
// 實現功能:	將目標地址+字節數據寫入nRF2401A
// 參數:		unsigned int TxData: 待發送字節數據
// 返回值:		無
//=============================================================
void nRF2401_SendByte(unsigned char TxData)
{
	unsigned int i;

     CE=1;
	Delay_Us(1);
				
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	nRF2401_WriteByte(TxData);

	CE=0;

	DATA=0;
	Delay_Us(10);
}


  void nRF2401_Str(unsigned char *arr)
{
	unsigned char i;
	
	i = 0;
	while(arr[i] != '\0')
	{
		nRF2401_SendByte(arr[i]);
		i++;
	}
}
//=============================================================
// 語法格式:	void nRF2401_SendWord(unsigned int TxData)
// 實現功能:	將目標地址+字數據寫入nRF2401A
// 參數:		unsigned int TxData: 待發送字數據
// 返回值:		無
//=============================================================
void nRF2401_SendWord(unsigned int TxData)
{
	unsigned int i;
	

	CE=1;
	Delay_Us(1);				
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	nRF2401_WriteWord(TxData);

	CE=0;

	DATA=0;
	Delay_Us(20);
}

//=============================================================
// 語法格式:	void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
// 實現功能:	向nRF2401A發送一個數組的數據(字節方式)
// 參數:		unsigned int *TxData: 待發送數組
//				unsigned int DataByte:數組的長度					
// 返回值:		無
//=============================================================
void nRF2401_SendBuffer_Byte(unsigned char *TxData,unsigned char DataByte)
{
	unsigned int i;
	

	CE=1;
	Delay_Us(1);				
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	for(i=0; i<DataByte; i++)
	{
		nRF2401_WriteByte(TxData[i]);
	}

	CE=0;

	DATA=0;
	Delay_Us(20);
}

//=============================================================
// 語法格式:	void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
// 實現功能:	向nRF2401A發送一個數組的數據(字方式)
// 參數:		unsigned int *TxData: 待發送數組
//				unsigned int DataWord:數組的長度					
// 返回值:		無
//=============================================================
void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
{
	unsigned int i;

	CE=1;
	Delay_Us(1);					//
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	for(i=0; i<DataWord; i++)
	{
		nRF2401_WriteWord(TxData[i]);
	}

	CE=0;

	DATA=0;
	Delay_Us(20);
}

//=============================================================
// 語法格式:	unsigned int nRF2401_RxStatus()
// 實現功能:	判斷nRF2401A的接收狀態
// 參數:		無
// 返回值:		0:	沒有接收到數據
//				1:	已經接收到數據,等待讀出
//=============================================================
unsigned char nRF2401_RxStatus()
{

	if(DR1==0)
		return(0);
	else
		return(1);
}

//=============================================================
// 語法格式:	void nRF2401_ReceiveByte(unsigned int *RxData)
// 實現功能:	從nRF2401A讀出一個字節的數據
// 參數:		unsigned int *RxData:讀出的數據
// 返回值:		無
//=============================================================


void nRF2401_ReceiveByte(unsigned char *RxData)
{

   	unsigned char i = 0,j = 0;
	unsigned char dat = 0;


    while(DR1)
	{

		dat <<= 1;
		
		 CLK1=1;
		_nop_();
		_nop_();
		if(DATA)
			dat |= 0x01;
		i++;

		CLK1=0;

		if(i>7)
		{
			i = 0;
			RxData[j] = dat;
			dat = 0;
			j++;
		}

	}

	DATA=1;
 

}

//=============================================================
// 語法格式:	void nRF2401_ReceiveWord(unsigned int *RxData)
// 實現功能:	從nRF2401A讀出一個字的數據
// 參數:		unsigned int *RxData:讀出的數據
// 返回值:		無
//=============================================================
void nRF2401_ReceiveWord(unsigned int *RxData)
{
	unsigned int i = 0,j = 0;
	unsigned int dat = 0;


	while(DR1)
	{
		dat <<= 1;

		 CLK1=1;
		_nop_();
		_nop_();
		if(DATA)
			dat |= 0x01;
		i++;

		CLK1=0;

		if(i>15)
		{
			i = 0;
			RxData[j] = dat;
			dat = 0;
			j++;
		}

	}

	DATA=1;
}


//=============================================================
// 語法格式:	void Delay_Us(unsigned int TimeCnt)
// 實現功能:	延時(uS)
// 參數:		unsigned int TimeCnt:延時的us數
// 返回值:		無
//=============================================================
void Delay_Us(unsigned int TimeCnt)
{
	int i;

	for(i = 0; i < TimeCnt; i++)
	{

				_nop_();
	
	}
}


//******************************** END *************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区不卡| 色噜噜久久综合| 一区二区三区中文字幕在线观看| 69堂精品视频| 成a人片国产精品| 久久国产麻豆精品| 亚洲图片欧美一区| 成人欧美一区二区三区白人| 日韩午夜电影av| 欧美性大战xxxxx久久久| 丁香婷婷综合激情五月色| 男男成人高潮片免费网站| 一区二区三区在线视频播放| 欧美国产一区二区| 精品国产人成亚洲区| 欧美三级视频在线观看| 91蝌蚪国产九色| 夫妻av一区二区| 精品一区二区三区视频| 亚洲不卡av一区二区三区| 国产精品理论片在线观看| 精品国产123| 欧美一区二区三区免费观看视频| 色爱区综合激月婷婷| 大陆成人av片| 国产精品一区二区三区99| 欧美aaaaaa午夜精品| 午夜精品久久久久久久久 | 中文字幕欧美激情| 精品国产一区久久| 欧美一区二区三区四区五区| 在线观看不卡视频| 色就色 综合激情| 色综合久久久久网| 91麻豆国产自产在线观看| 99久久99久久精品免费观看| 懂色中文一区二区在线播放| 丁香亚洲综合激情啪啪综合| 国产精一区二区三区| 国产大陆亚洲精品国产| 国产精品系列在线观看| 国产精品综合久久| 丁香一区二区三区| 成人av网站免费观看| jizzjizzjizz欧美| 97久久精品人人爽人人爽蜜臀| 成人av一区二区三区| 成人精品鲁一区一区二区| 成人精品国产一区二区4080| 99视频精品在线| 91精品91久久久中77777| 欧美视频一区在线观看| 欧美高清性hdvideosex| 欧美一级高清片| 久久一区二区三区国产精品| 中文字幕乱码日本亚洲一区二区 | 国产精品久久久久久久久免费丝袜| 国产日韩欧美在线一区| 国产精品理论片在线观看| 亚洲欧美激情视频在线观看一区二区三区| 1000精品久久久久久久久| 亚洲欧美日韩一区二区| 亚洲国产aⅴ天堂久久| 日韩电影网1区2区| 国产乱子伦视频一区二区三区 | 日韩二区三区四区| 国产美女主播视频一区| 不卡av电影在线播放| 欧美日韩国产综合草草| 欧美一级久久久| 日本午夜精品视频在线观看 | 国产精品99久久久久久似苏梦涵 | 欧美精品在线观看一区二区| 日韩三级视频在线看| 中文字幕欧美国产| 一二三四社区欧美黄| 蜜桃视频在线观看一区| 国产91精品一区二区麻豆亚洲| 91久久久免费一区二区| 日韩一区二区三区电影| 国产精品免费人成网站| 性久久久久久久| 国产一区免费电影| 欧美性大战xxxxx久久久| 亚洲精品在线免费播放| 亚洲欧洲综合另类| 免费观看91视频大全| 99精品视频一区二区三区| 5566中文字幕一区二区电影 | 久久久亚洲国产美女国产盗摄 | 偷拍自拍另类欧美| 国产成人av电影在线| 欧美夫妻性生活| 亚洲色图制服诱惑| 经典一区二区三区| 欧美三级乱人伦电影| 欧美午夜视频网站| 亚洲国产欧美在线| 亚洲日本中文字幕区| 久久国产人妖系列| 欧美在线综合视频| 国产亚洲欧美日韩俺去了| 亚洲五码中文字幕| 97se亚洲国产综合自在线| 精品欧美一区二区三区精品久久| 一区二区三区不卡在线观看| 国产成人自拍在线| 日韩欧美第一区| av中文字幕不卡| 亚洲青青青在线视频| 日韩1区2区日韩1区2区| 一本久久a久久免费精品不卡| 亚洲精品一线二线三线无人区| 亚洲第一激情av| 91污在线观看| 高清成人在线观看| 国产成人亚洲综合a∨婷婷| 国产成人精品一区二区三区网站观看| 欧美日韩专区在线| 一区二区在线看| a4yy欧美一区二区三区| 欧美国产一区在线| 丁香婷婷综合色啪| 欧美国产精品中文字幕| 国产一区二区福利视频| 精品国产乱码久久久久久牛牛| 日韩在线一区二区三区| 欧美日本在线看| 亚洲国产日韩a在线播放| 一本到一区二区三区| 亚洲欧美成人一区二区三区| 波多野结衣的一区二区三区| 国产精品伦理一区二区| 豆国产96在线|亚洲| 久久精品欧美日韩| 国产 日韩 欧美大片| 国产三级欧美三级日产三级99| 激情综合亚洲精品| 久久久三级国产网站| 国产激情视频一区二区三区欧美| 欧美成人vr18sexvr| 紧缚奴在线一区二区三区| 久久影院午夜论| 成人深夜福利app| 中文字幕欧美一区| 色婷婷激情综合| 亚洲国产成人va在线观看天堂| 欧美日韩视频一区二区| 日日夜夜精品视频天天综合网| 91.com在线观看| 久久电影网电视剧免费观看| 久久久久久久久岛国免费| 不卡电影免费在线播放一区| 亚洲另类一区二区| 欧美老年两性高潮| 美女www一区二区| 久久久久国产精品免费免费搜索| 高清久久久久久| 亚洲精选视频在线| 欧美区一区二区三区| 久久91精品国产91久久小草| 久久日一线二线三线suv| 成人免费黄色大片| 伊人性伊人情综合网| 91精品久久久久久久99蜜桃| 精品无码三级在线观看视频| 国产精品美女久久久久高潮| 91久久久免费一区二区| 蜜臀av一区二区在线观看| 国产欧美一区视频| 欧洲一区二区三区在线| 美女www一区二区| 中文字幕日韩一区| 7777女厕盗摄久久久| 国产91丝袜在线播放0| 一区二区三区四区在线免费观看 | 精品亚洲国产成人av制服丝袜| 国产日韩欧美电影| 欧美视频精品在线观看| 精彩视频一区二区三区| 一区二区三区不卡视频在线观看| 欧美变态tickle挠乳网站| 色噜噜狠狠色综合中国| 久久丁香综合五月国产三级网站| 亚洲天堂成人网| 亚洲精品一区二区三区影院 | 丝袜a∨在线一区二区三区不卡| 26uuu国产日韩综合| 欧洲一区二区三区在线| 国产剧情一区在线| 日韩国产在线观看| 亚洲欧洲在线观看av| 欧美岛国在线观看| 欧美性猛交xxxx黑人交| 成人高清免费在线播放| 日本vs亚洲vs韩国一区三区二区| 最新国产成人在线观看| 精品国产三级a在线观看| 欧美日韩不卡在线| 91丨九色丨蝌蚪富婆spa|