为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

NRF905发送程序

2017-10-16 7页 doc 22KB 26阅读

用户头像

is_977556

暂无简介

举报
NRF905发送程序NRF905发送程序 #include <reg52.h> #include <ABSACC.h> #include <intrins.h> #include <stdio.h> #define uint unsigned int #define uchar unsigned char #define BYTE_BIT0 0x01 #define BYTE_BIT1 0x02 #define BYTE_BIT2 0x04 #define BYTE_BIT3 0...
NRF905发送程序
NRF905发送程序 #include <reg52.h> #include <ABSACC.h> #include <intrins.h> #include <stdio.h> #define uint unsigned int #define uchar unsigned char #define BYTE_BIT0 0x01 #define BYTE_BIT1 0x02 #define BYTE_BIT2 0x04 #define BYTE_BIT3 0x08 #define BYTE_BIT4 0x10 #define BYTE_BIT5 0x20 #define BYTE_BIT6 0x40 #define BYTE_BIT7 0x80 ////////////SPI指令 #define WC 0x00 #define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 bdata unsigned char DATA_BUF; #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0) #define DATA0 ((DATA_BUF&BYTE_BIT0) != 0) sbit flag =DATA_BUF ; sbit flag1 =DATA_BUF ; #define TxRxBuf_Len 32 unsigned char TxRxBuf[TxRxBuf_Len]= { 0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08, 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16, 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24, 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32, }; //配置口定义// //----------------------------------------------NRF905IO---------------------------------------- -------------- sbit TXEN=P1 ; sbit TRX_CE=P3 ; sbit PWR=P1 ; //----------------------------------------------NRF905 --------------------------------------------------- 控SPI制接口 sbit MISO=P1 ; sbit MOSI=P1 ; sbit SCK=P1 ; sbit CSN=P1 ; //----------------------------------------nrf905 --------------------------------------------------------- sbit AM=P1 ; sbit DR=P3 ; sbit CD=P1 ; //--------------------------------------------------------------------------------------------------- ------------ sbit led3=P2 ; sbit led2=P2 ; sbit led1=P2 ; sbit led0=P2 ; //--------------------------------------------------------------------------------------------------- ----------- sbit KEY0=P3 ; sbit KEY1=P3 ; //-------------------------------------------------------------------------------- sbit BELL=P3 ; /////////////////////////////////////////////////////// //sbit DQ=P3 ; //RF寄存器配置// unsigned char idata RFConf[11]= { 0x00, //配置命令// 0x4c, //CH_NO,配置频段在430MHZ 0x0C, //输出功率为10db,不重发,节电为正常模式 0x44, //地址宽度设置,为4字节 0x20,0x20, //接收发送有效数据长度为32字节 0xCC,0xCC,0xCC,0xCC, //接收地址 0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振 }; bit lcdbit; code TxAddress[4]={0xcc,0xcc,0xcc,0xcc}; ///////////延时///////////////// static void Delay(uchar n) { uint i; while(n--) for(i=0;i<80;i++); 状态标志 } /////////////// unsigned char SpiRead(void) { } void SpiWrite(unsigned char send) { unsigned char i; DATA_BUF=send; for (i=0;i<8;i++) { if (DATA7) { } else { } MOSI=0; //总是发送最高位 unsigned char i; for (i=0;i<8;i++) { DATA_BUF=DATA_BUF<<1; SCK=1; if (MISO) { } else { DATA_BUF&=~BYTE_BIT0; //读取最高位,保存至最末尾,通过左移位 完成整个字节 DATA_BUF|=BYTE_BIT0; } SCK=0; } return DATA_BUF; MOSI=1; SCK=1; DATA_BUF=DATA_BUF<<1; SCK=0; } } ////////////////初始化nRF905/////////////////// void nRF905Init(void) { CSN=1; SCK=0; // Spi disable // Spi clock line init low DR=0; // Init DR for input AM=0; CD=0; PWR=1; TRX_CE=0; TXEN=0; // Init AM for input // Init CD for input // nRF905 power on // Set nRF905 in standby mode // set radio in Rx mode } ////////初始化寄存器 void Config905(void) { uchar i; CSN=0; // Spi enable for write a spi command //SpiWrite(WC); // Write config command写放配置命令 for (i=0;i<11;i++) // Write configration words 写放配置字 { SpiWrite(RFConf[i]); // Disable Spi } CSN=1; } /////////////初始化 void Inituart(void) { TMOD = 0x20; TL1 = 0xfd; TH1 = 0xfd; SCON = 0xd8; PCON = 0x80; //timer1 working mode 1 //f7=9600 for 16mhz Fosc,and ... //...fd=19200 for 11.0592mhz Fosc //uart mode 3,ren==1 //smod=1 //start timer1 TR1 = 1; } /////////////发送数据 void TxPacket(void) { uchar i; //Config905(); CSN=0; SpiWrite(WTP); for (i=0;i<32;i++) { // Write payload command SpiWrite(TxRxBuf[i]); // Write 32 bytes Tx data }// Spi enable for write a spi command CSN=1; Delay(1); CSN=0; SpiWrite(WTA); // Spi disable // Spi enable for write a spi command // Write address command } for (i=0;i<4;i++) // Write 4 bytes address { SpiWrite(TxAddress[i]); } CSN=1; TRX_CE=1; Delay(1); TRX_CE=0; // Spi disable // Set TRX_CE high,start Tx data transmission // Set TRX_CE low // while (DR!=1); //////////////////////////////////////////////////// void SetTxMode(void) { TRX_CE=0; TXEN=1; // delay for mode change(>=650us) //Pin->检查是否已存在 同频率载波 Delay(1); } unsigned char CheckCD(void) { } if (CD==1) { return 1; } else { return 0; } void TX(void) { SetTxMode();// Set nRF905 in Tx mode TxPacket();// Send data by nRF905 CheckCD(); // 返回CD的当前电平 } void main(void) { Inituart(); nRF905Init(); Config905(); while(1) { // SetRF_PA_PWR(unsigned char i); //设置发射功率 TX(); } }
/
本文档为【NRF905发送程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索