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

📄 receive.c

📁 cc1100和STC单片机的无限接收器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "reg52.h"
#include "intrins.h"
#include "CC1100.h"
//6264的读写2008-9-21 16:11:00
//-----------------------定义寻址的基址--------------------------------------------------------
//#define base_Adr  0x060000   
//-----------------------定义地址指针,指向基址--------------------------------------------------------
//unsigned char xdata *ORAM_base_Adr = base_Adr;
//------------------------------------------------------------------------------------------------------
// 函数名称 ORAM_write 
// 入口函数 SJAREG_ADR,setting
// 出口函数 无
// 函数功能 写外部数据存储区
//------------------------------------------------------------------------------------------------------
//void ORAM_write(unsigned char ORAM_ADR, unsigned char setting)
//           {
//                    *( ORAM_base_Adr+ ORAM_ADR)=setting;
//            }
//------------------------------------------------------------------------------------------------------
// 函数名称 ORAM _read
// 入口函数 ORAM _ADR
// 出口函数 ORAM _data
// 函数功能 读外部数据存储区
//------------------------------------------------------------------------------------------------------
//unsigned char ORAM_read(unsigned char ORAM_ADR)
//{
//unsigned char ORAM_data;
//ORAM_data=*( ORAM_base_Adr+ ORAM_ADR);
//return(ORAM_data);
//}


#define		INT8U				unsigned char
#define		INT16U				unsigned int


#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

INT8U  arrRx[67]=0;
INT8U i;
INT8U leng;


sbit 	GDO0   =P3^2;
sbit 	GDO2   =P3^3;
sbit	CSN	   =P1^4;
sbit	MOSI   =P1^5;
sbit	MISO   =P1^6;
sbit	SCLK   =P1^7;
//sbit    spz    =P2^4;
sbit    LED1   =P2^1;
sbit    LED2   =P2^1;
sbit    key    =P2^0;





/****************************************************************************************
//全局变量定义
/****************************************************************************************/
//INT16U TimeOutCount[2]={0,0};							//超时计数器
INT8U code PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};//输出为+10dm时的功率

//*****************************************************************************************
//函数名:delay(unsigned int s)
//输入:时间
//输出:无
//功能描述:普通廷时
//*****************************************************************************************		
void 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_();//15us延时
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_(); 
    } while (--timeout);
}



/*****************************************************************************************
//函数名:UartInit()
//输入:无
//输出:无
//功能描述:串口初始化程序
/*****************************************************************************************/
void UartInit(void)
{
	
	SCON = 0x50;			    // uart in mode 1 (8 bit), REN=1
	TMOD = TMOD | 0x20 ;       // Timer 1 in mode 2 
	TH1  = 0xFD;               // 9600 Bds at 11.059MHz 
	TL1  = 0xFD; 			// 9600 Bds at 11.059MHz
	TR1  = 1; 						     // Timer 1 run
}


/*****************************************************************************************
//函数名:void TimerInit(void)
//输入:无
//输出:无
//功能描述:定时器0初始化程序
/*****************************************************************************************/
void SpiInit(void)//spi口的初始化
{
	CSN=0;
	SCLK=0;
	CSN=1;
}




/*****************************************************************************************
//函数名:CpuInit()
//输入:无
//输出:无
//功能描述:SPI初始化程序
/*****************************************************************************************/
void 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;
	
	SCLK = 0;
	for(i=0; i<8; i++)
	{
		if(dat & 0x80)//从最高位开始发送
		{
			MOSI = 1;
		}
		else MOSI = 0;
		dat <<= 1;

		SCLK = 1; 
		_nop_();
		_nop_();

		temp <<= 1;
		if(MISO)temp++; 
		SCLK = 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
}



//*****************************************************************************************
//函数名:void halSpiWriteReg(INT8U addr, INT8U value)
//输入:地址和配置字
//输出:无
//功能描述:SPI写寄存器
//*****************************************************************************************
void halSpiWriteReg(INT8U addr, INT8U value) 
{
    CSN = 0;
    while (MISO);
    SpiTxRxByte(addr);		//通过spi写地址
    SpiTxRxByte(value);		//写入配置
    CSN = 1;
}




⌨️ 快捷键说明

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