找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1250|回复: 6
收起左侧

单片机+DS18B20 C语言初始程序 return的小小疑惑

[复制链接]
ID:1093740 发表于 2023-9-23 13:42 | 显示全部楼层 |阅读模式
/*******************************************************************************
* 函 数 名         : Ds18b20Init
* 函数功能                   : 初始化
* 输    入         : 无
* 输    出         : 初始化成功返回1,失败返回0
*******************************************************************************/

uchar Ds18b20Init()
{
        uchar i;
        DSPORT = 0;                         //将总线拉低480us~960us
        i = 70;        
        while(i--);//延时642us
        DSPORT = 1;                        //然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低
        i = 0;
        while(DSPORT)        //等待DS18B20拉低总线
        {
                Delay1ms(1);
                i++;
                if(i>5)//等待>5MS
                {
                        return 0;//初始化失败
                }
        
        }
        return 1;//初始化成功
}




不太理解,后续读写都是直接调用此函数,通讯是否成功,这个return 有啥意义么。

回复

使用道具 举报

ID:883242 发表于 2023-9-23 14:08 | 显示全部楼层
如果引用这个函数的地方没有用到返回值,那么返回值就是多余的,褒义的说是冗余,也可以说是个feature。

另外,c语言返回值大家默认的是成功返回0,失败返回一个负数,越靠近-1说明失败的性质越严重。
回复

使用道具 举报

ID:1093740 发表于 2023-9-23 14:37 | 显示全部楼层
谢谢回复,就是感觉有他没他,程序还是继续运行下去,假如通讯失败, 就是不会有数据传送过来。 然后再次回来初始化, 成功了就有数据。 如果需要自己可以再根据这个0, 1 加点别的东西进去。
回复

使用道具 举报

ID:883242 发表于 2023-9-23 14:48 | 显示全部楼层
weilemin123 发表于 2023-9-23 14:37
谢谢回复,就是感觉有他没他,程序还是继续运行下去,假如通讯失败, 就是不会有数据传送过来。 然后再次回 ...

那你查一下代码里面用到了没有,如果没用过,你想增加功能也是完全合理的。
回复

使用道具 举报

ID:731755 发表于 2023-9-23 14:49 | 显示全部楼层
没有它,也是一样工作,他的目的就是假如,我找你有事,先敲敲门,看看你在不在家。
回复

使用道具 举报

ID:1093740 发表于 2023-9-23 15:11 | 显示全部楼层
额,学单片机呢。 感觉这普中的还要留点小问题给你。   DS18B20 传回来的数据是两个字节的数据,高5位0,1 是温度的正负,  普中直接就把传输回来的数据  int  temp  
 if (temp <0); 是晓得开发板不会有负温,才这么写么额。我的锅,不好意思,自己不懂, 原来int  和unsigned  int 是有区别的。
回复

使用道具 举报

ID:1093740 发表于 2023-9-25 08:04 | 显示全部楼层
Hephaestus 发表于 2023-9-23 14:48
那你查一下代码里面用到了没有,如果没用过,你想增加功能也是完全合理的。

大佬,就是return,会返回到主程序,然后又从最开始执行?还是返回这个子程序之前,继续执行此子程序
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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