![]() |
angmall 發表于 2021-5-27 15:04 謝謝大佬 |
void timer0()interrupt 1; 去掉1后面的分號 |
#在void timer0()interrupt 1; 去掉1后面的分號 |
garrettzls 發表于 2021-5-27 08:15 加上分號,就不對,分號的意思一句話說完了,如果加上分號,這里是無法延時的,編譯錯誤,是很容易出現的,樓主需要對照別人的程序或者書本一項項檢查那里錯了。 |
garrettzls 發表于 2021-5-27 17:35 樓主這個程序不是簡單的多幾個分號錯誤,其實是幾乎通篇錯誤。建議在論壇搜搜別人的程序參考。先照貓畫虎練練手。 |
解決了 謝謝大佬們 |
18701931930 發表于 2021-5-27 13:24 去了分號直接40多個錯 這是為啥啊 |
給你改了一下試試。
|
3個函數名后面多分號; void Delay_us(unsigned char t); void timer0()interrupt 1; void chaoshenbo_kongzhi(); 其中 void chaoshenbo_kongzhi() 又少了一對大括號 { } 變量last沒有定義 |
void chaoshenbo_kongzhi(); //??????? unsigned int time,distance; 看看這里多了什么又少了什么,難怪1930說你 |
18701931930 發表于 2021-5-27 09:10 #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(); } |
garrettzls 發表于 2021-5-27 08:15 代碼用文本的方式貼出來看看 |
18701931930 發表于 2021-5-27 08:04 這個我知道。我本來沒有分號 但是報錯40個。加上之后就剩三個了 |
個人建議: 剛開始學寫代碼的時候,寫一個函數編譯一下。 有問題及時查找。寫一個函數,先寫框架,再寫內容。如: void key() { //內容 } 要養成良好的編程習慣。 |
這上面的3個函數名后面都多了一個分號; 最下面的函數還少了一個 { 這種低級錯誤都能犯,這不是大意都能說得過去的。 ![]() ![]() |