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

📄 cc1100_mcu_z.c.bak

📁 用c8051f310开发的433M无线模块cc1100的完整程序
💻 BAK
字号:
/******************************************************************************
文件名:	CC1100_SPI_z.c
说  明:	MCU操作CC1100的SPI口的硬件相关的函数。
单片机:	C8051F310
******************************************************************************/

#include "CC1100_MCU_z.h"
#include <intrins.h>
#include "CC1100_z.h"
#include "CC1100_func.h"

/******************************************************************************
函数名称:	void CC1100_Reset(void)
函数功能:	按照手册描述的方法复位CC1100,仅上电后一次性运行。
		如果在工作时复位CC1100,可直接使用SRES命令.
入口参数:	无。
返回值:	无。
/*****************************************************************************/
void CC1100_Reset(void)
{
//(1)	翻转CSn信号。	CC1100_CSn = 1;		//CSn = 1。
	CC1100_SCLK = 1;	//防止意外
	CC1100_SI = 0;		//防止意外
	MCU_Wait_us( 10 );	//延迟10us。

	CC1100_CSn = 0;		//CSn = 0。
	MCU_Wait_us( 30 );	//延迟30us。
	CC1100_CSn = 1;		//CSn = 1。
	MCU_Wait_us( 45 );	//延迟45us。
	CC1100_CSn = 0;		//CSn = 0。
	while ( CC1100_SO );	//等待SO=0,晶振稳定运行。

//(2)	发送SRES复位命令。
	write_spi( CC1100_SRES );	//发送SRES命令。(硬件相关的函数)

//(3)	等待芯片完成内部复位。
	while ( CC1100_SO );	//等待SO=0。
	CC1100_CSn = 1;		//CSn=1。完成。
	CC1100_SCLK = 0;
}

/******************************************************************************
函数名称:	void MCU_wait_us( unsigned char x )
函数功能:	延迟等待 x us(不精确)。
入口参数:	x = 微秒数。
返回值:	无。
******************************************************************************/
void MCU_Wait_us( unsigned char x )
{
	unsigned char i;

	do
	{
		i=12;
		while( --i );
	}
	while (--x);
}

/******************************************************************************
函数名称:	unsigned char write_spi( unsigned char byte )
函数功能:	MCU写一个字节的数据到CC1100。本函数假定SCn=0。
入口参数:	byte = 写入字节。
返回值:	CC1100的状态字节。
******************************************************************************/
unsigned char write_spi( unsigned char x )
{
	unsigned char i;

	for ( i=8; i>0; i--)
	{
		CC1100_SCLK = 0;
		x += x;
		CC1100_SI = CY;
		CC1100_SCLK = 1;
		x |= CC1100_SO;
	}
	CC1100_SCLK = 0;
	return ( x & 0x70 );
}

/******************************************************************************
函数名称:	unsigned char read_spi( unsigned char byte )
函数功能:	MCU读CC1100一个字节的数据。本函数假定地址已发送。
入口参数:	w无
返回值:	该地址的内容。
******************************************************************************/
unsigned char read_spi( void )
{
	unsigned char i, x;

	for ( i=8; i>0; i-- )
	{
		CC1100_SCLK = 1;
		x <<= 1;
		x |= CC1100_SO;
		CC1100_SCLK = 0;
	}
	return ( x );
}

//-----------   T2 中断服务程序   ----------------
void T2_ISR ( void )	interrupt 5 using 2
{
	S_1ms = 1;	//置1ms标志
	TF2H = 0;	//清中断源
}


/***************************************************************
函数名:	void Deal_with_LED4( void )
功能说明:	LED4闪烁。
***************************************************************/
void Deal_with_LED( void )
{
	if ( !(--Blink_time) )
	{
		LED4 ^=1;
		Blink_time = BLINK_OVER;
	}
	LED1 = S_FRX;	//亮=正在接收。
	LED2 = S_FTX;		//亮=正在发送。
	LED3 = CC1100_GDO0;
}

⌨️ 快捷键说明

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