'void'之前的语法错误

时间:2017-05-15 07:35:14

标签: syntax

我的代码有问题。 虽然它说语法void之前有错误。 帮我找到原因。 (该行错误: SIGNAL(SIG_OVERFLOW0)

#include <avr/io.h>
#include <avr/interrupt.h>
#define outp(x,y) ((y)=(x))
#define inp(x) (x)
#define TCCR0 TCCR0B

volatile unsigned int flag,sec,count,flag2;
unsigned int m=0,i=0;
unsigned char number[10]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f}

SIGNAL(SIG_OVERFLOW0)
{
        if(flag>790)
                {
                if(sec>49)
                {
                        if(count==49)
                        count=0;
                        else count++;
                        sec=0;
                }
                else
                sec++;
                flag=0;
                }
        else
        flag++;

        if(flag2>6)
        flag2=0;
        else
        flag2++;

        outp(0,TCNT0);
}
int main(void)
{ outp(0x80,SREG);
  outp(0xff,DDRD);
  outp(0xff,DDRB);
  outp((1<<TOIE0),TIMSK);
  outp(0x00,TCNT0);
  outp(0x01,TCCR0);
  sei();
  for(;;)
  {
  if(count>89)
        {m=9;
        i=count-90;}
  else if(count>79)
        {m=8;
        i=count-80;}
  else if(count>69)
        {m=7;
        i=count-70;}
  else if(count>59)
        {m=6;
        i=count-60;}
  else if(count>49)
        {m=5;
        i=count-50;}
  else if(count>39)
        {m=4;
        i=count-40;}
  else if(count>29)
        {m=3;
        i=count-30;}
  else if(count>19)
        {m=2;
        i=count-20;}
  else if(count>9)
        {m=1;
        i=count-10;}
  else
  {m=0;
  i=count;}
}
}

1 个答案:

答案 0 :(得分:0)

你的第一个问题是你在这一行末尾缺少一个分号:

unsigned char number[10]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f}

如果不知道你的目标设备,很难说是否有任何其他错误,但我愿意打赌你还需要改变其他几条线路。

您应该使用ISR而不是SIGNAL:

ISR(TIMER0_OVF_vect)
{
    ...
}

如何启用定时器中断看起来很可疑。如果你需要改变它,我不会感到惊讶:

outp((1<<TOIE0),TIMSK0);