无线收发nfr905接收程序

来源:本站
导读:目前正在解读《无线收发nfr905接收程序》的相关信息,《无线收发nfr905接收程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《无线收发nfr905接收程序》的详细说明。
简介:本文介绍的主要是无线收发nfr905的接收程序

//数传接收2007/8/1 AT89C2051 11.0592MHz//Module nRF905_RX  VCC=3V#include <reg51.H>#include <intrins.h>//_nop_()typedef unsigned char uchar;typedef unsigned int uint; //配置口定义//sbit TXEN   =    P1^7;sbit TRX_CE =    P1^6;sbit PWR    =    P1^5;//SPI口定义//sbit MISO   =    P1^1;sbit MOSI   =    P1^0;sbit SCK    =    P3^7;sbit CSN    =    P3^3;//状态输出口//sbit CD    =    P1^4;sbit AM    =    P1^3;sbit DR    =    P3^2;sbit LED1  =    P3^4;sbit LED2  =    P3^5;//控制按钮sbit AN1  =    P3^0;sbit AN2  =    P3^1;//--------------------------------------void Init_MCU(void){ TMOD=0x20;   TH1=0xfd;  //Baudrate=19200   TL1=0xfd;   PCON=0x80;   SCON=0x50;   TR1=1; LED1=1; LED2=1;}//-----------------------------------------------void Send_PC(uchar mess){ SBUF=mess; while(TI==0); TI=0;} //----------------------------------------------//RF寄存器配置//unsigned char idata RFConf[11]={    0x00,          //配置命令    0x6C,          //CH_NO,配置频段在433.2MHZ    0x0C,          //输出功率为10db,不重发,节电为正常模式    0x44,          //地址宽度设置,为4字节    0x04,0x04,      //接收发送有效数据长度为4字节    0xE7,0xE7,0xE7,0xE7,//接收地址    0xDE,          //CRC充许,16位CRC校验,外部时钟信号使能,16M晶振};uchar TxRxBuffer[5];bit lcdbit;//延时void Delay(uint x){    uint i;    for(i=0;i<x;i++){        _nop_();    }}//SPI口写数据到nRF905void SpiWrite(uchar b){    uchar i=8;    while (i--)    {        Delay(10);        SCK=0;        MOSI=(bit)(b&0x80);        b<<=1 ;         Delay(10);        SCK=1;         Delay(10);        SCK=0;    }    SCK=0;}//由nRF905读数据uchar SpiRead(void){    uchar i=8;    uchar ddata=0;    while (i--)    {        ddata<<=1 ;        SCK=0;        _nop_();_nop_();        ddata|=MISO;        SCK=1 ;        _nop_();_nop_();    }    SCK=0;    return ddata;}//接收数据包void RxPacket(void){    uchar i;    i=0;    while(DR)    {        TxRxBuffer = SpiRead();        i++;    }}/*;写发射数据命令:20H;读发射数据命令:21H;写发射地址命令:22H;读发射地址命令:23H;读接收数据命令:24H*///--------------------------------------void DelayMs(uint n)       //j=115@F=11.0592MHz{ uchar j;                 while(n--) {for(j=0;j<115;j++);}}//等待接收数据包uchar temp;void Wait_Rec_Packet(void){    TXEN=0;    TRX_CE=1;    while(1)    {        if(DR)        {            TRX_CE=0;        //若数据准备好则进入待机模式,操作SPI            CSN=0;            SpiWrite(0x24);            RxPacket();            CSN=1;                LED2=0;    DelayMs(200);    LED2=1;      //如果接收的数据正确            //}            break;        }    }}//初始化配置寄存器void Ini_System(void){    uchar i;    LED1=0;    Delay(10000);    LED1=1;    lcdbit=1;    CSN=1;    SCK=0;    PWR=1;    TRX_CE=0;//SPI写入    TXEN=0;    _nop_();    CSN=0;    for(i=0;i<11;i++){        SpiWrite(RFConf);    }    CSN=1;    PWR=1;    TRX_CE=1;//    TXEN=0;    Delay(1000);}//-----------------------------------------------        void main(void){    uint i; DelayMs(100); LED1=0; DelayMs(1000); LED1=1; Init_MCU(); Send_PC(0xAA); Send_PC(0xBB);  Ini_System();     while(1)    {    Wait_Rec_Packet();        //等待接收完成    for(i=0;i<4;i++)   Send_PC(TxRxBuffer);    }}

提醒:《无线收发nfr905接收程序》最后刷新时间 2024-03-14 01:20:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《无线收发nfr905接收程序》该内容的真实性请自行鉴别。