📄 dds.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -