?? df_timera.c
字號:
/*****************************************************************************\
文件名:df_timera.c
描述:用于MSP430F149。
定時器A定時,產生中斷,使主程序退出低功耗模式。
使用TACTL1
工作模式:增計數模式
時鐘源:ACLK為32.768kHz
版本:1.0 2004-9-10
\*****************************************************************************/
#include <MSP430x14x.h>
#include <math.h>
#include "df_timera.h"
#include "dac12.h"
unsigned int iOut0=0;
unsigned int iOut1=0;
#define TIME_10MS 328
/*****************************************************************************
初始化
*****************************************************************************/
void TimerAInit()
{
TACTL=TASSEL_1+TACLR+MC_0; //選擇時鐘源為ACLK
SetTime(TIME_10MS); //設置定時時間
TACCTL1 = CCIE; //允許定時器中斷
}
/*****************************************************************************
設置定時時間
ti:要定時的時間,與時鐘源的頻率有關
*****************************************************************************/
void SetTime(unsigned int ti)
{
TACCR0=ti; //定時時間
}
/*****************************************************************************
打開或關閉定時器
doit: 0:停止 100:運行
*****************************************************************************/
void GotimeDfA(unsigned char doit)
{
if(doit==100)
{
TACTL |= MC_1+TACLR; //打開定時器
}
else if(doit==0)
{
TACTL &= ~MC0; //關閉定時器
}
}
/*****************************************************************************
定時器中斷
*****************************************************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
unsigned int iq0;
switch (__even_in_range(TAIV, 10))
{
case 2:
//捕獲/比較1中斷
//DAC通道0輸出鋸齒波
if(iOut0<0xFFF)
iOut0++;
else
iOut0=0;
Dac12Write(iOut0,0);
//DAC通道1輸出正弦波
if(iOut1<365)
iOut1++;
else
iOut1=0;
iq0=0xFFF*sin(iOut1);
Dac12Write(iq0,1);
break;
}
LPM3_EXIT;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -