📄 调试51+nrf905无线模块,可以保证稳定的收发,正在完善中。。 (ourdev_cn 我们的电子开发社区).htm
字号:
<BR>#define BYTE_BIT2 0x04
<BR>#define BYTE_BIT3 0x08
<BR>#define BYTE_BIT4 0x10
<BR>#define BYTE_BIT5 0x20
<BR>#define BYTE_BIT6 0x40
<BR>#define BYTE_BIT7 0x80
<BR><BR>bdata unsigned char DATA_BUF;
<BR>#define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
<BR>#define DATA0 ((DATA_BUF&BYTE_BIT0) != 0)
<BR>sbit flag =DATA_BUF^7;
<BR>sbit flag1 =DATA_BUF^0;
<BR>//--------------------------------------------------------------------------------------------------------------
<BR>#define TxRxBuf_Len 4
<BR>unsigned char TxRxBuffer[TxRxBuf_Len];
<BR>//-----------------------------------------------------NRF905端口配置-------------------------------------------
<BR>sbit TXEN=P1^0;
<BR>sbit TRX_CE=P3^2;
<BR>sbit PWR=P1^1;
<BR>sbit MISO=P1^6;
<BR>sbit MOSI=P1^5;
<BR>sbit SCK=P1^7;
<BR>sbit CSN=P1^3;
<BR>sbit AM=P1^4;
<BR>sbit DR=P3^3;
<BR>sbit CD=P1^2;
<BR>//----------------------------------------------------数码管位选IO---------------------------------------------
<BR>sbit led1=P2^1;
<BR>sbit led0=P2^0;
<BR>sbit led2=P2^2;
<BR>sbit led3=P2^3;
<BR>//--------------------------------------------------------------------------------------------------------------
<BR>//uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
<BR>//---------------------------------------------------------------------------------------------------------------
<BR>#define WC 0x00
<BR>#define RC 0x10
<BR>#define WTP 0x20
<BR>#define RTP 0x21
<BR>#define WTA 0x22
<BR>#define RTA 0x23
<BR>#define RRP 0x24
<BR>//--------------------------------------------NRF905寄存器配置--------------------------------------------------
<BR>unsigned char idata RFConf[11]= <BR>{
<BR> 0x00, //配置命令//
<BR> 0x4c,
<BR> 0x0c,
<BR> 0x44,0x04,0x04,
<BR> 0xcc,0xcc,0xcc,0xcc,
<BR> 0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
<BR>};
<BR>//----------------------------------------------延时---------------------------------------------------------------
<BR>void Delay(uchar n) <BR>{
<BR> uint k;
<BR> while(n--)
<BR> for(k=0;k<8;k++);
<BR>}
<BR>//-----------------------------------------------------------------------------------------------------------------
<BR>void delay1(uint i) <BR>{
<BR> for(;i>0;i--);
<BR>}
<BR>//---------------------------------------------------SPI读函数-----------------------------------------------------
<BR>unsigned char SpiRead(void) <BR>{
<BR> unsigned char j;
<BR> for (j=0;j<8;j++)
<BR> {
<BR> DATA_BUF=DATA_BUF<<1;
<BR> SCK=1;
<BR> if (MISO) //读取最高位,保存至最末尾,通过左移位完成整个字节
<BR> {
<BR> DATA_BUF|=BYTE_BIT0;
<BR> }
<BR> else
<BR> {
<BR> DATA_BUF&=~BYTE_BIT0;
<BR> }
<BR> SCK=0;
<BR> }
<BR> return DATA_BUF;
<BR>}
<BR>//---------------------------------------------------SPI写函数----------------------------------------------------
<BR>void SpiWrite(unsigned char send) <BR>{
<BR> unsigned char i;
<BR> DATA_BUF=send;
<BR> for (i=0;i<8;i++)
<BR> {
<BR> if (DATA7) //总是发送最高位
<BR> {
<BR> MOSI=1;
<BR> }
<BR> else
<BR> {
<BR> MOSI=0;
<BR> }
<BR> SCK=1;
<BR> DATA_BUF=DATA_BUF<<1;
<BR> SCK=0;
<BR> } <BR>}
<BR>//-----------------------------------------------初始化nRF905-----------------------------------------------------
<BR>void nRF905Init(void) <BR>{
<BR> CSN=1; // Spi disable
<BR> SCK=0; // Spi clock line init low
<BR> DR=0; // Init DR for input
<BR> AM=0; // Init AM for input
<BR> CD=0; // Init CD for input
<BR> PWR=1; // nRF905 power on
<BR> TRX_CE=0; // Set nRF905 in standby mode
<BR> TXEN=0; // set radio in Rx mode
<BR>}
<BR>//-----------------------------------------------NRF905初始化寄存器-----------------------------------------------------
<BR>void Config905(void) <BR>{
<BR> uchar i;
<BR> CSN=0; // Spi enable for write a spi command
<BR> //SpiWrite(WC); // Write config command写放配置命令
<BR> for (i=0;i<11;i++) // Write configration words 写放配置字
<BR> {
<BR> SpiWrite(RFConf[i]);
<BR> }
<BR> CSN=1; // Disable Spi
<BR>}
<BR>//-----------------------------------------------设置发送状态---------------------------------------------------
<BR>void SetRxMode(void) <BR>{
<BR> TXEN=0;
<BR> TRX_CE=1;
<BR> Delay(1); // delay for mode change(>=650us)
<BR>}
<BR>//-------------------------------------------------判断数据接收状态-----------------------------------------------------
<BR>unsigned char CheckDR(void) &nbs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -