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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)編譯錯(cuò)誤 大佬求幫助 'hdata'

[復(fù)制鏈接]
ID:927279 發(fā)表于 2021-5-26 23:20 | 顯示全部樓層 |閱讀模式
哪錯(cuò)了啊 小白不會(huì)啊 求大佬幫幫
捕獲.PNG
回復(fù)

使用道具 舉報(bào)

ID:554500 發(fā)表于 2021-5-27 08:04 | 顯示全部樓層
這上面的3個(gè)函數(shù)名后面都多了一個(gè)分號(hào);
最下面的函數(shù)還少了一個(gè) {
這種低級(jí)錯(cuò)誤都能犯,這不是大意都能說(shuō)得過(guò)去的。
回復(fù)

使用道具 舉報(bào)

ID:554500 發(fā)表于 2021-5-27 08:12 | 顯示全部樓層
個(gè)人建議:
剛開(kāi)始學(xué)寫代碼的時(shí)候,寫一個(gè)函數(shù)編譯一下。
有問(wèn)題及時(shí)查找。寫一個(gè)函數(shù),先寫框架,再寫內(nèi)容。如:
void key()
{
   //內(nèi)容
}

要養(yǎng)成良好的編程習(xí)慣。
回復(fù)

使用道具 舉報(bào)

ID:927279 發(fā)表于 2021-5-27 08:15 | 顯示全部樓層
18701931930 發(fā)表于 2021-5-27 08:04
這上面的3個(gè)函數(shù)名后面都多了一個(gè)分號(hào);
最下面的函數(shù)還少了一個(gè) {
這種低級(jí)錯(cuò)誤都能犯,這不是大意都能 ...

這個(gè)我知道。我本來(lái)沒(méi)有分號(hào) 但是報(bào)錯(cuò)40個(gè)。加上之后就剩三個(gè)了
回復(fù)

使用道具 舉報(bào)

ID:554500 發(fā)表于 2021-5-27 09:10 | 顯示全部樓層
garrettzls 發(fā)表于 2021-5-27 08:15
這個(gè)我知道。我本來(lái)沒(méi)有分號(hào) 但是報(bào)錯(cuò)40個(gè)。加上之后就剩三個(gè)了

代碼用文本的方式貼出來(lái)看看
回復(fù)

使用道具 舉報(bào)

ID:927279 發(fā)表于 2021-5-27 10:36 | 顯示全部樓層
18701931930 發(fā)表于 2021-5-27 09:10
代碼用文本的方式貼出來(lái)看看

#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
sbit Trig=P2^0;            //???
sbit Echo=P2^1;          //???
sbit pwm =P0^1 ;          //PWM????
sbit jia =P1^2;           //????????IO?
sbit jan =P1^1;           //????????IO?
unsigned char count;
unsigned char jd;         //????
unsigned char T0RH=0;
unsigned char T0RL=0;
void Time0_Init()          //??????
{
TMOD = 0x01;           //???0?????1
IE   = 0x82;
TH0  = 0xfe;
TL0  = 0x33;     //11.0592MZ??,0.5ms
    TR0=1;                 //?????
}//????????
void time_init()
{
        EA=1;
        TMOD=0x11;
        TH0 = 0;
        TL0 = 0;
} //?????????
void Delay_us(unsigned char t);
{
while(--t);
}

void timer0()interrupt 1;
{
TH0 = 0;
TL0 = 0;
} //???? ????? ???? ?????? ????
void chaoshenbo_kongzhi();  //???????
        unsigned int time,distance;
        Trig=0;
        Echo=0;
        jd=3;
        time_init();
        while(1)
        {
                Trig=1;
                Delay_us(5);
                Trig=0;
                while(Echo==0);
                TR0=1;
                while(Echo);
                TR0=0;
                time=TH0*256+TL0;
                distance=(int)(time*0.017);                           //???? ???cm
                TH0=0;
                TL0=0;
                if(distance<100)                                        //??????100cm ????
                {
                        last=distance;
                        jd=4;
                        Delay_us(10);
                        if(distance<last)
                        {
                        jd=1;
                        }
                        if(distance>last)
                        {
                        jd=5;
                        }
                        }
                        if(distance>100)
                        jd=3;
                }
               
void main()
{
jd=3;
count=0;
chaoshenbo_kongzhi();
        }
回復(fù)

使用道具 舉報(bào)

ID:917199 發(fā)表于 2021-5-27 13:08 | 顯示全部樓層
void chaoshenbo_kongzhi();  //???????
        unsigned int time,distance;
看看這里多了什么又少了什么,難怪1930說(shuō)你
回復(fù)

使用道具 舉報(bào)

ID:554500 發(fā)表于 2021-5-27 13:24 | 顯示全部樓層
3個(gè)函數(shù)名后面多分號(hào);
void Delay_us(unsigned char t);
void timer0()interrupt 1;
void chaoshenbo_kongzhi();

其中 void chaoshenbo_kongzhi()   又少了一對(duì)大括號(hào) { }
變量last沒(méi)有定義

回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2021-5-27 15:04 | 顯示全部樓層
給你改了一下試試。

  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <intrins.h>
  4. sbit Trig=P2^0;            //???
  5. sbit Echo=P2^1;          //???
  6. sbit pwm =P0^1;          //PWM????
  7. sbit jia =P1^2;           //????????IO?
  8. sbit jan =P1^1;           //????????IO?
  9. unsigned char count;
  10. unsigned char jd;         //????
  11. unsigned char T0RH=0;
  12. unsigned char T0RL=0;
  13. void Time0_Init()          //??????
  14. {
  15.         TMOD = 0x01;           //???0?????1
  16.         IE   = 0x82;
  17.         TH0  = 0xfe;
  18.         TL0  = 0x33;     //11.0592MZ??,0.5ms
  19.         TR0=1;                 //?????
  20. }//????????
  21. void time_init()
  22. {
  23.         EA=1;
  24.         TMOD=0x11;
  25.         TH0 = 0;
  26.         TL0 = 0;
  27. } //?????????
  28. void Delay_us(unsigned char t)
  29. {
  30.         while(--t);
  31. }

  32. void timer0() interrupt 1
  33. {
  34.         TH0 = 0;
  35.         TL0 = 0;
  36. } //???? ????? ???? ?????? ????
  37. void chaoshenbo_kongzhi()  //???????
  38. {
  39.         unsigned int time, distance, last;
  40.         Trig=0;
  41.         Echo=0;
  42.         jd=3;
  43.         time_init();
  44.         while(1)
  45.         {
  46.                 Trig=1;
  47.                 Delay_us(5);
  48.                 Trig=0;
  49.                 while(Echo==0);
  50.                 TR0=1;
  51.                 while(Echo);
  52.                 TR0=0;
  53.                 time=TH0*256+TL0;
  54.                 distance=(int)(time*0.017);                           //???? ???cm
  55.                 TH0=0;
  56.                 TL0=0;
  57.                 if(distance<100)                                        //??????100cm ????
  58.                 {
  59.                         last=distance;
  60.                         jd=4;
  61.                         Delay_us(10);
  62.                         if(distance<last)
  63.                         {
  64.                                 jd=1;
  65.                         }
  66.                         if(distance>last)
  67.                         {
  68.                                 jd=5;
  69.                         }
  70.                 }
  71.                 if(distance>100)
  72.                 jd=3;
  73.         }
  74. }
  75. void main()
  76. {
  77.         jd=3;
  78.         count=0;
  79.         chaoshenbo_kongzhi();
  80. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:927279 發(fā)表于 2021-5-27 17:35 | 顯示全部樓層
18701931930 發(fā)表于 2021-5-27 13:24
3個(gè)函數(shù)名后面多分號(hào);
void Delay_us(unsigned char t);
void timer0()interrupt 1;

去了分號(hào)直接40多個(gè)錯(cuò) 這是為啥啊
回復(fù)

使用道具 舉報(bào)

ID:927279 發(fā)表于 2021-5-27 17:36 | 顯示全部樓層
解決了  謝謝大佬們
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-5-27 18:19 | 顯示全部樓層
garrettzls 發(fā)表于 2021-5-27 17:35
去了分號(hào)直接40多個(gè)錯(cuò) 這是為啥啊

樓主這個(gè)程序不是簡(jiǎn)單的多幾個(gè)分號(hào)錯(cuò)誤,其實(shí)是幾乎通篇錯(cuò)誤。建議在論壇搜搜別人的程序參考。先照貓畫虎練練手。
回復(fù)

使用道具 舉報(bào)

ID:731755 發(fā)表于 2021-5-27 18:41 | 顯示全部樓層
garrettzls 發(fā)表于 2021-5-27 08:15
這個(gè)我知道。我本來(lái)沒(méi)有分號(hào) 但是報(bào)錯(cuò)40個(gè)。加上之后就剩三個(gè)了

加上分號(hào),就不對(duì),分號(hào)的意思一句話說(shuō)完了,如果加上分號(hào),這里是無(wú)法延時(shí)的,編譯錯(cuò)誤,是很容易出現(xiàn)的,樓主需要對(duì)照別人的程序或者書本一項(xiàng)項(xiàng)檢查那里錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

ID:849913 發(fā)表于 2021-5-28 12:43 | 顯示全部樓層
#在void timer0()interrupt 1; 去掉1后面的分號(hào)
回復(fù)

使用道具 舉報(bào)

ID:849913 發(fā)表于 2021-5-28 12:44 | 顯示全部樓層
void timer0()interrupt 1; 去掉1后面的分號(hào)
回復(fù)

使用道具 舉報(bào)

ID:927279 發(fā)表于 2021-6-1 20:39 | 顯示全部樓層
angmall 發(fā)表于 2021-5-27 15:04
給你改了一下試試。

謝謝大佬
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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