nrf905.c

来自「基于STC89C58单片机的无线传输(NFR905)C51原程序」· C语言 代码 · 共 137 行

C
137
字号
//此程序没有加接收反回指令
//
#include <reg52.h>
#include <intrins.h>
#include "nRF905.H"
#define uchar unsigned char
#define uint unsigned int

/***************************************************************
           905
*****************************************************************/
/**********SPI发送一个字节*********/
void SpiWrite(unsigned char Dat)
{uchar b,i;
	for(i=1;i<=8;i++)
	{	b=Dat&0x80;
		if(b==0x80)
			MOSI=1;
		else
			MOSI=0;
		Dat<<=1;
		SCK=1;
//		_nop_();_nop_();_nop_();
		SCK=0;
//	_nop_();_nop_();
	}
//	_nop_();_nop_();_nop_();_nop_();
Key_service();
}
/**********SPI读取一个字节*********/
uchar SpiRead(void)
{	uchar i,a=0;
	for(i=1;i<=8;i++)
	{  a<<=1;
		if(MISO==1)
		a|=0x01;
		SCK=1;
       // _nop_();_nop_();
		SCK=0;_nop_();_nop_();
       //_nop_();_nop_();_nop_();_nop_();
	}
	Key_service();
	return(a);
}
void SPI_addrs(uchar addrs)
{
	SCK=0;
	CSN=0;
	SpiWrite(0x22);
	SpiWrite(0xaa);
	SpiWrite(0xaa);
	SpiWrite(0xaa);
	SpiWrite(addrs);
	CSN=1;
}


void SPI_write_some(uchar CMD,uchar *BUF,uchar NUM)
{	uchar b;
	SCK=0;
	CSN=0;
	SpiWrite(CMD);
	while(NUM)
	{	b=*BUF;
		SpiWrite(b);
		BUF++;
		NUM--;
	}
	CSN=1;
}
void SPI_write(uchar CMD,uchar DAT)
{	SCK=0;
	CSN=0;
	SpiWrite(CMD);
    SpiWrite(DAT);
	CSN=1;
}
/*uchar SPI_read(void)
{   uchar a;
    SCK=0;
	CSN=0;
    _nop_();_nop_();
	_nop_();_nop_();
	a=SpiRead();
	_nop_();_nop_();
	CSN=1;
	return(a);
}*/

void SPI_read_some(uchar CMD,uchar *BUF,uchar NUM)
{
	SCK=0;
	CSN=0;
	SpiWrite(CMD);
	while(NUM)
	{   *BUF=SpiRead();
		BUF++;
		NUM--;
	}
	CSN=1;
}


/********mRF905的初始化***********/
void InitnRF905(void)
{
	CSN  	= 1;
	SCK  	= 0;
	PWR_UP  = 1;
	TRX_CE  = 0;
	TX_EN   = 0;


    MISO=1;
	MOSI=1;
	CSN=1;
//	PWR_UP=0;
	TX_EN=0;
	TRX_CE=0;
	SPI_write(0x00,0x4c);//0x6a);
	SPI_write(0x01,0x0c);//0x0c);
	SPI_write(0x02,0x44);
	SPI_write(0x03,0x04);
	SPI_write(0x04,0x04);
	SPI_write(0x05,0xAA);
	SPI_write(0x06,0xAA);
	SPI_write(0x07,0xAA);
	SPI_write(0x08,0x00);
	SPI_write(0x09,0x58);

	//PWR_UP=1;
	TRX_CE=1;
	delay2(2);

}

⌨️ 快捷键说明

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