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

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

?? nrf2401.c

?? 基于無線收發模塊NR2401的收發程序。
?? C
字號:
//====================================================================================
//文 件 名: nRF2401.c
//功能描述: nRF2401的驅動程序
//維護記錄: 2006年10月20
//====================================================================================

#include "spce061a.h"

#define	PWR		0x0001 							// IOB0
#define CE 		0x0002 							// IOB1
#define CS		0x0004 							// IOB2
#define DR1		0x0008 							// IOB3
#define	CLK1	0x0010 							// IOB4
#define DATA	0x0020 							// IOB5

const unsigned int InitData[15] = 				// nRF2401 控制字 15 Byte
{
	0x00,										// 通道二接收數據寬度(bit)
	0x08,										// 通道一接收數據寬度(bit)
	0x00,										// 通道二地址(A24)
	0x00,										// 通道二地址(A23)
	0x00,										// 通道二地址(A22)
	0x00,										// 通道二地址(A21)
	0x00,										// 通道二地址(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)
	0x4F,										// 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)																
	0x64										// b7~b1:發射頻率配置
												// b0:收發控制(0-發送;1-接收)
};
unsigned int AddrBuffer[5];						// 地址寄存器
unsigned int AddrByteCnt;						// 地址Byte數

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

//=============================================================
// 語法格式:	void nRF2401_Initial(void)
// 實現功能:	nRF 初始化
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_Initial(void)
{
	*P_SystemClock = 0x98;						// 設置系統時鐘為49MHz
	*P_IOB_Attrib |= (CS+DATA+PWR+CLK1+CE+DR1);
	*P_IOB_Dir |= (CS+DATA+PWR+CLK1+CE);
	*P_IOB_Dir&=~DR1;
	*P_IOB_Buffer &=~(CS+DATA+CLK1+CE+DR1);		// 初始化IO端口

	nRF2401_ON();
	Delay_Us(3000);
	nRF2401_WriteCommand();						// 向nRF2401A寫命令字
	Delay_Us(300);
}

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

//=============================================================
// 語法格式:	void nRF2401_OFF(void)
// 實現功能:	nRF 掉電
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_OFF(void)
{
	*P_IOB_Buffer &= ~PWR;
}

//=============================================================
// 語法格式:	void nRF2401_WriteCommand(void)
// 實現功能:	nRF 寫命令字
// 參數:		無
// 返回值:		無
//=============================================================
void nRF2401_WriteCommand(void)
{
	unsigned int i;
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer |= CS;
	Delay_Us(5);
	for(i=0; i<15; i++)
	{
		nRF2401_WriteByte(InitData[i]);
	}
	*P_IOB_Buffer &= ~CS;
	*P_IOB_Buffer |= CE;
}

//=============================================================
// 語法格式:	void nRF2401_Mode(unsigned int uiMode)
// 實現功能:	設置nRF2401A的工作方式
// 參數:		uiMode:0--接收;1--發送					
// 返回值:		無
//=============================================================
void nRF2401_Mode(unsigned int uiMode)
{
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer |= CS;
	if(uiMode == 0)
		nRF2401_WriteByte(InitData[14] | 0x01);			// 接收
	else
		nRF2401_WriteByte(InitData[14] & 0xFE);			// 發送
	*P_IOB_Buffer &= ~CS;
	*P_IOB_Buffer |= CE;
}

//=============================================================
// 語法格式:	void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
// 實現功能:	設置目標nRF2401A的地址
// 參數:		unsigned int *Address:地址數組
//				unsigned int AddrByte:數組的長度					
// 返回值:		無
//=============================================================
void nRF2401_SetAddress(unsigned int *Address,unsigned int 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 int uiData)
{
	unsigned int i;
	for(i=0; i<8; i++)
	{
		*P_IOB_Buffer &= ~CLK1;
		if(uiData&0x80)
			*P_IOB_Buffer |= DATA;
		else
			*P_IOB_Buffer &= ~DATA;
			Delay_Us(1);
			*P_IOB_Buffer |= CLK1;
			Delay_Us(1);
			*P_IOB_Buffer &= ~CLK1;
			uiData = uiData<<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++)
	{
		*P_IOB_Buffer &= ~CLK1;
		if(uiData&0x8000)
			*P_IOB_Buffer |= DATA;
		else
			*P_IOB_Buffer &= ~DATA;
			Delay_Us(1);
			*P_IOB_Buffer |= CLK1;
			Delay_Us(1);
			*P_IOB_Buffer &=~CLK1;
			uiData = uiData<<1;
	}
}

//=============================================================
// 語法格式:	void nRF2401_SendByte(unsigned int TxData)
// 實現功能:	將目標地址+字節數據寫入nRF2401A
// 參數:		unsigned int TxData: 待發送字節數據
// 返回值:		無
//=============================================================
void nRF2401_SendByte(unsigned int TxData)
{
	unsigned int i;
	
//	*P_IOB_Dir |= DATA;
	*P_IOB_Buffer |= CE;
	Delay_Us(10);					//
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	nRF2401_WriteByte(TxData);
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer &= ~DATA;
	Delay_Us(200);
}

