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

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日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据