📄 adc.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 + -