📄 main.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 + -