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

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

?? nrf24l01._c

?? nRF24L01詳細編程資料
?? _C
字號:
#include "iom48v.h"
#include "macros.h"
#include "Defs.h"
#include "nRF24L01.h"  



extern unsigned char Buffer[16]  ; // Define a static TX address


unsigned char TX_ADDRESS[TX_ADR_WIDTH]  = {0x34,0x43,0x10,0x10,0x01}; // Define a static TX address


void nRF24L01_Initial(void)
{
	nRF24L01_CE=0;			// chip enable
	nRF24L01_CSN=1;			// Spi disable
	nRF24L01_SCK=0;			// Spi clock line init high
	
	
}
void nRF24L01ioConfig(void)//LCD initial IO.
{
	PM2	&=0X0F1;		//端口模式設置	1 (輸入)  P2.1~P2.3都設置為輸出
	PU2	&=0X0F1;		//端口上拉設置	1 (上拉)  P2.1~P2.3都設置為無上拉
//	PM13	&=0X0FE;		//端口模式設置	1 (輸入)  P13.0設置為輸出
//	PU13	&=0X0FE;		//端口上拉設置	1 (上拉)  P13.0設置為無上拉

	PM4	|=0X05;			//端口模式設置	1 (輸入)  P4.2都設置為輸入
	PU4	|=0X05;			//端口上拉設置	1 (上拉)  P4.2都設置為有上拉	
	nRF24L01_Initial();
}
/**************************************************
Function: SPI_RW();

Description:
  Writes one byte to nRF24L01, and return the byte read
  from nRF24L01 during write, according to SPI protocol  */
/**************************************************/
unsigned char SPI_RW(unsigned char byte)
{
	unsigned char  bit_ctr;	
	DI();
   	for(bit_ctr=0;bit_ctr<8;bit_ctr++)   	// output 8-bit
   	{
   		if(byte & 0x80) 
   			nRF24L01_MOSI = 1;
   		else 
   			nRF24L01_MOSI = 0;
   		byte = (byte << 1);           		// shift next bit into MSB..
   		nRF24L01_SCK = 1;                   // Set nRF24L01_SCK high..
   		if(nRF24L01_MISO) byte |= 1;
   		nRF24L01_SCK = 0;            		// ..then set nRF24L01_SCK low again
   	}
   	EI();
    return(byte);           		  		// return read byte
}
/**************************************************
Function: SPI_RW_Reg();

Description:
  Writes value 'value' to register 'reg' */
/**************************************************/
unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
{
	unsigned char status;
//	DI();
	nRF24L01_CSN = 0;          // nRF24L01_CSN low, init SPI transaction.
	status = SPI_RW(reg);      // select register
  	SPI_RW(value);             // ..and write value to it..
  	nRF24L01_CSN = 1;                   // nRF24L01_CSN high again
//  EI();
  	return(status);            // return nRF24L01 status byte
}
/**************************************************
Function: SPI_Read();

Description:
  Read one byte from nRF24L01 register, 'reg'  */
/**************************************************/
unsigned char SPI_Read(unsigned char reg)
{
	unsigned char reg_val;
//	DI();
	nRF24L01_CSN = 0;       	// nRF24L01_CSN low, initialize SPI communication...
  	SPI_RW(reg);            // Select register to read from..
  	reg_val = SPI_RW(0);    // ..then read registervalue
    nRF24L01_CSN = 1;       	// nRF24L01_CSN high, terminate SPI communication
 // 	EI();
  	return(reg_val);        // return register value
}
/**************************************************
Function: SPI_Read_Buf();

Description:
  Reads 'bytes' #of bytes from register 'reg'
  Typically used to read RX payload, Rx/Tx address */
/**************************************************/
unsigned char SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
{
	unsigned char status,byte_ctr;
//	DI();
	nRF24L01_CSN = 0;                   // Set nRF24L01_CSN low, init SPI tranaction
  	status = SPI_RW(reg);       		// Select register to write to and read status byte
	for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
    	pBuf[byte_ctr] = SPI_RW(0);    // Perform SPI_RW to read byte from nRF24L01
	nRF24L01_CSN = 1;                  // Set nRF24L01_CSN high again
//  EI();
  	return(status);                    // return nRF24L01 status byte
}
/**************************************************
Function: SPI_Write_Buf();

Description:
  Writes contents of buffer '*pBuf' to nRF24L01
  Typically used to write TX payload, Rx/Tx address */
