⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1100_rx.c

📁 CC1100收发程序,用STC单片机对CC1100做控制
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>
#include <intrins.h>
#include "CC1100.h"


#define		INT8U				unsigned char
#define		INT16U				unsigned int

#define 	time0h 			(65535-1000)/256
#define 	time0l 			(65535-1000)%256			//定时1MS
#define 	WRITE_BURST     	0x40						//连续写入
#define 	READ_SINGLE     	0x80						//读
#define 	READ_BURST      	0xC0						//连续读
#define 	BYTES_IN_RXFIFO     0x7F  						//接收缓冲区的有效字节数
#define 	CRC_OK              0x80 						//CRC校验通过位标志



#define 	INT8U		unsigned char 
#define 	INT16U		unsigned int

#define		FOSC		11059200	
#define		BAUD		9600
#define		TIMER1		0XFD	//256-(110592/(12*32*96))
#define		TIMER0H		(65535-3*FOSC/12/1000)/256
#define		TIMER0L		(65535-3*FOSC/12/1000)%256			//定时3MSVR

//----------------------------------------------------------------------------------------------------------
//内部寄存器定义
//----------------------------------------------------------------------------------------------------------
//sfr		P4			=	0xc0;	
sfr 	ADC_CONTR 	= 	0xC5;
sfr 	AUXR 		= 	0x8E;
sfr 	ADC_DATA 	= 	0xC6;
sfr 	P1_ADC_EN 	= 	0x97;
sbit	GDO0	=	P3^3;//GDO1
sbit	GDO2	=	P3^2;//GDO2
//sbit	DAT3	=	P3^3;
sbit	CSN	=P1^2;//CSN
sbit	MOSI=P1^5;//MOSI
sbit	MISO=P1^6;//MISO
sbit	SCK	=P1^7;//SCK
//sbit	DAT8	=	P1^5;
//sbit	DAT9	=	P1^4;
//sbit	DAT10	=	P4^2;  

//定义CC1100模块接口

/*
#define	GDO1	DAT1
#define	GDO2	DAT2
#define	CSN		DAT4
#define	MOSI	DAT5
#define	MISO	DAT6
#define	SCK		DAT7
*/
//sbit	LED1	=	P4^1;
//sbit	LED2	=	P4^0;

/****************************************************************************************
//全局变量定义
/****************************************************************************************/
INT16U TimeOutCount[2]={0,0};							//超时计数器
INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};


//*****************************************************************************************
//函数名:delay(unsigned int s)
//输入:时间
//输出:无
//功能描述:普通廷时
//*****************************************************************************************		
delay(unsigned int s)
{
	unsigned int i;
	for(i=0; i<s; i++);
	for(i=0; i<s; i++);
}


void halWait(INT16U timeout) {
    do {
        _nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_(); 
    } while (--timeout);
}

/*****************************************************************************************
//函数名:UartInit()
//输入:无
//输出:无
//功能描述:串口初始化程序
/*****************************************************************************************/
void UartInit(void)
{
	SCON = 0x50;		//串口方式1,允许接收
	TMOD = 0x21;		//定时器1工作方式2,定时器0工作方式1
	TH1 = TIMER1;	
	TL1 = TIMER1;	
	TR1 = 1;		//启动定时器1
}


/*****************************************************************************************
//函数名:void TimerInit(void)
//输入:无
//输出:无
//功能描述:定时器0初始化程序
/*****************************************************************************************/
/*void TimerInit(void)
{
	TH0 = TIMER0H;
	TL0 = TIMER0L;
	ET0 = 1;			//定时器0中断允许
	TF0 = 0;
	TR0 = 1;			//启动定时器0
	EA = 1;				//开全局中断
}*/

void SpiInit(void)
{
	CSN=0;
	SCK=0;
	CSN=1;
}

/*****************************************************************************************
//函数名:CpuInit()
//输入:无
//输出:无
//功能描述:SPI初始化程序
/*****************************************************************************************/
CpuInit(void)
{
		UartInit();
//		TimerInit();
		SpiInit();
		delay(5000);
}
	
/*
//*****************************************************************************************
//函数名:ResetTimer(INT8U n)
//输入:要复位的计时器
//输出:无
//功能描述:复位计时器
//*****************************************************************************************
void ResetTimer(INT8U n)
{
	ET0 = 0;                                    // Disable Timer0 interrupt
	timer[n & 0x01] = 0;                        // Clear timer[n]
	ET0 = 1;                                    // Enable Timer0 interrupt
}


//*****************************************************************************************
//函数名:INT16U ReadTimer(INT8U n)
//输入:要读的计时器
//输出:读出值
//功能描述:读计时器
//*****************************************************************************************
INT16U ReadTimer(INT8U n)
{
	INT16U tmp;
	ET0 = 0;                                    // Disable Timer0 interrupt
	tmp = timer[n];                             // Clear timer[n]
	ET0 = 1;                                    // Enable Timer0 interrupt
	return tmp;
}
*/
/*****************************************************************************************
//函数名:SendCh(ch)
//输入:无
//输出:无
//功能描述:串口发送一个字符
/*****************************************************************************************/
void SendCh(INT8U ch)
{
	SBUF = ch;
	while(!TI);
	TI = 0;
}


/*****************************************************************************************
//函数名:void SendStr(INT8U *arr)
//输入:发送的字符串
//输出:无
//功能描述:发送一个字符串
/*****************************************************************************************/
void SendStr(INT8U *arr)
{
	INT8U i;
	
	i = 0;
	while(arr[i] != '\0')
	{
		SendCh(arr[i]);
		i++;
	}
}

//*****************************************************************************************
//函数名:SpisendByte(INT8U dat)
//输入:发送的数据
//输出:无
//功能描述:SPI发送一个字节
//*****************************************************************************************
INT8U SpiTxRxByte(INT8U dat)
{
	INT8U i,temp;
	temp = 0;
	
	SCK = 0;
	for(i=0; i<8; i++)
	{
		if(dat & 0x80)
		{
			MOSI = 1;
		}
		else MOSI = 0;
		dat <<= 1;

		SCK = 1; 
		_nop_();
		_nop_();

		temp <<= 1;
		if(MISO)temp++; 
		SCK = 0;
		_nop_();
		_nop_();	
	}
	return temp;
}

//*****************************************************************************************
//函数名:void RESET_CC1100(void)
//输入:无
//输出:无
//功能描述:复位CC1100
//*****************************************************************************************
void RESET_CC1100(void) 
{
	CSN = 0; 
	while (MISO); 
	SpiTxRxByte(CCxxx0_SRES); 		//写入复位命令
	while (MISO); 
	CSN = 1; 
}

//*****************************************************************************************
//函数名:void POWER_UP_RESET_CC1100(void) 
//输入:无
//输出:无
//功能描述:上电复位CC1100
//*****************************************************************************************
void POWER_UP_RESET_CC1100(void) 
{
	CSN = 1; 
	halWait(1); 
	CSN = 0; 
	halWait(1); 
	CSN = 1; 
	halWait(41); 
	RESET_CC1100();   		//复位CC1100
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -