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

📄 main.c

📁 无线单片机CC1110的一些使用源代码
💻 C
字号:
#include <ioCC1110.h>

#define uint unsigned int
#define uchar unsigned char
#define DELAY 10000

//小灯控端口定义
#define led1 P1_0
#define led2 P1_1

void Delay(void);
void Initial(void);
void PowerMode(uchar sel);
void Init_clocks(uchar para1,uchar para2,uchar para3,uchar para4);

/****************************************************************
*函数功能:延时						
*入口参数:无							
*返回值  :无							
*说  明	:可在宏定义中改变延时长度			
****************************************************************/
void Delay(void)
{
	uint tt;
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
}

/****************************************************************
*函数功能:初始化电源					
*入口参数:para1,para2,para3,para4			
*返回值	:无						
*说  明	:para1,模式选择						
*																*
* para1  0 	1	2	3											*
* mode 	PM0	PM1	PM2	PM3											*
*																*
****************************************************************/
void PowerMode(uchar sel)
{
	uchar i,j;
	i = sel;
	if(sel<4)
	{
		SLEEP &= 0xfc;
		SLEEP |= i;
		for(j=0;j<4;j++);
		PCON = 0x01;
	}
	else
	{
	    PCON = 0x00;
	}
}

/****************************************************************
*函数功能 :初始化时钟						
*入口参数 :para1		选择使用RC、晶振(高速)1-0	
*	  :para2	        选择使用RC、晶振(低速)1-0
*	  :para3		选择时计数钟分频	000-111
*	  :para4		选择时系统钟分频	000-111
*返 回 值 :无								
*说    明 :para3<=para4 , para1(2)=1使用RC,反之使用晶振		
****************************************************************/
void Init_clocks(uchar para1,uchar para2,uchar para3,uchar para4)
{
	uchar i;

	i = para1<<7;
	CLKCON |= 0X80;
	CLKCON &= i;
	
	i = para2<<6;
	CLKCON |= 0X40;
	CLKCON &= i;

	i = para3<<3;
	CLKCON &= 0X37;
	CLKCON |= i;

	i = para4;
	CLKCON &= 0XF8;
	CLKCON |= i;
}
/****************************************************************
*	函数功能:初始化I/O,控制LED							
*	入口参数:无						
*	返回值	:无						
*	说  明	:初始化完成后关灯				
****************************************************************/
void Initial(void)
{
	//P1 out
	P1DIR = 0x03;     //定义P1_0,P1_1为输出
	led1 = 1;
	led2 = 1;         //close led
}

/****************************************************************
*	函数功能:主函数					
*	入口参数:					
*	返回值	:无						
*	说  明	:10次绿色LED闪烁后进入睡眠状态			
****************************************************************/
void main()
{
	uchar count = 0;
	Initial();
	Init_clocks(0,0,0,4);
	//高低速时钟均选用晶振,最后一位形参选择系统时钟分频数
	//改变该值会影响CPU运行速度

	led1 = 0;       //开红色LED,系统工作指示
	Delay();        //延时
	Delay();
	Delay();
	Delay();

	while(1)
	{
		led2 = !led2;
		count++;
		if(count == 20)PowerMode(3);
		//10次闪烁后进入睡眠状态

		Delay();
		Delay();
                //延时函数无形参,只能通过改变系统时钟频率
                //来改变小灯的闪烁频率
	};
}

⌨️ 快捷键说明

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