找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2298|回复: 2
打印 上一主题 下一主题
收起左侧

5.C(9): error C129: missing ';' before 'DS18B20_DATA'大佬们 这个怎么修改

[复制链接]
跳转到指定楼层
楼主
#include <reg51.h>#include <intrins.h>
//****************************头文件声明***************************
typedef unsigned char uint8;
typedef unsigned int uint16;
//****************************I/O口线声明****************************
#define SEG_CODE_PORT P0                                //数码管段选
#define BIT_CODE_PORT P2                                //数码管位选
Sbit DS18B20_DATA=P3^7;                                 //18B20数据口
sbit BUZZ=P1^0;                                         //蜂鸣器定义
sbit key1=P3^2;                                         // 按键定义      
sbit key2=P3^4;
//************************常量数组(段码表)声明*********************
uint8 code SegCodeTable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//****************************全局变量声明***************************
int t=0x0248;                                            //定义报警温度
int Temperature;                                        //
int a= 0x0180;                                           //报警温度
//****************************函数原型声明**************************
void DS18B20Init();
void DS18B20BitWrite(bit Bit);
bit DS18B20BitRead();
void DS18B20ByteWrite(uint8 Byte);
uint8 DS18B20ByteRead();
void GetTemperature();
void DispTemperature();
void Delay(uint16 ms);
void AlarmCheck()
{
uint8 i;
if(Temperature>a ) //温度大于a蜂鸣器报警
{
for(i=0;i<50;i++)
{
BUZZ=~BUZZ ;
Delay(1); //延时50ms
}
}
}
void key()
{
         uint8 key1,key2;
          Delay (5);
          if( key1 ==0);
                        {Delay(5);}    //消抖
         if(key1==0)
         {t=t+0x0008;}         //温度加0.5
        while(!key1);
                                Delay(5);
          if (key2==0)
        {
                        Delay(5);}        //消抖
                if (key2==0)
                {t=t-0x0008;}       //温度减0.5
        while (!kkey2)£»
}
       
//******************************主函数***************************
void main()
{
while(1)
{
GetTemperature() ;  
DispTemperature() ;
        key();
AlarmCheck();       
}
}
//*************************DS18B20初始化函数*******************
void DS18B20Init()
{
uint16 i;
while(1)
{
DS18B20_DATA=0;
i=640;
while(--i); //延时800US
DS18B20_DATA=1;
i=56;
while(--i); //延时70us
if(DS18B20_DATA==1) continue; //无响应则重发复位脉冲
i=224;
while(--i); //??280us
if(DS18B20_DATA==1) break; //复位成功}
i=160;
while(--i);//??200us
}
//***********************DS18B20位写函数************************
void DS18B20BitWrite(bit Bit)
{
uint16 i;
DS18B20_DATA=0;
i=4;
while(--i); //延时5us
DS18B20_DATA=Bit; //发送一位数到DS18B20
i=48;
while(--i); //延时60us
DS18B20_DATA=1;
}
//**********************DS18B20位读操作函数*************************
bit DS18B20BitRead()
{
bit temp;
uint16 i;
DS18B20_DATA=0;
i=4;
while(--i); //延时5us
DS18B20_DATA=1;
i=4;
while(--i); //延时5us
temp=DS18B20_DATA; //读来自DS18B20的一位数
i=48;
while(--i); //延时60us
return temp;
}
//**********************DS18B20字节写操作函数************************
void DS18B20ByteWrite(uint8 Byte)
{
uint8 i;
for(i=0;i<8;i++) //一共发送8位
{
if(Byte&0x01==1  ) //发送最低为
DS18B20BitWrite(1); //发1
else
DS18B20BitWrite(0); //发0

Byte>>=1;    //字节移位
}
}
//**********************DS18B20字节读操作函数************************
uint8 DS18B20ByteRead()
{
uint8 i,temp=0;
for(i=0;i<8;i++) //一共读8位
{
temp>>=1; //字节变量右移
if(DS18B20BitRead()==1) //读取1位数据并存入临时变量temp中
temp|=0x80; //temp最高位置1
}
return temp; //返回读到的8位数}
//*****************************温度采集函数**************************
void GetTemperature()
{
uint8 Buff[2],i;
DS18B20Init(); //DS18B20初始化
DS18B20ByteWrite(0xCC); //跳过ROM匹配(因为只有一个DS18B20)
DS18B20ByteWrite(0x44) ;//启动温度转换
for(i=0;i<250;i++)
DispTemperature(); //等待750ms,期间不断刷新LED显示
DS18B20Init(); //DS18B20初始化
DS18B20ByteWrite(0xCC); //跳过ROM匹配
DS18B20ByteWrite(0xbe);  // 准备读转换结果
Buff[0]=DS18B20ByteRead(); //读温度值低字节
Buff[1]=DS18B20ByteRead(); //读温度值的高字节
Temperature= (Buff[1]<<8)+Buff[0];    //拼成16位温度值
}
//*****************************温度显示函数************************
void DispTemperature()
{
uint8 temp1,temp2;
key();
        temp1=(t>>4)/10; //显示十位
if(temp1==0)
SEG_CODE_PORT=0xFF ; //十位为0则隐去
else
SEG_CODE_PORT=SegCodeTable[temp1];
BIT_CODE_PORT=0xF0;                                   //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;

SEG_CODE_PORT=SegCodeTable[(t>>4)%10]&0x7F; //Ï显示个位
BIT_CODE_PORT=0xF1;                              //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;
SEG_CODE_PORT=SegCodeTable[(t&0x0F)*10/16]; //显示十分位
BIT_CODE_PORT=0xF2; //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;
temp2=(Temperature>>4)/10; //显示十位
if(temp2==0)
SEG_CODE_PORT= 0xFF;//十位为0则隐去
else
SEG_CODE_PORT=SegCodeTable[temp2];
BIT_CODE_PORT=0xF5; //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;
SEG_CODE_PORT=SegCodeTable[(Temperature>>4)%10]&0x7F; //Ï显示个位
BIT_CODE_PORT=0xF6; //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;
SEG_CODE_PORT=SegCodeTable[(Temperature&0x0F)*10/16]; //显示十分位
BIT_CODE_PORT=0xF7; //选择显示位置
Delay(1);
BIT_CODE_PORT=0xFF;
}
//*****************************软件延时函数************************
void Delay(uint16 ms)
{
uint16 i;
do{
i=790;
while(--i); //延时1ms(STC12C5A60S2,11.0592MHz,代码5级优化)
} while(--ms);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:452950 发表于 2020-6-1 20:46 | 只看该作者
Sbit DS18B20_DATA=P3^7;
开头小写
sbit DS18B20_DATA=P3^7;
回复

使用道具 举报

板凳
ID:731294 发表于 2020-6-1 21:35 | 只看该作者
缺少分号,你给他加上不就行了。双击错误命令行查看错误位置,然后在错误位置修改
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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