ZigBee-CC2530单片机 - 实现软件自动复位
程序源码
#include “ioCC2530.h”
#define LED1 P1_0 // P1_0定义为P1_0
#define LED2 P1_1 // P1_0定义为P1_1
/**************************************************************
函数名称:led_Init
功能:LED初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void led_Init(void)
{
P1SEL = 0x00; //P1为普通 I/O 口
P1DIR |= 0x01; //P1.0输出
LED1 = 0; // 灭LED1
}
/**************************************************************
函数名称:systemClock_Init
功能:系统时钟初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void systemClock_Init(void)
{
unsigned char clkconcmd,clkconsta;
CLKCONCMD &= 0x80;
/* 等待所选择的系统时钟源(主时钟源)稳定 */
clkconcmd = CLKCONCMD; // 读取时钟控制寄存器CLKCONCMD
do
{
clkconsta = CLKCONSTA; // 读取时钟状态寄存器CLKCONSTA
} while(clkconsta != clkconcmd); // 直到选择的系统时钟源(主时钟源)已经稳定
}
/**************************************************************
函数名称:delay
功能:软件延时
入口参数:time——延时时间长短
出口参数:无
返回值:无
**************************************************************/
void delay(unsigned int time)
{ unsigned int i;
unsigned char j;
for(i = 0; i 《 time; i++)
{ for(j = 0; j 《 240; j++)
{ asm(“NOP”); // asm是内嵌汇编,nop是空操作,执行一个指令周期
asm(“NOP”);
asm(“NOP”);
}
}
}
/**************************************************************
函数名称:watchdog_Init
功能:看门狗初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void watchdog_Init(void)
{
WDCTL = 0x00; //看门狗模式,时间间隔一秒
WDCTL |= 0x08; //启动看门狗
}
/**************************************************************
函数名称:FeedWD
功能:喂狗
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void FeedWD(void)
{
WDCTL |= 0x0A;
WDCTL |= 0x05;
}
/**************************************************************
函数名称:main
功能:程序主函数
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void main(void)
{
systemClock_Init();
led_Init();
watchdog_Init();
delay(100); //延时小于1秒。若大于1秒,会出现什么情况?
LED1 =1; //亮LED1
while(1)
{
// FeedWD(); //系统不断复位,小灯每隔1s闪烁一次)
}
}
ZigBee-CC2530单片机 - 实现软件自动复位
程序源码
#include “ioCC2530.h”
#define LED1 P1_0 // P1_0定义为P1_0
#define LED2 P1_1 // P1_0定义为P1_1
/**************************************************************
函数名称:led_Init
功能:LED初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void led_Init(void)
{
P1SEL = 0x00; //P1为普通 I/O 口
P1DIR |= 0x01; //P1.0输出
LED1 = 0; // 灭LED1
}
/**************************************************************
函数名称:systemClock_Init
功能:系统时钟初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void systemClock_Init(void)
{
unsigned char clkconcmd,clkconsta;
CLKCONCMD &= 0x80;
/* 等待所选择的系统时钟源(主时钟源)稳定 */
clkconcmd = CLKCONCMD; // 读取时钟控制寄存器CLKCONCMD
do
{
clkconsta = CLKCONSTA; // 读取时钟状态寄存器CLKCONSTA
} while(clkconsta != clkconcmd); // 直到选择的系统时钟源(主时钟源)已经稳定
}
/**************************************************************
函数名称:delay
功能:软件延时
入口参数:time——延时时间长短
出口参数:无
返回值:无
**************************************************************/
void delay(unsigned int time)
{ unsigned int i;
unsigned char j;
for(i = 0; i 《 time; i++)
{ for(j = 0; j 《 240; j++)
{ asm(“NOP”); // asm是内嵌汇编,nop是空操作,执行一个指令周期
asm(“NOP”);
asm(“NOP”);
}
}
}
/**************************************************************
函数名称:watchdog_Init
功能:看门狗初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void watchdog_Init(void)
{
WDCTL = 0x00; //看门狗模式,时间间隔一秒
WDCTL |= 0x08; //启动看门狗
}
/**************************************************************
函数名称:FeedWD
功能:喂狗
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void FeedWD(void)
{
WDCTL |= 0x0A;
WDCTL |= 0x05;
}
/**************************************************************
函数名称:main
功能:程序主函数
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void main(void)
{
systemClock_Init();
led_Init();
watchdog_Init();
delay(100); //延时小于1秒。若大于1秒,会出现什么情况?
LED1 =1; //亮LED1
while(1)
{
// FeedWD(); //系统不断复位,小灯每隔1s闪烁一次)
}
}
举报