玩命搏击 2022-06-03 19:36 采纳率: 66.7%
浏览 40
已结题

TM1650 代码找错

问题遇到的现象和发生背景

TM1650 移植到51上面的错误提示

问题相关代码,请勿粘贴截图

unsigned char TM1650_Wait_Ack(void) //等待应答信号
{
unsigned char ucErrTime = 0; //定义一个字节变量ucErrTime
SDA_IN(); //配置数据引脚为输入模式
TM1650_SDA_H; Delay_us(1); //数据信号置高,延迟1us
TM1650_SCL_H; Delay_us(1); //时钟信号为高,延迟1us
while(READ_SDA) //读取”SDA8脚状态“如果为真
{
ucErrTime++; // ucErrTime变量自加1
if(ucErrTime>250) // 等待SDA8脚变低, 返回1
{
TM1650_Stop(); //结束信号函数
return 1; //返回1
}
}
TM1650_SCL_L; //如果”SDA8脚状态“为假,时钟拉低
return 0; //返回0
}

运行结果及报错内容

SOURCE\tm1650.c(81): error C141: syntax error near ';', expected ','
SOURCE\tm1650.c(81): error C141: syntax error near ')', expected '__asm'

我的解答思路和尝试过的方法

编译一直在“while(READ_SDA) ”这一行提示两个错误, 将 READ_SDA替换成 1, 就不显示告警了, READ_SDA 的出处是宏定义:#define READ_SDA P1^4;

我想要达到的结果

找不到问题在哪里,帮忙找到问题,去除告警。

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-06-04 15:35
    关注

    #define READ_SDA P1^4;
    后面那个分号去掉
    #define就是定义一个符号去替换,会连分号一起加入替换的,当然就报错了
    其实有个更好的方式是用sbit代替#define语句
    sbit READ_SDA = P1^4;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 赞助了问题酬金10元 6月4日
  • 创建了问题 6月3日

悬赏问题

  • ¥20 找驱动QTR2774-SU-IBM版本驱动
  • ¥15 NeRF的代码复现以及人工智能入门
  • ¥15 centos如何做一个可以让ikuai连接的openvpn
  • ¥15 Protege 中的Entities下面的界面删除了如何复原
  • ¥15 scrapy爬虫求帮
  • ¥15 imageEnView绘图问题
  • ¥15 关于#python#的问题:您好可以加您一下联系方式吗,在复现的时候确实有点问题难以解决
  • ¥15 联想电脑重装系统时无法发现硬盘
  • ¥15 MATLAB与UR10e实体机械臂建立通讯
  • ¥15 c++题需要快一点不用opencv