社区导航

 

搜索
查看: 2064|回复: 9

[求助] msp430F249程序问题

[复制链接]

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-7 16:06 | 显示全部楼层 |阅读模式
#include "msp430F249.h"
#define uchar unsigned char
#define uint unsigned int
#define NUM 16;
long data;
uint new_cap=0;
uint old_cap=0;
uint N1=0;
char tab[]={0xc0,0xf9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,
                      0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0xff};//共阳极数码管
char position[]={0x20,0x10,0x08,0x04,0x02,0x01};
char diff_buf[]={0,0,0,0,0,0};
long diff[16];
char index=0;
void data_to_buf(long data1)
{
  char i;
  for(i=0;i<6;i++)
  {
  diff_buf=data1%10;
  data1=data1/10;
  }
}
void disp(void)
{
  uint i,k;
  for(i=0;i<6;i++)
  {
   P4OUT=tab[data_to_buf];
  P5OUT=position;
  if(i==3)
    P4OUT&=0X7F;
  for(k=0;k<600;k++);
  P5OUT=0X00;
  }
}
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  char k1;
  BCSCTL2|=SELS;
  BCSCTL2=DIVS0+DIVS1;
  P1DIR|=0XFD;
  P1SEL|=0X02;
  P4DIR=0XFF;
  TACCTL0=CM_1+CAP+CCIS_0+CCIE;
  TACTL=TASSEL_2+MC_2+TAIE;
  _EINT();
  while(1)
  {
    if(index==0)
    {
      data=0;
      for(k1=0;k1<16;k1++)
        data+=diff[k1];
      data=data/NUM;
    }
    data_to_buf(data);
    disp();
  }
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
  new_cap=TACCR0;
  diff[index]=65535*N1+new_cap-old_cap;
  index++;
  if(index==16) index=0;
  old_cap=new_cap;
  N1=0;
}
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
  switch(TAIV)
  {
  case 2:
    break;
  case 4:
    break;
  case 10:
    N1++;
  }
}

报错
Error[Pe852]: expression must be a pointer to a complete object type E:\IAR for msp430\timerA\catchtimerA\main.c 30
求助各位大神,实在是不知怎么改

回复

使用道具 举报

4193

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2015-8-7 22:17 | 显示全部楼层
我想请问下“#define NUM 16;”这个有分号的,在IAR中不会报错吗?宏定义我记得是没有分好的吧

点评

不会报错啊,宏定义自身可以带分号,而且楼主的在楼主的程序里,刚好相当于一个空语句  详情 回复 发表于 2015-8-8 13:30

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-8-8 13:24 | 显示全部楼层
huaiqiao 发表于 2015-8-7 22:17
我想请问下“#define NUM 16;”这个有分号的,在IAR中不会报错吗?宏定义我记得是没有分好的吧

对,这个地方忽略了,竟然我的没报错

点评

恩恩。不过这个分号如果要的话,这个宏定义会不起作用哦。你的中断函数中TAIV这个常变量不定义报错吗  详情 回复 发表于 2015-8-8 18:45

回复

使用道具 举报

2243

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-8-8 13:30 | 显示全部楼层
huaiqiao 发表于 2015-8-7 22:17
我想请问下“#define NUM 16;”这个有分号的,在IAR中不会报错吗?宏定义我记得是没有分好的吧

不会报错啊,宏定义自身可以带分号,而且楼主的在楼主的程序里,刚好相当于一个空语句

点评

他如果这样做,这个宏定义是不起作用的哦。O(∩_∩)O哈哈~  详情 回复 发表于 2015-8-8 18:42

回复

使用道具 举报

39

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-8 15:23 | 显示全部楼层
data_to_buf这个是个函数名,不是变量,不能这样用。
unsigned int data_to_buf(long data1)
{
  char i;
unsigned int data2;
  for(i=0;i<6;i++)
  {
  diff_buf=data1%10;
  data2=data1/10;
  }
return data2;
}

P4OUT=tab[data_to_buf(data1)];
这样是可以的。

回复

使用道具 举报

39

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-8 15:26 | 显示全部楼层
额,我不知道你看懂了没有。expression must be a pointer to a complete object type就是说你的表达必须指向确切的对象,这种意思。我英文不太好。如果,还是不明白可以私聊我……

回复

使用道具 举报

4193

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2015-8-8 18:42 | 显示全部楼层
数码小叶 发表于 2015-8-8 13:30
不会报错啊,宏定义自身可以带分号,而且楼主的在楼主的程序里,刚好相当于一个空语句

他如果这样做,这个宏定义是不起作用的哦。O(∩_∩)O哈哈~

点评

不会啊,没任何问题  详情 回复 发表于 2015-8-9 08:16

回复

使用道具 举报

4193

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2015-8-8 18:45 | 显示全部楼层
步枪 发表于 2015-8-8 13:24
对,这个地方忽略了,竟然我的没报错

恩恩。不过这个分号如果要的话,这个宏定义会不起作用哦。你的中断函数中TAIV这个常变量不定义报错吗

回复

使用道具 举报

2243

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-8-9 08:16 | 显示全部楼层
huaiqiao 发表于 2015-8-8 18:42
他如果这样做,这个宏定义是不起作用的哦。O(∩_∩)O哈哈~

不会啊,没任何问题

回复

使用道具 举报

1167

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

荣誉会员勋章

发表于 2015-9-12 16:09 | 显示全部楼层
5楼正解。
void data_to_buf(long data1)
data_to_buf是一个函数名,所以不能作为数组的偏移量参数。
P4OUT=tab[data_to_buf];
5楼的做法是将data_to_buf作为一个有返回值的函数,将其返回值(数)作为数组的偏移量参数。

另外,你这一句不会报错吗?
diff_buf=data1%10;
diff_buf同样是数组名,是一个指针来的。右边的内容是数,将一个数赋值进一个指针里,得到的结果是不可预计的……

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-5 20:58 , Processed in 0.313025 second(s), 31 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表