3652|9

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430F249程序问题 [复制链接]

#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
求助各位大神,实在是不知怎么改

最新回复

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同样是数组名,是一个指针来的。右边的内容是数,将一个数赋值进一个指针里,得到的结果是不可预计的……  详情 回复 发表于 2015-9-12 16:09
 
点赞 关注

回复
举报

4177

帖子

9

TA的资源

五彩晶圆(高级)

沙发
 
我想请问下“#define NUM 16;”这个有分号的,在IAR中不会报错吗?宏定义我记得是没有分好的吧

点评

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

回复

4

帖子

0

TA的资源

一粒金砂(初级)

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

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

点评

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

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

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

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

点评

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

回复

36

帖子

0

TA的资源

一粒金砂(中级)

5
 
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)];
这样是可以的。
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

6
 
额,我不知道你看懂了没有。expression must be a pointer to a complete object type就是说你的表达必须指向确切的对象,这种意思。我英文不太好。如果,还是不明白可以私聊我……
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

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

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

点评

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

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

8
 
步枪 发表于 2015-8-8 13:24
对,这个地方忽略了,竟然我的没报错

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

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

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

不会啊,没任何问题
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

10
 
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同样是数组名,是一个指针来的。右边的内容是数,将一个数赋值进一个指针里,得到的结果是不可预计的……
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表