/**************************************************/
unsigned char SPI_Write_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
{
	unsigned char status,byte_ctr;
//	DI();
	nRF24L01_CSN = 0;                    		// Set nRF24L01_CSN low, init SPI tranaction
  	status = SPI_RW(reg);    					// Select register to write to and read status byte
  	for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // then write all byte in buffer(*pBuf)
    	status = SPI_RW(*pBuf++);
	nRF24L01_CSN = 1;                           // Set nRF24L01_CSN high again
//  	EI();
  	return(status);          					// return nRF24L01 status byte
}
/**************************************************
Function: RX_Mode();

Description:
  This function initializes one nRF24L01 device to
  RX Mode, set RX address, writes RX payload width,
  select RF channel, datarate & LNA HCURR.
  After init, CE is toggled high, which means that
  this device is now ready to receive a datapacket. */
/**************************************************/
void RX_Mode(void)
{
	nRF24L01_CE=0;
//	DI();
  	SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // Use the same address on the RX device as the TX device

  	SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
  	SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
  	SPI_RW_Reg(WRITE_REG + RF_CH, 40);        // Select RF channel 40
  	SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // Select same RX payload width as TX Payload width
  	SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
  	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled..
//	EI();
  	nRF24L01_CE=1;
	//  This device is now ready to receive one packet of 16 bytes payload from a TX device sending to address
  //  '3443101001', with auto acknowledgment, retransmit count of 10, RF channel 40 and datarate = 2Mbps.

}
/**************************************************/

/**************************************************
Function: TX_Mode();

Description:
  This function initializes one nRF24L01 device to
  TX mode, set TX address, set RX address for auto.ack,
  fill TX payload, select RF channel, datarate & TX pwr.
  PWR_UP is set, CRC(2 bytes) is enabled, & PRIM:TX.

  ToDo: One high pulse(>10us) on CE will now send this
  packet and expext an acknowledgment from the RX device. */
