求帮助,关于ds18b20模块化编程遇到问题

2020-01-22 12:09发布

对于模块化编程属于初学,一直无法理清思路。今天用模块化思想编写ds18b20的程序,发现报错了,可悲的是完全不知道自己哪里出了问题,求大神们帮忙理清一下思路

----------------------------------------------------------------------------------------主函数

#include <reg52.h>
#include "delay.h"
#include "ds18b20.h"


void main(void)
{
        while(1)
        {
                get_temp();
        }
}




----------------------------------------------------------------------------------------ds18b20的C文件ds18b20.c

#include <reg52.h>
#include "delay.h"
#include "ds18b20.h"
sbit ds=P2^2;
uint temp;
float f_temp;

/*********ds18b20的初始化*********//
void init_ds()
{
        uint i;
        ds=0;
        i=103;
        while(i>0)
                i--;
        ds=1;
        i=4;
        while(i>0)
                i--;
}


/********读1位数据函数*************//
bit tempreadbit(void)
{
        uint i;
        bit dat;
        ds=0;
        i++;   //起延时作用
        ds=1;
        i++;i++;
        dat=ds;
        i=8;
        while(i>0)
                i--;
        return(dat);
}


/*******读一个字节数据函数***********//
uchar tempread(void)
{
        uchar i,j,dat;
        dat=0;
        for(i=1;i<=8;i++)
        {
                j=tempreadbit();
                dat=(j<<7)|(dat>>1);
        }
        return(dat);
}


/*******写一个字节数据函数************//
void tempwritebyte(uchar dat)
{
        uint i;
        uchar j;
        bit testb;
        for(j=1;j<=8;j++)
        {
                testb=dat&0x01;
                dat=dat>>1;
                if(testb)
                {
                        ds=0;
                        i++;i++;
                        ds=1;
                        i=8;
                        while(i>0)
                                i--;
                }
                else
                {
                        ds=0;
                        i=8;
                        while(i>0)
                                i--;
                        ds=1;
                        i++;i++;
                }
        }
}


/********开始获取温度并转换*******//
{
        init_ds();
        delay(1);
        tempwritebyte(0xcc);  //写跳过读ROM指令
        tempwritebyte(0x44);        //写温度转换指令
}


/********读取寄存器中存储的温度数据***//
        uint get_temp()
{
        uchar a,b;
        init_ds();
        delay(1);
        tempwritebyte(0xcc);
        tempwritebyte(0xbe);
        a=tempread();
        b=tempread();
        temp=b;
        temp<<=8;
        temp=temp|a;
        f_temp=temp*0.0625;
        temp=f_temp*10+0.5;
        f_temp=f_temp+0.05;
        return temp;
}



----------------------------------------------------------------------------------------ds18b20的H文件ds18b20.h---------------------------------

#ifndef _DS18B20_H__
#define _Ds18B20_H__
extern  get_temp();
#endif


----------------------------------------------------------------------------------------下面是定义函数和延时函数一起的,原谅我只会define-----------------------------------------------------------------------------------------

C文件

#include <reg52.h>
#include "delay.h"
//#define uchar unsigned char
//#define uint unsigned int
void delay(uint z)//延时函数
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}



H文件

#ifndef _DELAY_H__
#define _DELAY_H__
#define uchar unsigned char
#define uint unsigned int
extern delay(uint);
#endif

----------------------------------------------------------------------------------------下面是报的错
SRCDS18B20.C(8): error C141: syntax error near '/'
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
siyeb
1楼-- · 2020-01-25 01:42
extern  uint get_temp();

话说论坛发帖不是有代码格式的么。这么看可真费劲。



/********开始获取温度并转换*******//
{
        init_ds();
        delay(1);
        tempwritebyte(0xcc);  //写跳过读ROM指令
        tempwritebyte(0x44);        //写温度转换指令
}

这是什么?

一周热门 更多>