对于模块化编程属于初学,一直无法理清思路。今天用模块化思想编写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 '/'
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
话说论坛发帖不是有代码格式的么。这么看可真费劲。
另
/********开始获取温度并转换*******//
{
init_ds();
delay(1);
tempwritebyte(0xcc); //写跳过读ROM指令
tempwritebyte(0x44); //写温度转换指令
}
这是什么?
一周热门 更多>