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

📄 adc.bak

📁 nRF24E1多发单收
💻 BAK
字号:
#include "reg24e1.h"
#include "radio.h"
#include "delay.h"
#include "spi.h"

tRadioParm RadioParm;
tComParm ComParm;

#define RADIO_PACKET_SIZE 14 
const unsigned char RFConfigBuf[15] =
{
	0x08,RADIO_PACKET_SIZE<<3,  //initial data packet size in bits
	0x00,0x00,0x00,0x00,0x06,   //RX channel 2 address
	0x00,0x00,0x00,0x00,0x05,   //RX channel 1 address
	0x83,                       //32 address bits, 16 bit CRC
	0xEF,                       //power set to 0dBm
	0x05                        //RF channel set to #25, RX on
};
//********************************************************
// Delay
void Delay100us(volatile unsigned char n)
{
	unsigned char i;
	while(n--)
	for (i=0;i<35;i++) ;
}
void Delay5us(void)
{
	unsigned char i;
	for (i=0;i<2;i++) ;
}
//********************************************************
// SpiRadio
void SpiRadio(void)
{
	SPICLK = 0;                     // Max SPI clock (XTAL/8)
	P0_DIR &= ~0x20;                // Set P0.5 as output
	P0 |= 0x20;                     // Set P0.5 high to disable spi netburner chip select
	SPI_CTRL = 0x02;                // Connect internal SPI controller to Radio
}
//********************************************************
// SpiReadWrite
unsigned char SpiReadWrite(unsigned char b)
{
	EXIF &= ~0x20;                  
	SPI_DATA = b;                   
	while((EXIF & 0x20) == 0x00)  ;
	return SPI_DATA;
}
//********************************************************
// SpiReadBuf
//  SpiReadBuf(&RXbuf,n);
void SpiReadBuf(unsigned char* buf, unsigned char n)
{
	unsigned char i;
	for (i=0;i<n;i++)
	{
		*buf = SpiReadWrite(0);
		buf++;
	}
}
//********************************************************
// SpiWriteBuf
//  SpiWriteBuf(&TXbuf,n);
void SpiWriteBuf(unsigned char* buf, unsigned char n)
{
	unsigned char i;
	for (i=0;i<n;i++)
	{
		SpiReadWrite(*buf);
		buf++;
	}
}
//********************************************************
// RadioInit
void RadioInit(void)
{
	unsigned char i;
	unsigned char *cpt;
	unsigned char *bpt;
	cpt = &RFConfigBuf[0];
	bpt = RadioCfgBufPt;
	for (i=0;i<15;i++)
	{
		*bpt = *cpt;
		bpt++;
		cpt++;
	}
}
//********************************************************
// RadioOn
void RadioOn(void)
{
	PWR_UP = 1;
	Delay100us(30);
	SpiRadio();
}
//********************************************************
// RadioCfg
void RadioCfg(void)
{
	CE = 0;
	CS = 1;
	Delay5us();
	SpiWriteBuf(RadioCfgBufPt,RADIO_CFG_BYTES);
	CS = 0;
	CE = 1;
	Delay5us();
}

//********************************************************
// RadioRXBuf
unsigned char RadioRXBuf(unsigned char *bufPt)
{
	unsigned char r;    
	if(DR1 == 1)
	{
		r = 1;
		SpiReadBuf(bufPt,RadioParm.Data1>>3);
		while(DR1==1)
		SpiReadWrite(0);
	}
	else
	{
		r = 0;
	}
	return r;
}
void uart_init(void)
{
	TH1 =243;      // 19200@16MHz (when T1M=1 and SMOD=1)
	CKCON |= 0x10;  // T1M=1 (/4 timer clock)
	PCON = 0x80;    // SMOD=1 (double baud rate)
	SCON = 0x52;    // Serial mode1, enable receiver
	TMOD = 0x20;    // Timer1 8bit auto reload 
	TR1 = 1;        // Start timer1
	P0_DIR |= 0x02; // P0.1 (RxD) is an input
	P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
}
unsigned char ReceivePacket()
{
	unsigned char b;

	while(RadioRXBuf(ComRXBufPt) == 0) ;

	    b = 0xFF;
	while(TI==0);TI=0;SBUF=b;
	while(TI==0);TI=0;SBUF=b;
		b = ComParm.recADC1h;
	while(TI==0);TI=0;SBUF=b;
		b = ComParm.recADC1l;
	while(TI==0);TI=0;SBUF=b;
	    b = ComParm.recADC2h;	
	while(TI==0);TI=0;SBUF=b;
		b = ComParm.recADC2l;	
	while(TI==0);TI=0;SBUF=b;
	    b = ComParm.recADC3h;	
	while(TI==0);TI=0;SBUF=b;
		b = ComParm.recADC3l;	
	while(TI==0);TI=0;SBUF=b;

	Delay100us(100);
	return b;
}

void Init(void)
{
	P0_DIR = 0x40;                  // P0.6 is input, the rest output
	P0 = 0x10;                      // P0.4 = 1 for the rec/tran selection
	RadioInit();
	RadioOn();
	RadioCfg();
}
void main(void)
{
	uart_init();
	Init();

	for(;;)
	{
		ReceivePacket();
	}
}

⌨️ 快捷键说明

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