dds.c

来自「用MSP430实现的DDS扫频程序,区别于一般的dds产生程序」· C语言 代码 · 共 37 行

C
37
字号
#include <msp430x14x.h>

unsigned int div=10;                        // 输出频率公式为:f = MCLK / div
                                            // 占空比为:(div / 2) / div = 50%
void main(void)
{
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;
  BCSCTL1 &= ~XT2OFF;                       // XT2有效
  
  do
  {
    IFG1 &= ~OFIFG;
    for(i = 0xff; i > 0 ; i--) ;
  }
  while ((IFG1 & OFIFG) != 0) ;            // 等待XT2启动
  
  BCSCTL2 |= SELM_2;                       // MCLK = XT2 = 8MHz
  TACTL = TASSEL_2 + TACLR;
  CCR0 = div;
  CCTL0 |= OUTMOD_7 + CCIE;
  CCR1 = div / 2;
  CCTL1 |= OUTMOD_7;
  P1DIR |= 0X04;                           // P1.2输出
  P1SEL |= 0X04;                           // P1.2为TA1输出
  TACTL |= MC_1;                           // 递增模式
  _EINT();
  while(1);
}

#pragma vector = TIMERA0_VECTOR
__interrupt void TIMERA0_ISR(void)
{
  if (div == 2) div = 10;
  else CCR0 = (--div);
}

⌨️ 快捷键说明

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