TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430

请问一下这个程序为什么报错我数组没有定义,不知道怎么发截图,我把错误地方标注x、

#include <msp430x24x.h>
#include <math.h>
int y=0
//定义正弦表,将正弦波正半周分为9份//
const long SinTable[36]=                                     
{
22979, 9598, 36938, 27637, 20566, 42342,
8414, 51941, 1948, 55274, 1948, 51941
8414, 42342, 2056, 27637, 36938, 9598,
22979, 9598, 36938, 27637, 20566, 42342,
8414, 51941, 1948, 55274, 1948, 51941,
8414, 42342, 2056, 27637, 36938, 9598,         };         //x
//合成正弦波主程序
void main(void)
{
int i;
WDTCTL= WDTPW+ WDTHOLD;//禁止看门狗定时器
//设置系统时钟,使用外接晶振:8MHz,使单片机的时钟源设为XT2//
BCSCTL1 &=~XT2OFF;
do
{IFG1 &=~OFIFG;
for(i=0xFF; i>0; i–);
}
while((IFG1 & OFIFG)!=0);
BCSCTL2 |=SELM1+DIVM1+DIVM0;
//初始化端口//
P2DIR |=0x03; //P2.0,P2.1为输出
P2OUT &=0X00;
//设置 Timer a//
TACTL |= TASSEL1 + TACLR+ID1+ID0;//选择MLK为时钟,定时器清除
CCTL0=CCIE;
TACCR0=SinTable[0];            // x
//中断允许
_EINT();
TACTL|=MC0;//选择up,16位模式
}
//调用中断函数//
#pragma vector=TIMERA0_VECTOR
interrupt void Timer_A(void)
{
y=(y+1)%36;
if(y==0)
{
TACCR0=SinTable[y];                // x
P2OUT &=0X00;
}
else if(y>0&y<18)
{
TACCR0=SinTable[y];            // x
P2OUT^=0X01;
}
else if(y==18)
{
TACCR0=SinTable[y];           // x
P2OUT=0X00;
}
else if(y>18&y<=35)
{
TACCR0=SinTable[y];            // x
P2OUT^=0X02;
}
}

Susan Yang:

我测试一下后给您回复

发送截图的话,您可以点击右下角的“使用高级编辑器编辑文本”,而后点击 附件 图标上传就可以了

Susan Yang:

请您试一下下面的代码

#include <msp430.h>#include <math.h>
int y=0;const long SinTable[36];const long SinTable[36]=
{
22979, 9598, 36938, 27637, 20566, 42342,
8414, 51941, 1948, 55274, 1948, 51941,
8414, 42342, 2056, 27637, 36938, 9598,
22979, 9598, 36938, 27637, 20566, 42342,
8414, 51941, 1948, 55274, 1948, 51941,
8414, 42342, 2056, 27637, 36938, 9598,};void main(void)
{
int i;
WDTCTL= WDTPW+ WDTHOLD;BCSCTL1 &=~XT2OFF;
do
{IFG1 &=~OFIFG;
for(i=0xFF; i>0; i--);
}
while((IFG1 & OFIFG)!=0);
BCSCTL2 |=SELM1+DIVM1+DIVM0;P2DIR |=0x03;
P2OUT &=0X00;TACTL |= TASSEL1 + TACLR+ID1+ID0;
CCTL0=CCIE;
TACCR0=SinTable[0];_EINT();
TACTL|=MC0;
}#pragma vector=TIMERA0_VECTOR
interrupt void Timer_A(void)
{
y=(y+1)%36;
if(y==0)
{
TACCR0=SinTable[y];
P2OUT &=0X00;
}
else if(y>0&y<18)
{
TACCR0=SinTable[y];
P2OUT^=0X01;
}
else if(y==18)
{
TACCR0=SinTable[y];
P2OUT=0X00;
}
else if(y>18&y<=35)
{
TACCR0=SinTable[y];
P2OUT^=0X02;
}
}

user6327139:

回复 Susan Yang:

谢谢你,程序好像确实没问题了,诶但是仿真图我还是不太会画,没有出结果来。

Susan Yang:

回复 user6327139:

我在另外一个帖子回复了您,您可以看一下

e2echina.ti.com/…/573296

目前暂时手边没有板子,我明天测试一下后给您回复

灰小子:

回复 user6327139:

还是用proteus仿真吗?慢慢来,参考下这个资料:

基于Proteus的MSP430单片机仿真实例

http://bbs.eeworld.com.cn/thread-610333-1-1.html

赞(0)
未经允许不得转载:TI中文支持网 » MSP430
分享到: 更多 (0)