//=============================================================
// 語法格式:	void nRF2401_SendWord(unsigned int TxData)
// 實現功能:	將目標地址+字數據寫入nRF2401A
// 參數:		unsigned int TxData: 待發送字數據
// 返回值:		無
//=============================================================
void nRF2401_SendWord(unsigned int TxData)
{
	unsigned int i;
	
//	*P_IOB_Dir |= DATA;
	*P_IOB_Buffer |= CE;
	Delay_Us(10);					//
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	nRF2401_WriteWord(TxData);
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer &= ~DATA;
	Delay_Us(200);
}

//=============================================================
// 語法格式:	void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
// 實現功能:	向nRF2401A發送一個數組的數據(字節方式)
// 參數:		unsigned int *TxData: 待發送數組
//				unsigned int DataByte:數組的長度					
// 返回值:		無
//=============================================================
void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
{
	unsigned int i;
	
//	*P_IOB_Dir |= DATA;
	*P_IOB_Buffer |= CE;
	Delay_Us(10);					//
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	for(i=0; i<DataByte; i++)
	{
		nRF2401_WriteByte(TxData[i]);
	}
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer &= ~DATA;
	Delay_Us(200);
}

//=============================================================
// 語法格式:	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;
	
//	*P_IOB_Dir |= DATA;
	*P_IOB_Buffer |= CE;
	Delay_Us(10);					//
	for(i=0; i<AddrByteCnt; i++)
	{
		nRF2401_WriteByte(AddrBuffer[i]);
	}
	for(i=0; i<DataWord; i++)
	{
		nRF2401_WriteWord(TxData[i]);
	}
	*P_IOB_Buffer &= ~CE;
	*P_IOB_Buffer &= ~DATA;
	Delay_Us(200);
}

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

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

	*P_IOB_Dir &= ~DATA;			// 輸入
	while(*P_IOB_Data&DR1)
	{
		dat <<= 1;
		*P_IOB_Buffer &= ~CLK1;
		if(*P_IOB_Data&DATA)
			dat |= 0x01;
		i++;
		*P_IOB_Buffer |= CLK1;
		Delay_Us(1);
		if(i>7)
		{
			i = 0;
			RxData[j] = dat;
			dat = 0;
			j++;
		}
		*P_IOB_Buffer &= ~CLK1;
	}
	*P_IOB_Dir |= DATA;			// 輸出
}

//=============================================================
// 語法格式:	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;

	*P_IOB_Dir &= ~DATA;			// 輸入
	while(*P_IOB_Data&DR1)
	{
		dat <<= 1;
		*P_IOB_Buffer &= ~CLK1;
		if(*P_IOB_Data&DATA)
			dat |= 0x01;
		i++;
		*P_IOB_Buffer |= CLK1;
		Delay_Us(1);
		if(i>15)
		{
			i = 0;
			RxData[j] = dat;
			dat = 0;
			j++;
		}
		*P_IOB_Buffer &= ~CLK1;
	}
	*P_IOB_Dir |= DATA;			// 輸出
}

