This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请问一下这个程序为什么报错我数组没有定义,不知道怎么发截图,我把错误地方标注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;
}
}
请您试一下下面的代码
#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; } }