打印
[C语言]

求教AD7367的c语言程序问题

[复制链接]
2068|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小小因才|  楼主 | 2013-7-31 17:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小小因才 于 2013-7-31 18:09 编辑

我在之前使用AD7367的时候它的驱动是这么写得:
  data[0] = data[0] << 1;
  data[0] += ad_douta;
ad_douta是连接飞思卡尔单片机的IO口,用的codewarrior做编译器,程序运行起来没问题。
之后我在另一款单片机c8051f系列上也使用这款AD,直接把ad转换的代码移植过来,用的是keil做编译器,就会出问题。报错如下:“+=” bad operand type。
不明白什么原因,求帮提示下,谢谢!


相关帖子

沙发
acgean| | 2013-7-31 20:43 | 只看该作者
+= 运算符不应该出问题.
不知道你的 ad_douta 怎么定义的

使用特权

评论回复
板凳
568581185| | 2013-7-31 21:09 | 只看该作者
看下是不是数据类型不匹配

使用特权

评论回复
地板
小小因才|  楼主 | 2013-7-31 23:16 | 只看该作者
acgean 发表于 2013-7-31 20:43
+= 运算符不应该出问题.
不知道你的 ad_douta 怎么定义的

ad_douta,位定义的,sbit p1^1=ad_douta.

使用特权

评论回复
5
小小因才|  楼主 | 2013-7-31 23:20 | 只看该作者
568581185 发表于 2013-7-31 21:09
看下是不是数据类型不匹配

我也知道可能是数据类型的问题。不知道该怎么写。
ad_douta位定义的,int data[2],data[0]的格式。

使用特权

评论回复
6
ayb_ice| | 2013-8-1 08:06 | 只看该作者
if(ad_douta){
    data[0]++;
}

使用特权

评论回复
7
568581185| | 2013-8-1 09:10 | 只看该作者
小小因才 发表于 2013-7-31 23:20
我也知道可能是数据类型的问题。不知道该怎么写。
ad_douta位定义的,int data[2],data[0]的格式。 ...

就用条件判断,判断ad_douta是否为1,为1,则变量data[0]++;为0不变

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:c8051f交流

3

主题

38

帖子

0

粉丝