//=============================================================
// 語法格式:	void Delay_Us(unsigned int TimeCnt)
// 實現功能:	延時(uS)
// 參數:		unsigned int TimeCnt:延時的us數
// 返回值:		無
//=============================================================
void Delay_Us(unsigned int TimeCnt)
{
	int i;
	*P_SystemClock = 0x98;
	for(i = 0; i < TimeCnt; i++)
	{
		*P_Watchdog_Clear = 0x0001;
	}
}


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利国产精品| 99天天综合性| 亚洲一区成人在线| 亚洲欧美日韩在线不卡| 国产精品久久久久久一区二区三区| 欧美不卡视频一区| 久久综合九色综合97婷婷| 日韩视频永久免费| 精品国产乱码91久久久久久网站| 91精品国产综合久久久久久漫画| 欧美久久久久中文字幕| 制服丝袜亚洲色图| 久久婷婷综合激情| 国产精品欧美一区喷水| 亚洲男同性视频| 性欧美大战久久久久久久久| 日韩专区在线视频| 国产一区二区三区视频在线播放| 国产一区二区三区香蕉| 成人黄色小视频| 在线精品国精品国产尤物884a| 欧美日韩中文字幕一区二区| 在线不卡a资源高清| 日韩免费视频一区| 国产精品久久久久久久久免费相片 | 欧美国产激情一区二区三区蜜月 | 国产人妖乱国产精品人妖| 久久久九九九九| 亚洲视频一区二区在线| 亚洲成人综合在线| 国产呦精品一区二区三区网站| 粉嫩蜜臀av国产精品网站| 欧美三级三级三级| 久久这里只有精品6| 一区二区三区四区不卡在线| 婷婷激情综合网| 国产呦萝稀缺另类资源| 色网站国产精品| 精品国产露脸精彩对白| 亚洲黄网站在线观看| 国产一区二区久久| 欧美色窝79yyyycom| 国产三级久久久| 婷婷国产在线综合| 91丝袜国产在线播放| 精品区一区二区| 亚洲成a人在线观看| 国产91高潮流白浆在线麻豆| 欧美精品日韩综合在线| 亚洲视频每日更新| 国内精品免费**视频| 欧美剧在线免费观看网站| 国产精品三级久久久久三级| 麻豆高清免费国产一区| 91高清视频在线| 中文字幕在线视频一区| 国产专区欧美精品| 欧美一区二区三区电影| 一区二区三区精密机械公司| 国产99久久久国产精品免费看| 欧美一卡二卡三卡四卡| 亚洲电影在线免费观看| 91在线免费视频观看| 国产欧美一区二区精品久导航| 免费视频最近日韩| 欧美一区二区日韩一区二区| 亚洲午夜激情av| 欧美亚洲动漫精品| 亚洲综合色噜噜狠狠| 99re热视频精品| 国产精品精品国产色婷婷| 国产高清在线精品| 国产欧美精品一区二区色综合 | 91在线视频在线| 欧美国产丝袜视频| 国产在线乱码一区二区三区| 欧美一区二区视频免费观看| 天天综合天天做天天综合| 在线观看日韩毛片| 亚洲综合精品自拍| 欧美日韩免费高清一区色橹橹 | 美女一区二区久久| 91精品国产91热久久久做人人| 亚洲第一av色| 91精品一区二区三区在线观看| 日日摸夜夜添夜夜添国产精品| 欧美日韩1区2区| 久久成人免费网| 久久久久免费观看| www.av亚洲| 亚洲电影一区二区三区| 日韩欧美中文字幕公布| 国内外成人在线| 中文在线资源观看网站视频免费不卡| 成人午夜看片网址| 亚洲老妇xxxxxx| 91精品国产aⅴ一区二区| 精品亚洲免费视频| 中文一区在线播放 | 亚洲六月丁香色婷婷综合久久 | 综合久久久久久| 欧洲亚洲精品在线| 免费一级欧美片在线观看| 精品国产成人系列| 不卡一区二区在线| 天天色天天操综合| 国产偷v国产偷v亚洲高清| 色综合夜色一区| 日本不卡视频一二三区| 中文一区在线播放| 欧美日韩精品一区二区天天拍小说 | 欧美高清在线一区二区| 色网站国产精品| 久久国产三级精品| 亚洲婷婷在线视频| 欧美一级免费大片| 97国产一区二区| 精久久久久久久久久久| 亚洲色图欧美在线| 欧美成人bangbros| 色综合夜色一区| 国产乱国产乱300精品| 亚洲综合在线五月| 国产欧美日韩在线视频| 欧美日韩国产大片| 成人黄色综合网站| 国内精品伊人久久久久av一坑 | 欧美一区二区久久久| 成人福利视频在线看| 蜜桃av一区二区在线观看| 亚洲图片另类小说| 国产精品美女久久久久久久久久久 | 2021中文字幕一区亚洲| 在线亚洲+欧美+日本专区| 国产精品一二三四| 久久成人综合网| 奇米影视在线99精品| 亚洲欧美日本韩国| 国产精品久久久久久久久免费丝袜 | 成人午夜免费av| 久久av老司机精品网站导航| 午夜影视日本亚洲欧洲精品| 中文在线一区二区| 国产精品网站在线| 久久久久国产精品麻豆ai换脸| 欧美不卡一区二区三区四区| 在线不卡欧美精品一区二区三区| 在线免费视频一区二区| 91一区一区三区| 91丨九色丨国产丨porny| 波多野结衣中文字幕一区| 国产高清亚洲一区| 欧美影视一区在线| 日本道在线观看一区二区| 色婷婷亚洲精品| 91天堂素人约啪| 欧洲精品在线观看| 91成人在线免费观看| 欧洲av一区二区嗯嗯嗯啊| 91蜜桃网址入口| 欧美性xxxxxxxx| 精品婷婷伊人一区三区三| 欧美日韩视频第一区| 日韩欧美国产精品| 精品1区2区在线观看| 久久精品一区二区三区不卡牛牛| 国产视频在线观看一区二区三区| 国产欧美一区在线| 国产精品欧美极品| 一区二区三区日韩在线观看| 亚洲一区二三区| 日韩制服丝袜先锋影音| 久久精品二区亚洲w码| 国产.欧美.日韩| 在线精品视频小说1| 91精品国产综合久久精品性色| 日韩一区二区精品葵司在线| wwww国产精品欧美| 综合激情网...| 五月天一区二区| 国产精品资源在线看| 色综合天天综合| 欧美一级精品在线| 国产精品网站在线| 亚洲电影激情视频网站| 国产一区美女在线| 日本道免费精品一区二区三区| 日韩欧美国产一区二区在线播放 | 欧美日韩在线三级| 精品99一区二区三区| 亚洲免费在线视频一区 二区| 亚洲chinese男男1069| 国产成人夜色高潮福利影视| 欧美在线制服丝袜| 26uuu另类欧美| 亚洲综合偷拍欧美一区色| 国产麻豆9l精品三级站| 欧美日韩免费高清一区色橹橹| 久久精品综合网| 免费人成在线不卡|