请问一下这个程序为什么报错我数组没有定义,不知道怎么发截图,我把错误地方标注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