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

📄 df_timera.c

📁 在msp430集成开发环境的 DA转换程序
💻 C
字号:
/*****************************************************************************\
时器A定时,产生中断,输出锯齿波和正弦波
使用TACTL0
工作模式:增计数模式
定时器时钟源:MCLK 8MHz

\*****************************************************************************/
#include <MSP430x16x.h>
#include "df_timera.h"
#include "dac12.h"


//unsigned int iOut0=0;
unsigned int* h;
unsigned int fr=60;



/*****************************************************************************
初始化
*****************************************************************************/
void TimerAInit()
{
	TACTL=TASSEL_2+TACLR+MC_1; //选择时钟源为 MCLK
	h=(unsigned int*)0xf000; //在此初始化正弦列表的头指针
	TACCTL0 = CCIE;            //允许定时器中断
}

/*****************************************************************************
设置定时时间
ti:要定时的时间,与时钟源的频率有关
*****************************************************************************/
void SetTime(unsigned int ti)
{
	TACCR0=ti;		   //定时时间
}

/*****************************************************************************
打开或关闭定时器
doit: 0:停止   100:运行  ti: 定时时间
*****************************************************************************/
void GotimeDfA(unsigned char doit,unsigned int ti)
{
	if(doit==100)
	{      
	        SetTime(ti);	   //设置定时时间
	    
		TACTL |= MC_1+TACLR;	//打开定时器
	}
	else if(doit==0)
	{
		TACTL &= ~MC0;		//关闭定时器
	}
}

/*****************************************************************************
捕获/比较0中断
*****************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)   
{  
      
	
	//捕获/比较0中断
   // DAC通道0输出锯齿波
	//if(iOut0<0xFFF)
        // iOut0++;
       // else
           //iOut0=0;
        //Dac12Write(iOut0,0);
			
   //DAC通道1输出正弦波
         if(h<(unsigned int*)0XF4E6)
		h+=1;
               // h=(unsigned int*)(h&0XF4E6);
				
	 else
	       h=(unsigned int*)0xf000;
	 Dac12Write(*h,1);
			
      if((P2IFG&BIT2)&&(fr<0x3995))    {
          fr=fr+10; 
          GotimeDfA(100,fr); 
          }     
      if((P2IFG&BIT1)&&(fr>50)) { 
          fr=fr-10;
          GotimeDfA(100,fr); 
          }   
      P2IFG=0;
  }
		
	
	



⌨️ 快捷键说明

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