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

📄 接收.txt

📁 cc1100和STC单片机的无限接收器
💻 TXT
📖 第 1 页 / 共 2 页
字号:
#include "reg52.h"
#include "intrins.h"
#include "CC1100.h"


#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





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, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};


//*****************************************************************************************
//函数名: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;			    // 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)
{
	CSN=0;
	SCLK=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;
	
	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);		//写地址
    SpiTxRxByte(value);		//写入配置
    CSN = 1;
}

//*****************************************************************************************
//函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
//输入:地址,写入缓冲区,写入个数
//输出:无
//功能描述:SPI连续写配置寄存器
//*****************************************************************************************

⌨️ 快捷键说明

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