/**************************************************/
void TX_Mode(void)
{
	nRF24L01_CE=0;
//	DI();
  	SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // Writes TX_Address to nRF24L01
  	SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
  	SPI_Write_Buf(WR_TX_PLOAD, Buffer, TX_PLOAD_WIDTH); // Writes data to TX payload

  	SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
  	SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
  	SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
  	SPI_RW_Reg(WRITE_REG + RF_CH, 40);        // Select RF channel 40
  	SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
  	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled..
//	EI();
	nRF24L01_CE=1;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草原综合久久大伊人精品| 全国精品久久少妇| 欧美va日韩va| 91在线国内视频| 精品在线一区二区三区| 亚洲欧美乱综合| 久久久国产综合精品女国产盗摄| 欧美亚洲国产一卡| 成人av电影免费观看| 久久精品国产网站| 性久久久久久久久久久久| 国产精品水嫩水嫩| 久久综合狠狠综合久久综合88 | 一区二区三区在线影院| 久久女同精品一区二区| 欧美一级免费观看| 欧美性色黄大片| 91啪亚洲精品| av亚洲精华国产精华精| 韩国女主播成人在线| 午夜精品一区二区三区电影天堂| 亚洲欧美一区二区三区国产精品| 国产婷婷色一区二区三区四区| 91麻豆精品国产91| 欧美日韩在线直播| 91成人国产精品| 色婷婷激情一区二区三区| 成人sese在线| 成人午夜精品一区二区三区| 国产剧情一区二区| 精品一区二区三区在线视频| 青青草原综合久久大伊人精品| 午夜视频一区在线观看| 亚洲狠狠爱一区二区三区| 亚洲午夜视频在线观看| 亚洲午夜精品久久久久久久久| 亚洲精品伦理在线| 亚洲曰韩产成在线| 亚洲综合成人网| 亚洲综合av网| 日本强好片久久久久久aaa| 亚洲五月六月丁香激情| 亚洲一区二区三区激情| 亚洲成人免费视| 五月婷婷久久综合| 日本欧美一区二区在线观看| 久久99精品国产麻豆婷婷 | 91亚洲精品久久久蜜桃| 91在线观看免费视频| 色综合色综合色综合色综合色综合 | 精品国产免费一区二区三区香蕉| 日韩一区二区三区四区五区六区| 日韩三级伦理片妻子的秘密按摩| 日韩欧美亚洲另类制服综合在线| 欧美哺乳videos| 久久午夜国产精品| 中文字幕不卡一区| 亚洲精品高清视频在线观看| 亚洲成人1区2区| 美女性感视频久久| 丁香婷婷综合色啪| 色视频欧美一区二区三区| 欧美亚洲国产bt| 日韩欧美国产午夜精品| 国产视频一区二区三区在线观看| 国产精品国产成人国产三级| 亚洲激情图片一区| 奇米影视在线99精品| 国产成人免费在线视频| 一本在线高清不卡dvd| 欧美久久久久中文字幕| 国产肉丝袜一区二区| 一区二区三区在线观看国产| 日韩高清在线不卡| 国产不卡免费视频| 欧美视频一区二区三区在线观看| 日韩午夜电影av| 国产精品乱码人人做人人爱| 亚洲一二三专区| 国产精品99久久久久久久vr| 色婷婷av一区二区三区之一色屋| 日韩欧美一级片| 亚洲美女淫视频| 国产一区二区精品久久| 欧美中文字幕一区| 国产午夜精品一区二区三区嫩草| 亚洲影视资源网| 国产成人在线电影| 欧美日韩1234| 国产精品久久久久久久久搜平片 | 97成人超碰视| 欧美精品一区二区三区四区| 一区二区久久久| 国产精品一区二区黑丝| 欧美日韩中文字幕精品| 国产欧美一区二区三区鸳鸯浴| 亚洲国产精品久久一线不卡| 丁香五精品蜜臀久久久久99网站| 7777精品伊人久久久大香线蕉超级流畅| 久久精品欧美一区二区三区麻豆| 午夜伊人狠狠久久| 一本到高清视频免费精品| 久久久久久久综合| 日本欧美大码aⅴ在线播放| 99国产精品久| 国产日产亚洲精品系列| 久久不见久久见免费视频1| 欧美视频一区二区在线观看| 亚洲天堂a在线| 国产98色在线|日韩| 欧美成人在线直播| 日韩国产在线观看一区| 91福利精品视频| 亚洲欧洲色图综合| 成人三级伦理片| 久久久国产精品午夜一区ai换脸| 男人操女人的视频在线观看欧美| 欧美私模裸体表演在线观看| 亚洲欧美在线观看| 国产成人精品亚洲日本在线桃色| 日韩免费一区二区| 日本亚洲天堂网| 91精品国产一区二区三区| 亚洲一区二区综合| 91福利精品第一导航| 亚洲精品一二三四区| 91香蕉视频在线| 综合久久久久久| 91亚洲资源网| 亚洲美女屁股眼交3| 日韩三级免费观看| 国内精品视频666| 精品第一国产综合精品aⅴ| 五月天一区二区| 99国产精品国产精品毛片| 中文字幕免费不卡| 高清国产午夜精品久久久久久| 亚洲精品一区二区三区四区高清| 麻豆精品久久久| 2021久久国产精品不只是精品| 九九热在线视频观看这里只有精品| 91精品国产91久久久久久最新毛片| 亚洲va韩国va欧美va精品 | 日韩欧美一级在线播放| 久久精品99久久久| 精品久久久久av影院| 国产综合久久久久影院| 国产免费久久精品| 91免费国产在线| 亚洲一区在线电影| 日韩免费一区二区| 成人一道本在线| 亚洲乱码日产精品bd| 欧美日韩国产影片| 麻豆国产精品一区二区三区| 国产日产欧美一区二区三区| 97se亚洲国产综合自在线| 亚洲午夜久久久久久久久久久| 91精品久久久久久久99蜜桃| 亚洲视频免费在线| 国产区在线观看成人精品| 91老师片黄在线观看| 亚洲妇熟xx妇色黄| 欧美午夜精品电影| 视频一区视频二区中文| 欧美tickling网站挠脚心| 国产1区2区3区精品美女| 亚洲伦理在线精品| 欧美一区二区三区性视频| 国产一区二区三区高清播放| 中文字幕一区二区三区不卡在线 | 欧美精品久久99| 国产一区二区精品久久91| 综合精品久久久| 6080午夜不卡| 国产91综合一区在线观看| 亚洲一区二区三区精品在线| 2024国产精品| 欧美综合色免费| 国产乱码精品一区二区三区av | 91香蕉视频mp4| 琪琪久久久久日韩精品| 中文字幕五月欧美| 国产精品区一区二区三| 国产乱妇无码大片在线观看| 欧美精品一区二区三区在线播放| 91污在线观看| 国产在线播放一区| 亚洲一区二区三区四区五区黄 | 日韩三级视频在线看| 91在线精品秘密一区二区| 久久99久久99| 亚洲图片有声小说| 亚洲欧洲精品一区二区三区| 91精品国产麻豆国产自产在线| caoporen国产精品视频| 免费成人美女在线观看.| 夜夜夜精品看看| 国产欧美久久久精品影院| 91精品国产综合久久婷婷香蕉|