📄 main.c
字号:
/*****************************************************************************\
文件名:main.c
描述:用于MSP430F149。
定时器B产生大约1ms的定时,使主程序退出低功耗模式。主程序执行一遍流程,再
次进入休眠,等待下一次被唤醒。
中断TIME_FA次后,改变定时器的定时时间。
每次中断的时候翻转P4.1脚的电平,使LED熄灭或者点亮。
版本:1.0 2004-9-10
\*****************************************************************************/
#include <MSP430x14x.h>
#include "df_timerb.h"
void InitSys(); //初始化
#define TIME_FA 100 //定时中断产生如此次数后,改变定时时间
unsigned int Cnt=TIME_FA; //中断次数记录
unsigned int TimeZhi=1; //定时时间
#define LED_DIR P4DIR //定义LED输出管脚
#define LED_OUT P4OUT
#define LED_IO BIT1
unsigned char Led=0; //记录LED是亮还是灭。0:灭 其它:亮
int main( void )
{
unsigned char q0;
unsigned char *pq0;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
InitSys(); //初始化
start:
if(Cnt!=0)
Cnt--;
else
{
Cnt=TIME_FA;
if(TimeZhi<0xFFFF) //改变定时器的定时时间
TimeZhi++;
else
TimeZhi=1;
SetTime(TimeZhi); //设置定时时间
Led = !Led;
if(Led==0)
LED_OUT &= ~LED_IO; //熄灭LED
else
LED_OUT |= LED_IO; //点亮LED
}
LPM3; //进入低功耗模式
goto start;
}
/*****************************************************************************
系统初始化
******************************************************************************/
void InitSys()
{
unsigned int iq0;
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振
BCSCTL2 =SELM_2; //选择MCLK为XT2
LED_DIR |= LED_IO;
TimerBInit(); //定时器B初始化
SetTime(TimeZhi); //设置定时时间
GotimeDfB(100); //打开定时器
_EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -