51单片机cc1101模块程序

基于CC1101与STC89C52无线收发程序(发射程序)
#include <reg52.h>
#include <intrins.h>
#define IOCFG2   0x00
#define IOCFG1  0x01
#define IOCFG0  0x02
#define FIFOTHR  0x03//rx和tx FIFO门限
#define SYNC1  0x04//同步词汇,高字节
#define SYNC0  0x05//同步词汇,低字节
#define PKTLEN  0x06//数据包长度
#define PKTCTRL1 0x07//数据包自动控制
#define PKTCTRL0 0x08//数据包自动控制
#define ADDR  0x09//设备地址
#define CHANNR  0x0a//信道数
#define FSCTRL1  0x0b//频率合成控制器
#define FSCTRL0  0x0c//频率控制词汇,高字节
#define FREQ2  0x0d//频率控制词汇,中间字节
#define FREQ1  0x0e//频率控制词汇,低字节
毛辊清洗机#define FREQ0  0x0f//调置器配置
#define MDMCFG4  0x10//调置器配置
#define MDMCFG3  0x11//调置器配置
#define MDMCFG2  0x12//调置器配置
#define MDMCFG1  0x13//调置器配置
#define MDMCFG0  0x14//调置器配置
#define DEVIATN  0x15//主通信控制状态机配置
#define MCSM2  0x16//主通信控制状态机配置
#define MCSM1  0x17//主通信控制状态机配置
#define MCSM0  0x18//频率偏移补偿配置
#define FOCCFG  0x19//位同步配置
#define BSCFG  0x1a//AGC控制
#define AGCCTRL2  0x1b//AGC控制
#define AGCCTRL1  0x1c//AGC控制
#define AGCCTRL0  0x1d//高字节时间0暂停
#define WOREVT1  0x1e//低字节时间0暂停
#define WOREVT0  0x1f//电磁波激活控制
#define WORCTRL  0x20//前末端RX配置
#define FREND1  0x21//前末端TX配置
#define FREND0  0x22//频率合成器校准
#define FSCAL3  0x23//频率合成器校准
#define FSCAL2  0x24//频率合成器校准
#define FSCAL1  0x25//频率合成器校准
#define FSCAL0  0x26//RC振荡器配置
过氧化氢酶活性测定
#define RCCTRL1  0x27//RC振荡器配置
#define RCCTRL0  0x28//频率合成器校准控制
#define FSTEST  0x29//产品测试
#define PTEST  0x2a//AGC测试
#define AGCTEST  0x2b//不同的测试设置
#define TEST2  0x2c//不同的测试设置
#define TEST1  0x2d//不同的测试设置
#define TEST0  0x2e//
#define SRES  0x30//重启芯片sb4
#define SFSTXON  0x31//开启和校准频率合成器
#define SXOFF  0x32//关闭晶体振荡器
#define SCAL  0x33//校准频率合成器并判断
#define SRX   0x34//启用SRX
#define STX   0x35//空闲状态:启用STX
#define SIDLE  0x36//离开RX/TX,关断频率合成器
#define SAFC  0x37//频率合成器AFC调节
#define SWOR  0x38//自动RX选举序列(电磁波激活)
#define SPWD  0x39//当CSN为高时进入功率降低模式
#define SFRX  0x3a//冲洗RX FIFO缓存
#define SFTX  0x3b//冲洗TX FIFO缓存
#define SWORRST  0x3c//重新设置真实时间时钟
#define SNOP  0x3d//无操作
#define PARTNUM  0x30//CC2550组成部分数目
#define VERSION  0x31//当前版本数
#define FREQEST  0x32//频率偏移估计
#define LQI   0x33//连接质量的解调器估计
#define RSSI  0x34//接收信号强度指示
#define MARCSTATE 0x35//控制状态机状态
#define WORTIME1 0x36//WOR计时器高字节
#define WORTIME0 0x37//WOR计时器低字节
#define PKTSTATUS 0x38//当前GDOx状态和数据包状态
#define VCO_VC_DAC 0x39//PLL校准模块的当前设定
#define TXBYTES  0x3a//TX FIFO中的下溢和比特数
#define RXBYTES  0x3b//RX FIFO中的下溢和比特数
#define PATABLE  0x3e
#define TX_FIFO  0x3f
#define RX_FIFO  0x3f
#define data_len 8
typedef  unsigned int uint;
typedef  unsigned char uchar;
uchar rx_buffer[data_len]={0,0,0,0,0,0,0,0};//rx data
//uchar RX_data[data_len];
uchar code tx_buffer[data_len]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//tx data
uchar data_length=0;
uchar code P_Config[]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};//功率配置
sbit CSN=P2^1;
sbit SCLK=P2^7;
sbit SI=P2^2;
sbit SO=P2^0;
sbit GDO0=P2^6;
sbit key=P2^5;
sbit LED=P0^0;
//sbit LED1=P0^6;
void CC1101_Init(void);
void CC1101_RESET(void);
void POWER_UP_RESET(void);
uchar SPI_WR_Byte(uchar value);
void SPI_Write_Byte(uchar addr,uchar value);
uchar SPI_Read_Byte(uchar addr);
void SPI_Write_Strobe(uchar strobe);
void SPI_Write_Burst(uchar addr,uchar *buffer,uchar count);
void SPI_Read_Burst(uchar addr,uchar *buffer,uchar count);
void SPI_Write_Packet(uchar *TX_Buffer,uchar size);
uchar SPI_Read_Packet(uchar *RX_Buffer,uchar length);
void CC1101_Set_TX(void);
void CC1101_Set_RX(void);
void Write_Config(void);
void delay_ms(uint x)
{
 uint i;
 while(x--)for(i=0;i<120;i++);
}
void delay_us(uint x)
{
 do {
        _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();屋顶融雪装置
  _nop_();
    } while (--x);
}
//------------------------------------------------/
//函数功能:通过SPI写读一字节                    /
//输入参数:value                                /
内河航标灯//输出参数:B_value                              /
//-----------------------------------------------/
uchar SPI_WR_Byte(uchar value)
{
 uchar i,B_value=0;
 SCLK=0;
 for(i=0;i<8;i++)
 {
  if(value&0x80)
   SI=1;
  else
   SI=0;
  value<<=1;
  SCLK=1;
  _nop_();_nop_();
  B_value<<=1;
  if(SO)
   B_value|=0x01;
  SCLK=0;
  _nop_();_nop_();
 }
 return B_value;
}
//-------------------------------------------------/

本文发布于:2024-09-22 01:52:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/196680.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:频率   控制   配置   校准   词汇
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议