找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1755|回復(fù): 10
收起左側(cè)

單片機(jī)代碼報(bào)錯(cuò) 求教大神

[復(fù)制鏈接]
ID:1081825 發(fā)表于 2023-6-3 17:45 | 顯示全部樓層 |閱讀模式
請(qǐng)求大神們解答一下下面的報(bào)錯(cuò)是怎么回事,我是初學(xué)者,所以一直不知道怎么調(diào)試,謝謝大神們
#include<reg52.h>
void Seg7_Display(u16 val,u8 Dec_Hex);
bit DS18B20_Reset();
void DS18B20_WriteData(u8 dat);
u8 DS18B20_ReadData();
sbit DSI18B20_DQ = P3^7;
u8 tempL;
u16 tempH;
u16 temp;
void main()
{
        while(1)
        {
                DS18B20_Reset();
                DS18B20_WriteData(0xcc);  //跳過(guò)rom檢測(cè)
                DS18B20_WriteData(0x44);         //啟動(dòng)溫度轉(zhuǎn)換
                DS18B20_Reset();
                DS18B20_WriteData(0xcc);  //跳過(guò)rom檢測(cè)
                DS18B20_WriteData(0xBE);         //讀暫存器命令
                tempL = DS18B20_ReadData(); //讀溫度低位
                tempH = DS18B20_ReadData();        //讀溫度高位
                tempH = (temp<<8) | tempL;
                if((tempH&0xF800) == 0xF800) //如果為負(fù)值按位取反加1
                        tempH =        ~tempH + 1;
                temp = tempH * 0.0625 *10;
                Seg7_Display(temp,10);               
        }
}

bit DS18B20_Reset()
{
        bit flag;
        u8 i;
        DS18B20_DQ = 0;
        for(i=240;i>0;i--);        //每執(zhí)行一次,是倆個(gè)機(jī)械周期 240x2=480us
        DS18B20_DQ = i;
        for(i=30;i>0;i--);  //延時(shí)約80us
        flag = DS18B20_DQ;
        for(i=200;i>0;i--); //延時(shí)約400us
        return flag;
}

void DS18B20_WriteData(u8 dat)
{
        u8 i,j;
        for (j=0;j<8;j++);
        {
                DS18B20_DQ = 0;
                for(i=2;i>0;i--);
                DS18B20_DQ = dat & 0x01;  //取出最低位
                for(i=30;i>0;i--);                  //延時(shí)約60us
                DS18B20_DQ = 1;                          //釋放總線
                dat = dat >> 1;
        }
}

u8 DS18B20_ReadData()
{
        u8 i,j,rdata;
        for(j=0;j<8;j++);
        {
                rdata >>=1;
                 DS18B20_DQ = 0;
                for(i=2;i>0;i--);
                DS18B20_DQ = 1;
                for(i=3;i>0;i--);                   //延時(shí)
                if(DS18B20_DQ==1)
                        rdat=rdata | 0x80;
                for(i=30;i>0;i--);                  //延時(shí)約60us
                DS18B20_DQ = 1;                          //釋放總線
        }
        return rdata;
}


1.png
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2023-6-3 19:43 | 顯示全部樓層
u16,u8沒(méi)有定義,前面應(yīng)加上
#define u16 unsigned int
#define u8 unsigned char
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2023-6-3 19:51 | 顯示全部樓層
sbit DSI18B20_DQ = P3^7;多了一個(gè)I。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-6-3 19:53 | 顯示全部樓層
xuyaqi 發(fā)表于 2023-6-3 19:43
u16,u8沒(méi)有定義,前面應(yīng)加上
#define u16 unsigned int
#define u8 unsigned char

#define沒(méi)有typedef正規(guī)。
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2023-6-3 19:54 | 顯示全部樓層
rdat=rdata | 0x80;rdat應(yīng)該是rdata。
回復(fù)

使用道具 舉報(bào)

ID:116103 發(fā)表于 2023-6-3 20:28 | 顯示全部樓層
語(yǔ)法錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-6-4 10:44 | 顯示全部樓層
除了樓上指出的問(wèn)題外還缺少void Seg7_Display(u16 val,u8 Dec_Hex)函數(shù)體。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2023-6-5 11:10 | 顯示全部樓層
將英文譯一下,就知道了。
回復(fù)

使用道具 舉報(bào)

ID:1081825 發(fā)表于 2023-6-5 14:24 | 顯示全部樓層
xuyaqi 發(fā)表于 2023-6-3 19:43
u16,u8沒(méi)有定義,前面應(yīng)加上
#define u16 unsigned int
#define u8 unsigned char

謝謝大神指導(dǎo)
回復(fù)

使用道具 舉報(bào)

ID:1081825 發(fā)表于 2023-6-5 14:24 | 顯示全部樓層
xuyaqi 發(fā)表于 2023-6-3 19:51
sbit DSI18B20_DQ = P3^7;多了一個(gè)I。

謝謝大神指導(dǎo)
回復(fù)

使用道具 舉報(bào)

ID:1081825 發(fā)表于 2023-6-5 14:25 | 顯示全部樓層
xuyaqi 發(fā)表于 2023-6-3 19:54
rdat=rdata | 0x80;rdat應(yīng)該是rdata。

謝謝大神指導(dǎo)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表